OpenNIT

Quelltext des aktuellen Standes

Fassung 1.1.1

217_dns_zone_changes.sql

2 KB
-- DNS: Aenderungsverlauf je Zone.
--
-- Jeder Import ersetzt den Record-Satz einer Zone vollstaendig. Was sich dabei
-- geaendert hat, war danach nicht mehr erkennbar - fuer eine Dokumentation mit
-- revisionssicherem Anspruch die auffaelligste Luecke des Moduls. Diese Tabelle
-- haelt je Import fest, was hinzugekommen, geaendert oder verschwunden ist.
--
-- Bewusst getrennt vom Audit-Log: ein Import kann Tausende Einzelaenderungen
-- umfassen, die als Bestandsdaten der Zone gehoeren und mit ihr altern.

CREATE TABLE IF NOT EXISTS `dns_zone_changes` (
    `id`          BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `zone_id`     BIGINT UNSIGNED NOT NULL,
    `changed_at`  DATETIME     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `change_type` ENUM('added','changed','removed') NOT NULL,
    `record_name` VARCHAR(255) NOT NULL DEFAULT '@',
    `record_type` VARCHAR(16)  NOT NULL DEFAULT 'A',
    `old_data`    TEXT         NULL,
    `new_data`    TEXT         NULL,
    `old_ttl`     INT UNSIGNED NULL,
    `new_ttl`     INT UNSIGNED NULL,
    CONSTRAINT `fk_dns_changes_zone` FOREIGN KEY (`zone_id`)
        REFERENCES `dns_zones` (`id`) ON DELETE CASCADE,
    INDEX `idx_dnschg_zone_time` (`zone_id`, `changed_at`),
    INDEX `idx_dnschg_time` (`changed_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Wie lange der Verlauf aufbewahrt wird. 0 = unbegrenzt.
INSERT IGNORE INTO `system_settings` (`key`, `value`)
VALUES ('dns_history_days', '180');

-- Herkunft der Zone: bisher stand dort immer 'agent'. Mit weiteren Quellen
-- neben Windows-DNS wird daraus eine echte Angabe.
ALTER TABLE `dns_zones`
    MODIFY COLUMN `source` VARCHAR(32) NOT NULL DEFAULT 'agent'
        COMMENT 'windows | bind | powerdns | agent (unbekannt)';