lib/DNS/Vi.pm
changeset 17 86d2b0d707bf
parent 16 1cbe9dc60243
child 20 cd2986b6066f
equal deleted inserted replaced
16:1cbe9dc60243 17:86d2b0d707bf
    67                         # fix the hostmaster address
    67                         # fix the hostmaster address
    68                         $rrset{data} =~ s{^\S+\s+\K(\S+[^.])(?=\s)}{$1.$origin};
    68                         $rrset{data} =~ s{^\S+\s+\K(\S+[^.])(?=\s)}{$1.$origin};
    69                     }
    69                     }
    70 
    70 
    71                     # bei einigen RRs müssen wir die Daten korrigieren
    71                     # bei einigen RRs müssen wir die Daten korrigieren
    72                     when ([qw/MX NS PTR/]) {
    72                     when ([qw/CNAME MX NS PTR SOA/]) {
       
    73 			$rrset{data} =~ s/\@/$origin/g;
    73                         $rrset{data} .= ".$origin"
    74                         $rrset{data} .= ".$origin"
    74                           unless substr($rrset{data}, -1) eq '.';
    75                           unless substr($rrset{data}, -1) eq '.';
    75                     }
    76                     }
    76                 }
    77                 }
    77                 my $id = sha512_hex(sort %rrset);
    78                 my $id = sha512_hex(sort %rrset);
   143         my %r = %{ +shift };
   144         my %r = %{ +shift };
   144         state $last_label;
   145         state $last_label;
   145 
   146 
   146         $r{label} = '@' if $r{label} eq $origin;
   147         $r{label} = '@' if $r{label} eq $origin;
   147         $r{label} =~ s{\.\Q$origin\E$}{};
   148         $r{label} =~ s{\.\Q$origin\E$}{};
   148         $r{data} =~ s{\.\Q$origin\E$}{} if $r{rrtype} ~~ [qw(MX SOA PTR)];
   149         $r{data} =~ s{\.\Q$origin\E$}{} if $r{rrtype} ~~ [qw(CNAME MX SOA PTR)];
       
   150 	$r{data} =~ s{\Q$origin\E$}{\@} if $r{rrtype} ~~ [qw(CNAME MX)];
   149         $r{ttl} = $r{ttl} == $ttl ? '' : ttl2h($r{ttl});
   151         $r{ttl} = $r{ttl} == $ttl ? '' : ttl2h($r{ttl});
   150         $r{label} = do {
   152         $r{label} = do {
   151             if (defined $last_label and $r{label} eq $last_label) { '' }
   153             if (defined $last_label and $r{label} eq $last_label) { '' }
   152             else { $last_label = $r{label} }
   154             else { $last_label = $r{label} }
   153         };
   155         };