diff options
| author | ivan <ivan> | 2002-10-20 03:28:23 +0000 | 
|---|---|---|
| committer | ivan <ivan> | 2002-10-20 03:28:23 +0000 | 
| commit | e6f6f496883b8e8be42f4d92f01b61dbc2c590be (patch) | |
| tree | a80ee8ba4f8e290b8990ca38243d30b9eb2ef3fb | |
| parent | f3175f9f238b54db37d701a7a7a5ede425b5753b (diff) | |
vpopmail restart export option
| -rw-r--r-- | FS/FS/part_export.pm | 3 | ||||
| -rw-r--r-- | FS/FS/part_export/vpopmail.pm | 29 | ||||
| -rwxr-xr-x | eg/vpopmailrestart | 11 | 
3 files changed, 21 insertions, 22 deletions
diff --git a/FS/FS/part_export.pm b/FS/FS/part_export.pm index 1b402e014..c9ae41fc1 100644 --- a/FS/FS/part_export.pm +++ b/FS/FS/part_export.pm @@ -643,6 +643,9 @@ tie my %vpopmail_options, 'Tie::IxHash',    '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', +               },  ;  tie my %bind_options, 'Tie::IxHash', diff --git a/FS/FS/part_export/vpopmail.pm b/FS/FS/part_export/vpopmail.pm index 2ca44016a..bddf175ee 100644 --- a/FS/FS/part_export/vpopmail.pm +++ b/FS/FS/part_export/vpopmail.pm @@ -19,6 +19,7 @@ sub _export_insert {      crypt($svc_acct->_password,$saltset[int(rand(64))].$saltset[int(rand(64))]),      $svc_acct->domain,      $svc_acct->quota, +    $svc_acct->finger,    );  } @@ -46,7 +47,7 @@ sub _export_replace {    return '' unless $old->_password ne $new->_password;    $self->vpopmail_queue( $new->svcnum, 'replace', -    $new->username, $cpassword, $new->domain, $new->quota ); +    $new->username, $cpassword, $new->domain, $new->quota, $new->finger );  }  sub _export_delete { @@ -77,13 +78,14 @@ sub vpopmail_queue {      $self->option('dir'),      $self->option('uid'),      $self->option('gid'), +    $self->option('restart'),      @_    );  }  sub vpopmail_insert { #subroutine, not method -  my( $exportdir, $machine, $dir, $uid, $gid ) = splice @_,0,5; -  my( $username, $password, $domain, $quota ) = @_; +  my( $exportdir, $machine, $dir, $uid, $gid, $restart ) = splice @_,0,6; +  my( $username, $password, $domain, $quota, $finger ) = @_;    mkdir "$exportdir/domains/$domain", 0700 or die $!      unless -d "$exportdir/domains/$domain"; @@ -112,13 +114,13 @@ sub vpopmail_insert { #subroutine, not method      mkdir $mkdir, 0700 or die "can't mkdir $mkdir: $!";    } -  vpopmail_sync( $exportdir, $machine, $dir, $uid, $gid ); +  vpopmail_sync( $exportdir, $machine, $dir, $uid, $gid, $restart );  }  sub vpopmail_replace { #subroutine, not method -  my( $exportdir, $machine, $dir, $uid, $gid ) = splice @_,0,5; -  my( $username, $password, $domain ) = @_; +  my( $exportdir, $machine, $dir, $uid, $gid, $restart ) = splice @_,0,6; +  my( $username, $password, $domain, $quota, $finger ) = @_;    (open(VPASSWD, "$exportdir/domains/$domain/vpasswd")      and flock(VPASSWD,LOCK_EX) @@ -140,7 +142,7 @@ sub vpopmail_replace { #subroutine, not method        '1',        '0',        $finger, -      $dir, +      "$dir/domains/$domain/$username", #$vdir        $quota ? $quota.'S' : 'NOQUOTA',      ), "\n";    } @@ -153,12 +155,12 @@ sub vpopmail_replace { #subroutine, not method    flock(VPASSWD,LOCK_UN);    close(VPASSWD); -  vpopmail_sync( $exportdir, $machine, $dir, $uid, $gid ); +  vpopmail_sync( $exportdir, $machine, $dir, $uid, $gid, $restart );  }  sub vpopmail_delete { #subroutine, not method -  my( $exportdir, $machine, $dir, $uid, $gid ) = splice @_,0,5; +  my( $exportdir, $machine, $dir, $uid, $gid, $restart ) = splice @_,0,6;    my( $username, $domain ) = @_;    (open(VPASSWD, "$exportdir/domains/$domain/vpasswd") @@ -185,11 +187,11 @@ sub vpopmail_delete { #subroutine, not method    rmtree "$exportdir/domains/$domain/$username"      or die "can't rmtree $exportdir/domains/$domain/$username: $!"; -  vpopmail_sync( $exportdir, $machine, $dir, $uid, $gid ); +  vpopmail_sync( $exportdir, $machine, $dir, $uid, $gid, $restart );  }  sub vpopmail_sync { -  my( $exportdir, $machine, $dir, $uid, $gid ) = splice @_,0,5; +  my( $exportdir, $machine, $dir, $uid, $gid, $restart ) = splice @_,0,6;    chdir $exportdir;  #  my @args = ( $rsync, "-rlpt", "-e", $ssh, "domains/", @@ -214,6 +216,11 @@ sub vpopmail_sync {          'STDERR: '. join(" / ", $rsync->err). ', '.          'STDOUT: '. join(" / ", $rsync->out);    } + +  eval "use Net::SSH;"; +  die $@ if $@; + +  ssh("vpopmail\@$machine", $restart);  } diff --git a/eg/vpopmailrestart b/eg/vpopmailrestart deleted file mode 100755 index c716e2e2b..000000000 --- a/eg/vpopmailrestart +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -for domain in /home/vpopmail/domains/* -do -  /home/vpopmail/bin/vmkpasswd `/bin/basename $domain` -done - -/var/qmail/bin/qmail-newu - -killall -HUP qmail-send -  | 
