# HG changeset patch # User Heiko Schlittermann # Date 1294069796 -3600 # Node ID e25fc893e203b2d2d7bfe15873ff361866c6fddb # Parent bffb3f2cca907007a86ec9395e9a22bd310bf4a2 now using my::Config qw(get_config) diff -r bffb3f2cca90 -r e25fc893e203 dnssec-keytool.pl --- a/dnssec-keytool.pl Mon Jan 03 16:13:54 2011 +0100 +++ b/dnssec-keytool.pl Mon Jan 03 16:49:56 2011 +0100 @@ -9,6 +9,7 @@ use Pod::Usage; use File::Basename; use if $ENV{DEBUG} => "Smart::Comments"; +use my::Config qw(get_config); my $ME = basename $0; @@ -22,7 +23,7 @@ MAIN: { ### reading config - my %conf = read_conf("$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf"); + my %conf = get_config("$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf"); my ($cmd, @zones) = read_argv($conf{master_dir}); @@ -69,24 +70,6 @@ return ($cmd, @zones); } -sub read_conf(@) { - - # read configuration - my @conffiles = @_; - my %return; - - my ($_) = grep { -f } @conffiles; - open(my $cf, $_) or die "Can't open $_: $!\n"; - - while (<$cf>) { - s/#.*//; - s/\s//g; - next unless length; - my ($cname, $ccont) = split(/\s*=\s*/, $_, 2); - $return{$cname} = $ccont; - } - return %return; -} sub rm_keys ($@) { diff -r bffb3f2cca90 -r e25fc893e203 my/Config.pm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/my/Config.pm Mon Jan 03 16:49:56 2011 +0100 @@ -0,0 +1,36 @@ +package my::Config; +use strict; +use warnings; + +use base "Exporter"; + +our $VERSION = 0.0; +our @EXPORT_OK = qw(get_config); + +sub get_config(@) { + + # read configuration + my @configs = @_; + my %config; + + # the first config FILE + my ($_) = grep { -f } @configs; + open(my $cf, $_) or die "Can't open $_: $!\n"; + + while (<$cf>) { + s/#.*//; + s/\s//g; + next unless length; + my ($cname, $ccont) = split(/\s*=\s*/, $_, 2); + $config{$cname} = $ccont; + } + + # now merge the config hashes + foreach my $o (grep { ref eq "HASH" } @configs) { + %config = + (%config, map { $_ => $o->{$_} } grep { defined $o->{$_} } keys %$o); + } + return %config; +} + +1; diff -r bffb3f2cca90 -r e25fc893e203 update-serial.pl --- a/update-serial.pl Mon Jan 03 16:13:54 2011 +0100 +++ b/update-serial.pl Mon Jan 03 16:49:56 2011 +0100 @@ -12,9 +12,9 @@ use IO::File; use POSIX qw(strftime); use if $ENV{DEBUG} => "Smart::Comments"; +use my::Config qw(get_config); sub uniq(@); -sub read_conf(@); sub zones(@); sub changed_zones(); sub update_index($); @@ -51,10 +51,10 @@ ) or pod2usage; # merge the config and the defined options from commandline - %config = ( - read_conf("$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf"), - map { $_ => $opt{$_} } grep { defined $opt{$_} } keys %opt - ); + %config = get_config("$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf", \%opt); + + ### %config + exit; our $bind_dir = $config{bind_dir}; our $conf_dir = $config{zone_conf_dir}; @@ -90,26 +90,6 @@ keys %all; } -sub read_conf(@) { - my @configs = @_; - my %config; - - my ($config) = grep { -f } @configs - or die "No config found (looked at @configs)\n"; - - open(my $fh => $config) or die "$config: $!\n"; - - while (<$fh>) { - chomp; - s/#.*//; - s/\s//g; - my ($k, $v) = split(/\s*=\s*/, $_, 2) or next; - $config{$k} = $v; - } - - return %config; -} - sub zones(@) { # check whether the zones in argv are managed zones and diff -r bffb3f2cca90 -r e25fc893e203 zone-ls.pl --- a/zone-ls.pl Mon Jan 03 16:13:54 2011 +0100 +++ b/zone-ls.pl Mon Jan 03 16:49:56 2011 +0100 @@ -9,6 +9,7 @@ use Time::Local; use Getopt::Long; use if $ENV{DEBUG} => "Smart::Comments"; +use my::Config qw(get_config); my %config; my $opt_expiry = undef; @@ -28,20 +29,7 @@ }, ) or pod2usage; - { # find and read/parse the config (could use some common config parser) - my @configs = ("$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf"); - ($_) = grep { -f } @configs; - open(my $config, $_) or die "Can't open $_: $!\n"; - - while (<$config>) { - chomp; - s/#.*//; - s/\s//g; - my ($k, $v) = split(/\s*=\s*/, $_, 2) or next; - $config{$k} = $v; - } - } - + %config = get_config("$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf"); die "$config{master_dir}: $!\n" if not -d $config{master_dir}; foreach my $dir (grep { -d } glob "$config{master_dir}/*") { @@ -101,14 +89,13 @@ } } - { # output my $sort_by = $opt_expiry ? sub { ($info{$a}{expiry} // 2**64) <=> ($info{$b}{expiry} // 2**64) } : sub { $a cmp $b }; - + my $format_h = "%-35s %-8s %1s/%1s %3s %7s\n"; my $format_l = "%-35s %-8s %1d/%1d %5d %19s\n"; @@ -121,7 +108,6 @@ } } - __END__ =head1 NAME diff -r bffb3f2cca90 -r e25fc893e203 zone-mk.pl --- a/zone-mk.pl Mon Jan 03 16:13:54 2011 +0100 +++ b/zone-mk.pl Mon Jan 03 16:49:56 2011 +0100 @@ -3,6 +3,9 @@ use warnings; use strict; use FindBin; +use my::Config qw(get_config); + +my %config; if (@ARGV < 2) { print "usage: zone-mk kundennummer domain ... \n"; @@ -17,14 +20,6 @@ ); my @templz = ("$FindBin::Bin/templates/named.zone", "/etc/dnstools/templates/named.zone"); -my %config; - -for (grep { -f } @configs) { - open(CONFIG, $_) or die "Can't open $_: $!\n"; -} -unless (seek(CONFIG, 0, 0)) { - die "Can't open config (searched: @configs)\n"; -} for (grep { -f } @templc) { open(TEMPCONF, $_) or die "Can't open $_: $!\n"; @@ -40,16 +35,8 @@ die "Can't open template (searched: @templz)\n"; } -while () { - chomp; - s/#.*//; - s/\t//g; - s/\s//g; - next unless length; - my ($cname, $ccont) = split(/\s*=\s*/, $_, 2); - $config{$cname} = $ccont; -} -close(CONFIG); + +%config = get_config(@configs); my $primary = $config{primary}; my $secondary = $config{secondary}; diff -r bffb3f2cca90 -r e25fc893e203 zone-rm.pl --- a/zone-rm.pl Mon Jan 03 16:13:54 2011 +0100 +++ b/zone-rm.pl Mon Jan 03 16:49:56 2011 +0100 @@ -4,29 +4,10 @@ use strict; use File::Path; use FindBin; +use my::Config qw(get_config); # liest die Konfiguration ein -my @configs = ("$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf"); -my %config; - -foreach (grep { -f } @configs) { - open(CONFIG, $_) or die "Can't open $_: $!\n"; -} - -unless (seek(CONFIG, 0, 0)) { - die "Can't open config (searched: @configs)\n"; -} - -while () { - chomp; - s/#.*//; - s/\t//g; - s/\s//g; - next unless length; - my ($cname, $ccont) = split(/\s*=\s*/, $_, 2); - $config{$cname} = $ccont; -} -close(CONFIG); +my %config = get_config("$FindBin::Bin/dnstools.conf", "/etc/dnstools.conf"); my $master_dir = $config{"master_dir"}; my $conf_dir = $config{"zone_conf_dir"};