5 use FS::UID qw(adminsuidsetup datasrc);
6 use FS::Record qw(qsearch qsearchs);
12 my $user = shift or die &usage;
15 my $spooldir = "/usr/local/etc/freeside/export.". datasrc. "/bind";
16 mkdir $spooldir unless -d $spooldir;
18 my @exports = qsearch('part_export', { 'exporttype' => 'bind' } );
19 my @sexports = qsearch('part_export', { 'exporttype' => 'bind_slave' } );
21 foreach my $export ( @exports ) {
23 my $prefix = "$spooldir/". $export->machine;
25 #prevent old domain files from piling up
26 #rmtree "$prefix" or die "can't rmtree $prefix.db: $!";
28 mkdir $prefix unless -d $prefix;
30 open(NAMED_CONF,">$prefix/named.conf")
31 or die "can't open $prefix/named.conf: $!";
33 open(CONF_HEADER,"<$prefix/named.conf.HEADER"); #or die
34 while (<CONF_HEADER>) { print NAMED_CONF $_; }
37 my $zonepath = $export->option('zonepath');
40 #false laziness with freeside-sqlradius-reset
42 map { qsearchs('svc_domain', { 'svcnum' => $_->svcnum } ) }
43 map { qsearch('cust_svc', { 'svcpart' => $_->svcpart } ) }
44 grep { qsearch('cust_svc', { 'svcpart' => $_->svcpart } ) }
47 foreach my $svc_domain ( @svc_domain ) {
48 my $domain = $svc_domain->domain;
49 my @masters = qsearch('domain_record', {
50 'svcnum' => $svc_domain->svcnum,
54 my $masters = join('; ', map { $_->recdata } @masters );
56 print NAMED_CONF <<END;
60 masters { $masters; };
67 print NAMED_CONF <<END;
70 file "$zonepath/db.$domain";
75 open (DB_MASTER,">$prefix/db.$domain")
76 or die "can't open $prefix/db.$domain: $!";
79 qsearch('domain_record', { 'svcnum' => $svc_domain->svcnum } );
80 foreach my $domain_record (
81 sort { $b->rectype cmp $a->rectype } @domain_records
83 #if ( $domain_record->rectype eq 'SOA' ) {
84 # print DB_MASTER join("\t", $domain_record-> reczone
86 print DB_MASTER join("\t",
87 map { $domain_record->getfield($_) }
88 qw( reczone recaf rectype recdata )
102 foreach my $sexport ( @sexports ) { #false laziness with above
104 my $prefix = "$spooldir/". $sexport->machine;
106 #prevent old domain files from piling up
107 #rmtree "$prefix" or die "can't rmtree $prefix.db: $!";
109 mkdir $prefix unless -d $prefix;
111 open(NAMED_CONF,">$prefix/named.conf")
112 or die "can't open $prefix/named.conf: $!";
114 open(CONF_HEADER,"<$prefix/named.conf.HEADER"); #or die
115 while (<CONF_HEADER>) { print NAMED_CONF $_; }
118 my $masters = $sexport->option('master');
120 #false laziness with freeside-sqlradius-reset
122 map { qsearchs('svc_domain', { 'svcnum' => $_->svcnum } ) }
123 map { qsearch('cust_svc', { 'svcpart' => $_->svcpart } ) }
124 grep { qsearch('cust_svc', { 'svcpart' => $_->svcpart } ) }
125 $sexport->export_svc;
127 foreach my $svc_domain ( @svc_domain ) {
128 my $domain = $svc_domain->domain;
129 print NAMED_CONF <<END;
133 masters { $masters; };
146 die "Usage:\n bind.export user\n";