fix error message when an action isn't selected
[freeside.git] / bin / apache.export
index 47863a9..02dd58a 100755 (executable)
@@ -1,6 +1,7 @@
 #!/usr/bin/perl -w
 
 use strict;
+use Getopt::Std;
 #use File::Path;
 use File::Rsync;
 use Net::SSH qw(ssh);
@@ -10,6 +11,9 @@ use FS::part_export;
 use FS::cust_svc;
 use FS::svc_www;
 
+use vars qw(%opt);
+getopts("d", \%opt);
+
 my $user = shift or die &usage;
 adminsuidsetup $user;
 
@@ -26,25 +30,50 @@ my $rsync = File::Rsync->new({
 
 foreach my $export ( @exports ) {
 
-  my $machine = $export->machine;
-  my $file = "$spooldir/$machine.conf";
+  my $machine   = $export->machine;
+  my $exportnum = $export->exportnum;
+  my $file = "$spooldir/$machine.exportnum$exportnum.conf";
 
-  open(HTTPD_CONF,">$file") or die "can't open $file: $!";
+  warn "exporting apache configuration for $machine to $file\n"
+    if $opt{d};
 
-  my $template = $export->option('template');
+  open(HTTPD_CONF,">$file") or die "can't open $file: $!";
 
   my @svc_www = $export->svc_x;
 
   foreach my $svc_www ( @svc_www ) {
-    use vars qw($zone $username);
+    use vars qw($zone $username $dir $email $config);
     $zone = $svc_www->domain_record->zone;
-    $username = $svc_www->svc_acct->username;
+    $config = $svc_www->config;
+    my $template = $export->option('template');
+    my $cust_pkg = $svc_www->cust_svc->cust_pkg;
+    if ( $cust_pkg->getfield('susp') or $cust_pkg->getfield('cancel') ) {
+      $template = $export->option('template_inactive') 
+                  || $export->option('template');
+      # Fall back to the regular template if template_inactive doesn't exist
+    }
+    if ( $svc_www->svc_acct ) {
+      $username = $svc_www->svc_acct->username;
+      $dir = $svc_www->svc_acct->dir;
+      $email = $svc_www->svc_acct->email;
+    } else {
+      $username = '';
+      $dir      = '';
+      $email    = '';
+    }
+
+    warn "  adding configuration section for $zone\n"
+      if $opt{d};
+
     print HTTPD_CONF eval(qq("$template")). "\n\n";
   }
 
   my $user = $export->option('user');
   my $httpd_conf = $export->option('httpd_conf');
 
+  warn "syncing $file to $httpd_conf on $machine\n"
+    if $opt{d};
+
   $rsync->exec( {
     src       => $file,
     dest      => "$user\@$machine:$httpd_conf",
@@ -53,6 +82,9 @@ foreach my $export ( @exports ) {
 
   my $restart = $export->option('restart') || 'apachectl graceful';
 
+  warn "running restart command $restart on $machine\n"
+    if $opt{d};
+
   ssh("root\@$machine", $restart);
 
 }
@@ -62,6 +94,6 @@ close HTTPD_CONF;
 # -----
 
 sub usage {
-  die "Usage:\n  apache.export user\n"; 
+  die "Usage:\n  apache.export [ -d ] user\n"; 
 }