FreeBSD Bugzilla – Attachment 144869 Details for
Bug 192029
dns/p5-DNS-ZoneParse: Add patch to support SPF
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch to add SPF record support
zoneparse.svndiff (text/plain), 5.64 KB, created by
Kurt Jaeger
on 2014-07-22 10:53:20 UTC
(
hide
)
Description:
patch to add SPF record support
Filename:
MIME Type:
Creator:
Kurt Jaeger
Created:
2014-07-22 10:53:20 UTC
Size:
5.64 KB
patch
obsolete
>Index: Makefile >=================================================================== >--- Makefile (revision 362529) >+++ Makefile (working copy) >@@ -3,6 +3,7 @@ > > PORTNAME= DNS-ZoneParse > PORTVERSION= 1.10 >+PORTREVISION= 1 > CATEGORIES= dns textproc perl5 > MASTER_SITES= CPAN > PKGNAMEPREFIX= p5- >Index: files/patch-ZoneParse.pm >=================================================================== >--- files/patch-ZoneParse.pm (revision 0) >+++ files/patch-ZoneParse.pm (working copy) >@@ -0,0 +1,136 @@ >+--- ../ZoneParse.pm-orig 2014-07-22 09:36:10.000000000 +0200 >++++ lib/DNS/ZoneParse.pm 2014-07-22 11:48:56.000000000 +0200 >+@@ -17,16 +17,20 @@ >+ my $rr_class = qr/(?:IN|HS|CH)/i; >+ my $rr_ttl = qr/(?:\d+[wdhms]?)+/i; >+ >+-$VERSION = '1.10'; >++$VERSION = '1.11'; >+ my ( >+- %dns_id, %dns_soa, %dns_ns, %dns_a, %dns_cname, %dns_mx, %dns_txt, >++ %dns_id, %dns_soa, %dns_ns, %dns_a, %dns_cname, %dns_mx, >++ %dns_txt, %dns_spf, >+ %dns_ptr, %dns_a4, %dns_srv, %dns_hinfo, %dns_rp, %dns_loc, >+ %dns_generate, >+ %dns_last_name, %dns_last_origin, %dns_last_class, %dns_last_ttl, >+ %dns_found_origins, %unparseable_line_callback, %last_parse_error_count, >+ ); >+ >+-my %possibly_quoted = map { $_ => undef } qw/ os cpu text mbox /; >++my %possibly_quoted = map { $_ => undef } qw/ os cpu text mbox spf /; >++ >++# https://kb.isc.org/article/AA-00356/0/Can-I-have-a-TXT-or-SPF-record-longer-than-255-characters.html >++my %possibly_multiple = map { $_ => undef } qw/ text spf /; >+ >+ sub new { >+ my $class = shift; >+@@ -71,6 +75,7 @@ >+ delete $dns_cname{$self}; >+ delete $dns_mx{$self}; >+ delete $dns_txt{$self}; >++ delete $dns_spf{$self}; >+ delete $dns_ptr{$self}; >+ delete $dns_a4{$self}; >+ delete $dns_srv{$self}; >+@@ -99,6 +104,7 @@ >+ : $method eq 'cname' ? $dns_cname{$self} >+ : $method eq 'mx' ? $dns_mx{$self} >+ : $method eq 'txt' ? $dns_txt{$self} >++ : $method eq 'spf' ? $dns_spf{$self} >+ : $method eq 'ptr' ? $dns_ptr{$self} >+ : $method eq 'aaaa' ? $dns_a4{$self} >+ : $method eq 'srv' ? $dns_srv{$self} >+@@ -130,6 +136,7 @@ >+ MX => $dns_mx{$self}, >+ PTR => $dns_ptr{$self}, >+ TXT => $dns_txt{$self}, >++ SPF => $dns_spf{$self}, >+ SRV => $dns_srv{$self}, >+ HINFO => $dns_hinfo{$self}, >+ RP => $dns_rp{$self}, >+@@ -235,7 +242,21 @@ >+ next unless defined $o; >+ next unless $o->{'ORIGIN'} eq $process_this_origin; >+ $self->_escape_chars( $o ); >+- $output .= qq[$o->{name} $o->{ttl} $o->{class} TXT "$o->{text}"\n]; >++ my $t = $o->{text}; >++ if ( length($t) > 250 ) { >++ $t=join('" "',( $t =~ m/.{1,250}/g )); >++ } >++ $output .= qq[$o->{name} $o->{ttl} $o->{class} TXT "$t"\n]; >++ } >++ foreach my $o ( @{ $dns_spf{$self} } ) { >++ next unless defined $o; >++ next unless $o->{'ORIGIN'} eq $process_this_origin; >++ $self->_escape_chars( $o ); >++ my $t = $o->{spf}; >++ if ( length($t) > 250 ) { >++ $t=join('" "',( $t =~ m/.{1,250}/g )); >++ } >++ $output .= qq[$o->{name} $o->{ttl} $o->{class} SPF "$t"\n]; >+ } >+ foreach my $o ( @{ $dns_ptr{$self} } ) { >+ next unless defined $o; >+@@ -361,6 +382,7 @@ >+ $dns_cname{$self} = []; >+ $dns_mx{$self} = []; >+ $dns_txt{$self} = []; >++ $dns_spf{$self} = []; >+ $dns_ptr{$self} = []; >+ $dns_a4{$self} = []; >+ $dns_srv{$self} = []; >+@@ -614,6 +636,20 @@ >+ text => $4, >+ } ); >+ } elsif ( >++ /($valid_name)? \s+ >++ $ttl_cls >++ SPF \s+ >++ ("$valid_quoted_txt_char*(?<!\\)"|$valid_txt_char+) >++ /ixo >++ ) { >++ push @{ $dns_spf{$self} }, >++ $self->_massage( { >++ name => $1, >++ ttl => $2, >++ class => $3, >++ spf => $4, >++ } ); >++ } elsif ( >+ /^\s*\$TTL \s+ >+ ($rr_ttl) >+ /ixo >+@@ -817,9 +853,12 @@ >+ $record->{$r} = ''; >+ next; >+ } >+- if ( exists $possibly_quoted{$r} ) { >++ if ( exists $possibly_quoted{$r} ) { >++ if ( exists $possibly_multiple{$r} ) { >++ $record->{$r} =~ s/"\s+"//; >++ } >+ ( $record->{$r} =~ s/^"// ) && ( $record->{$r} =~ s/"$// ); >+- } >++ } >+ >+ # We return email addresses just as they are in the file... for better >+ # or worse (mostly for backwards compatability reasons). >+@@ -1051,7 +1090,7 @@ >+ If you plan to pass a on_unparseable_line callback but do not wish to specify >+ an C<$origin>, pass 'undef' as the C<$origin> parameter. >+ >+-=item a(), cname(), srv(), mx(), ns(), ptr(), txt(), hinfo(), rp(), loc() >++=item a(), cname(), srv(), mx(), ns(), ptr(), txt(), spf(), hinfo(), rp(), loc() >+ >+ These methods return references to the resource records. For example: >+ >+@@ -1069,6 +1108,9 @@ >+ TXT records also have a 'text' property representing the record's 'txt-data' >+ descriptive text. >+ >++SPF records also have a 'spf' property representing the record's 'spf-data' >++descriptive text. >++ >+ HINFO records also have 'cpu' and 'os' properties. >+ >+ RP records also have 'mbox' and 'text' properties. > >Property changes on: files/patch-ZoneParse.pm >___________________________________________________________________ >Added: svn:mime-type >## -0,0 +1 ## >+text/plain >\ No newline at end of property >Added: fbsd:nokeywords >## -0,0 +1 ## >+yes >\ No newline at end of property >Added: svn:eol-style >## -0,0 +1 ## >+native >\ No newline at end of property
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 192029
: 144869