Skip Menu |

This queue is for tickets about the BIND-Conf_Parser CPAN distribution.

Report information
The Basics
Id: 82217
Status: new
Priority: 0/
Queue: BIND-Conf_Parser

People
Owner: Nobody in particular
Requestors: Xavier (no email address)
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 0.95
Fixed in: (no value)



Subject: Bind9 compatibility
Hi, Ivan Kohler (Debian Perl group) has written the joined patch to extend your lib to bind 9. Cheers, Xavier
Subject: bind9-compatibility.patch
Description: Bind 9 compatibility Author: Ivan Kohler <ivan@debian.org> Forwarded: no Reviewed-By: Xavier Guimard <x.guimard@free.fr> Last-Update: 2012-12-22 --- a/README +++ b/README @@ -3,12 +3,12 @@ DESCRIPTION This module allows a script to understand the contents of a BIND - version 8 named.conf file. Why would you want to parse your - /etc/named.conf file? Well, let's say you're a sysadmin and you've - gotten tired of mismatches between your DNS forward and reverse - zones, and you want a tool that'll check your zone files for - inconsistencies and typos. How's that tool going to get the - complete list of zone files? Tah da, enter this module, stage + version 8 (and sometimes version 9) named.conf file. Why would you + want to parse your /etc/named.conf file? Well, let's say you're a + sysadmin and you've gotten tired of mismatches between your DNS + forward and reverse zones, and you want a tool that'll check your + zone files for inconsistencies and typos. How's that tool going to + get the complete list of zone files? Tah da, enter this module, stage right! The verify_zones script included with this module does exactly the above, and may even work at your site. @@ -19,7 +19,9 @@ The name of this module is perhaps not the best. Suggestions are welcome. - This revision matches BIND version 8.2.2. + This revision matches BIND version 8.2.2. Some capability to not + throw fatal exceptions when parsing version 9 configuration files + has been added, but it is far from complete. THANKS The design of this module was inspired by Gisle Aas's HTML::Parser @@ -56,5 +58,7 @@ ftp://ftp.gac.edu/pub/guenther/BIND-Conf_Parser-0.95.tar.gz AUTHOR - BIND-Conf_Parser was created by Philip Guenther <guenther@gac.edu> + BIND-Conf_Parser was created by Philip Guenther <guenther@gac.edu>. + Some very preliminary changes were made to parse a few version 9 + configuration files by Ivan Kohler <ivan-bind-confparser@420.am>. --- a/lib/BIND/Conf_Parser.pm +++ b/lib/BIND/Conf_Parser.pm @@ -427,6 +427,20 @@ $self->expect(';', "to finish logging declaration"); } +sub parse_listen_on($$) { + my($self, $mess) = @_; + $self->expect([ [ 'port' ], '{' ], $mess); + my($port); + if ($self->{_token} eq WORD) { + $self->expect(NUMBER, "following `port'"); + $port = 0 + $self->{_data}; + $self->expect('{', $mess); + } else { + $port = 53; + } + return [$port, $self->parse_addrmatchlist($mess, 1)]; +} + my(%opt_table) = ( "version" => STRING, "directory" => STRING, @@ -470,19 +484,8 @@ "allow-transfer" => \&parse_addrmatchlist, "allow-recursion" => \&parse_addrmatchlist, "blackhole" => \&parse_addrmatchlist, - "listen-on" => sub { - my($self, $mess) = @_; - $self->expect([ [ 'port' ], '{' ], $mess); - my($port); - if ($self->{_token} eq WORD) { - $self->expect(NUMBER, "following `port'"); - $port = 0 + $self->{_data}; - $self->expect('{', $mess); - } else { - $port = 53; - } - return [$port, $self->parse_addrmatchlist($mess, 1)]; - }, + "listen-on" => \&parse_listen_on, + "listen-on-v6" => \&parse_listen_on, "query-source" => sub { my($self, $mess) = @_; my($port, $address) = (0, 0); @@ -935,10 +938,10 @@ =head1 DESCRIPTION C<BIND::Conf_Parser> implements a virtual base class for parsing BIND -(Berkeley Internet Name Domain) server version 8 configuration files -("named.conf"). The parsing methods shown in the synopsis perform -syntactic analysis only. As each meaningful semantic 'chunk' is -parsed, a callback method is invoked with the parsed information. +(Berkeley Internet Name Domain) server version 8 (and sometimes version 9) +configuration files ("named.conf"). The parsing methods shown in the +synopsis perform syntactic analysis only. As each meaningful semantic +'chunk' is parsed, a callback method is invoked with the parsed information. The following methods are the public entry points for the base class: =over 4 @@ -1065,7 +1068,9 @@ and understands the statements, options, and forms of that version. Since the BIND developers have only made upward compatible changes to the syntax, C<BIND::Conf_Parser> will correctly parse valid config files -for previous versions of BIND. +for previous versions of BIND. Some support for simple version 9 +configuration files has been added, but there are probably new statements +that are not yet recognized. A C<BIND::Conf_Parser> object is a blessed anonymous hash. In an attempt to prevent modules trampling on each other I propose that any