Files
2024-10-14 00:08:40 +02:00

85 lines
2.7 KiB
Perl

#!/usr/bin/perl
use strict;
# alle domains einlesen
print "\nFolgende Domains werden bearbeitet\n";
open DOMAINS, "<replace/domains"; my @domains=<DOMAINS>; close DOMAINS; foreach (@domains) { chomp; print "$_\n"; }
# dmarc eintrag lesen
print "\nAlte DMARC Einträge werden durch diesen ersetzt\n";
open DMARC, "<replace/dmarc"; my @dmarc=<DMARC>; close DMARC; foreach (@dmarc) { chomp; print "$_\n"; }
# dkim eintrag lesen
print "\nAlte DKIM Einträge werden durch diese Zeilen ersetzt\n";
open DKIM, "<replace/dkim"; my @dkim=<DKIM>; close DKIM; foreach (@dkim) { chomp; print "$_\n"; }
print "\nSeriennummer wird zusammengesetzt aus dem Datum und einer 2-stelligen laufenden Nummer\n";
print "Die laufende Nummer muss manuell angegeben werden.\n";
print "laufende Nummer [xx]?";
my $nr=<STDIN>; chomp $nr;
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year+=1900; $mon++;
my $serial = sprintf ("%04d%02d%02d%02d", $year, $mon, $mday, $nr);
print "\nFortfahren, dann <ENTER>\n";
<STDIN>;
print "Sicherheitskopie aller Zonendateien anlegen\n";
print " Backup Verzeichnis erstellen\n";
my $dir=sprintf ("%04d%02d%02d-%02d%02d", $year, $mon, $mday, $hour, $min);
`mkdir $dir`;
print "Zonendateien kopieren\n";
`cp *.zone $dir/`;
print "\nTemporäre Zonendateien erstellen\n";
# domain für domain bearbeiten
foreach my $domain (@domains) {
print "========== $domain ==========\n";
# zonendatei einlesen
open DOMAIN, "<$domain.zone";
my @domain=<DOMAIN>;
close DOMAIN;
# temporäre zonendatei erstellen
open TEMP, ">$domain.zone.tmp";
foreach my $line (@domain) {
chomp $line;
if ( $line =~ /_dmarc/ ) {
# dmarc eintrag ersetzen
print "Ersetze DMARC Eintrag\n";
printf TEMP "$dmarc[0]\n";
} elsif ( $line =~ /_domainkey/ or
$line =~ /^\s*".*"/ or
$line =~ /^\s*".*"\s*\)/ ) {
# weitere dkim einträge entfernen
print "Entferne DKIM Eintrag\n";
} elsif ( $line =~ /; serial/) {
# serial
printf TEMP " %s ; serial\n", $serial;
} else {
# andere Einträge unbearbeitet übernehmen
printf TEMP "$line\n";
}
}
# dkim einträge hinten anhängen
print "Neuen DKIM Eintrag schreiben\n";
foreach (@dkim) {
printf TEMP "$_\n";
}
close TEMP;
}
print "\nUnschöne Zeilenenden entfernen\n";
foreach (@domains) { `sed -i "s/\r//g" $_.zone.tmp`; }
print "Alte Dateien entfernen\n";
foreach (@domains) { unlink ("$_.zone"); }
print "Temporäre Dateien umbenennen\n";
foreach (@domains) { `mv "$_.zone.tmp" "$_.zone"`; }
print "\nfertig\n";