summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2002-10-20 03:28:23 +0000
committerivan <ivan>2002-10-20 03:28:23 +0000
commite6f6f496883b8e8be42f4d92f01b61dbc2c590be (patch)
treea80ee8ba4f8e290b8990ca38243d30b9eb2ef3fb
parentf3175f9f238b54db37d701a7a7a5ede425b5753b (diff)
vpopmail restart export option
-rw-r--r--FS/FS/part_export.pm3
-rw-r--r--FS/FS/part_export/vpopmail.pm29
-rwxr-xr-xeg/vpopmailrestart11
3 files changed, 21 insertions, 22 deletions
diff --git a/FS/FS/part_export.pm b/FS/FS/part_export.pm
index 1b402e0..c9ae41f 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 2ca4401..bddf175 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 c716e2e..0000000
--- 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
-