equal
deleted
inserted
replaced
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 }; |