aboutsummaryrefslogtreecommitdiff
path: root/dns/p5-DNS-ZoneParse
diff options
context:
space:
mode:
authorKurt Jaeger <pi@FreeBSD.org>2014-07-23 12:35:26 +0000
committerKurt Jaeger <pi@FreeBSD.org>2014-07-23 12:35:26 +0000
commit4d13dd502d0f0a73706c0f68a7e4812837d99d13 (patch)
treed0fdff8d767b1d72eca45e1a777653c735424f5b /dns/p5-DNS-ZoneParse
parent0ad8cfd2bfeb147b7a9654cf9a01e3649d295529 (diff)
downloadports-4d13dd502d0f0a73706c0f68a7e4812837d99d13.tar.gz
ports-4d13dd502d0f0a73706c0f68a7e4812837d99d13.zip
dns/p5-DNS-ZoneParse
- add patch to support SPF records - upstream see https://rt.cpan.org/Ticket/Display.html?id=81111 PR: 192029
Notes
Notes: svn path=/head/; revision=362669
Diffstat (limited to 'dns/p5-DNS-ZoneParse')
-rw-r--r--dns/p5-DNS-ZoneParse/Makefile1
-rw-r--r--dns/p5-DNS-ZoneParse/files/patch-ZoneParse.pm136
2 files changed, 137 insertions, 0 deletions
diff --git a/dns/p5-DNS-ZoneParse/Makefile b/dns/p5-DNS-ZoneParse/Makefile
index a31ba4a74f4b..84fcf7aa59f4 100644
--- a/dns/p5-DNS-ZoneParse/Makefile
+++ b/dns/p5-DNS-ZoneParse/Makefile
@@ -3,6 +3,7 @@
PORTNAME= DNS-ZoneParse
PORTVERSION= 1.10
+PORTREVISION= 1
CATEGORIES= dns textproc perl5
MASTER_SITES= CPAN
PKGNAMEPREFIX= p5-
diff --git a/dns/p5-DNS-ZoneParse/files/patch-ZoneParse.pm b/dns/p5-DNS-ZoneParse/files/patch-ZoneParse.pm
new file mode 100644
index 000000000000..30b160cf45fd
--- /dev/null
+++ b/dns/p5-DNS-ZoneParse/files/patch-ZoneParse.pm
@@ -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.