export host selection per service, RT#17914
[freeside.git] / FS / FS / part_export / vpopmail.pm
index bddf175..5fca170 100644 (file)
@@ -1,13 +1,41 @@
 package FS::part_export::vpopmail;
 
-use vars qw(@ISA @saltset $exportdir);
+use vars qw(@ISA %info @saltset $exportdir);
 use Fcntl qw(:flock);
+use Tie::IxHash;
 use File::Path;
 use FS::UID qw( datasrc );
 use FS::part_export;
 
 @ISA = qw(FS::part_export);
 
+tie my %options, 'Tie::IxHash',
+  #'machine' => { label=>'vpopmail machine', },
+  'dir'     => { label=>'directory', }, # ?more info? default?
+  'uid'     => { label=>'vpopmail uid' },
+  'gid'     => { label=>'vpopmail gid' },
+  'restart' => { label=> 'vpopmail restart command',
+                 default=> 'cd /home/vpopmail/domains; for domain in *; do /home/vpopmail/bin/vmkpasswd $domain; done; /var/qmail/bin/qmail-newu; killall -HUP qmail-send',
+               },
+;
+
+%info = (
+  'svc'     => 'svc_acct',
+  'desc'    => 'Real-time export to vpopmail text files',
+  'options' => \%options,
+  'default_svc_class' => 'Email',
+  'notes'   => <<'END'
+This export is currently unmaintained.  See shellcommands_withdomain for an
+export that uses vpopmail CLI commands instead.<BR>
+<BR>
+Real time export to <a href="http://inter7.com/vpopmail/">vpopmail</a> text
+files.  <a href="http://search.cpan.org/dist/File-Rsync">File::Rsync</a>
+must be installed, and you will need to
+<a href="http://www.freeside.biz/mediawiki/index.php/Freeside:1.9:Documentation:Administration:SSH_Keys">setup SSH for unattended operation</a>
+to <b>vpopmail</b>@<i>export.host</i>. 
+END
+);
+
 @saltset = ( 'a'..'z' , 'A'..'Z' , '0'..'9' , '.' , '/' );
 
 sub rebless { shift; }
@@ -60,7 +88,7 @@ sub _export_delete {
 sub vpopmail_queue {
   my( $self, $svcnum, $method ) = (shift, shift, shift);
 
-  my $exportdir = "/usr/local/etc/freeside/export." . datasrc;
+  my $exportdir = "%%%FREESIDE_EXPORT%%%/export." . datasrc;
   mkdir $exportdir, 0700 or die $! unless -d $exportdir;
   $exportdir .= "/vpopmail";
   mkdir $exportdir, 0700 or die $! unless -d $exportdir;
@@ -217,10 +245,11 @@ sub vpopmail_sync {
         'STDOUT: '. join(" / ", $rsync->out);
   }
 
-  eval "use Net::SSH;";
+  eval "use Net::SSH qw(ssh);";
   die $@ if $@;
 
-  ssh("vpopmail\@$machine", $restart);
+  ssh("vpopmail\@$machine", $restart) if $restart;
 }
 
+1;