85 lines
2.7 KiB
Perl
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"; |