X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=bin%2Fbind.export;h=943aefbb06d21650d1343f6f715004f86775f781;hb=d75b4ad13df9e8e3cb570060252fa45ef4e80def;hp=8d6f4e339d6cd00c9f784e74ad511222c72bfcd3;hpb=bd5457be3b6422596cf43464decd5b696d886123;p=freeside.git diff --git a/bin/bind.export b/bin/bind.export index 8d6f4e339..943aefbb0 100755 --- a/bin/bind.export +++ b/bin/bind.export @@ -2,6 +2,8 @@ use strict; use File::Path; +use File::Rsync; +use Net::SSH qw(ssh); use FS::UID qw(adminsuidsetup datasrc); use FS::Record qw(qsearch qsearchs); use FS::part_export; @@ -13,31 +15,38 @@ my $user = shift or die &usage; adminsuidsetup $user; my $spooldir = "/usr/local/etc/freeside/export.". datasrc. "/bind"; -mkdir $spooldir unless -d $spooldir; +mkdir $spooldir, 0700 unless -d $spooldir; my @exports = qsearch('part_export', { 'exporttype' => 'bind' } ); my @sexports = qsearch('part_export', { 'exporttype' => 'bind_slave' } ); +my $rsync = File::Rsync->new({ + rsh => 'ssh', +# dry_run => 1, +}); + foreach my $export ( @exports ) { - my $prefix = "$spooldir/". $export->machine; + my $machine = $export->machine; + my $prefix = "$spooldir/$machine"; #prevent old domain files from piling up #rmtree "$prefix" or die "can't rmtree $prefix.db: $!"; - mkdir $prefix unless -d $prefix; + mkdir $prefix, 0700 unless -d $prefix; open(NAMED_CONF,">$prefix/named.conf") or die "can't open $prefix/named.conf: $!"; - open(CONF_HEADER,"<$prefix/named.conf.HEADER"); #or die + open(CONF_HEADER,"<$prefix/named.conf.HEADER") + or die "can't open $prefix/named.conf.HEADER: $!"; while () { print NAMED_CONF $_; } close CONF_HEADER; my $zonepath = $export->option('zonepath'); $zonepath =~ s/\/$//; - #false laziness with freeside-sqlradius-reset + #false laziness with freeside-sqlradius-reset and shell.export my @svc_domain = map { qsearchs('svc_domain', { 'svcnum' => $_->svcnum } ) } map { qsearch('cust_svc', { 'svcpart' => $_->svcpart } ) } @@ -96,22 +105,41 @@ END } + $rsync->exec( { + src => "$prefix/", + recursive => 1, + dest => "root\@$machine:$zonepath/", + exclude => [qw( *.import named.conf.HEADER named.conf )], + } ) or die "rsync to $machine failed: ". join(" / ", $rsync->err); + # warn $rsync->out; + + $rsync->exec( { + src => "$prefix/named.conf", + dest => "root\@$machine:". $export->option('named_conf'), + } ) or die "rsync to $machine failed: ". join(" / ", $rsync->err); +# warn $rsync->out; + + ssh("root\@$machine", 'ndc reload'); + } + close NAMED_CONF; foreach my $sexport ( @sexports ) { #false laziness with above - my $prefix = "$spooldir/". $sexport->machine; + my $machine = $sexport->machine; + my $prefix = "$spooldir/$machine"; #prevent old domain files from piling up #rmtree "$prefix" or die "can't rmtree $prefix.db: $!"; - mkdir $prefix unless -d $prefix; + mkdir $prefix, 0700 unless -d $prefix; open(NAMED_CONF,">$prefix/named.conf") or die "can't open $prefix/named.conf: $!"; - open(CONF_HEADER,"<$prefix/named.conf.HEADER"); #or die + open(CONF_HEADER,"<$prefix/named.conf.HEADER") + or die "can't open $prefix/named.conf.HEADER: $!"; while () { print NAMED_CONF $_; } close CONF_HEADER; @@ -137,6 +165,14 @@ END } + $rsync->exec( { + src => "$prefix/named.conf", + dest => "root\@$machine:". $sexport->option('named_conf'), + } ) or die "rsync to $machine failed: ". join(" / ", $rsync->err); +# warn $rsync->out; + + ssh("root\@$machine", 'ndc reload'); + } close NAMED_CONF;