summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2003-06-13 08:11:24 +0000
committerivan <ivan>2003-06-13 08:11:24 +0000
commit2c2f1122f76c0aec0861bf3d9c7fb9dff109c346 (patch)
treee7c5f70cee90a353798c750a23eaa2a23c6e03e7
parentce6df8eaa7ba3ba864cc58b2a51ab6b603e68dc1 (diff)
add vpopmail presets to shellcommands_withdomain export
-rw-r--r--FS/FS/part_export.pm10
-rw-r--r--FS/FS/part_export/shellcommands.pm11
2 files changed, 19 insertions, 2 deletions
diff --git a/FS/FS/part_export.pm b/FS/FS/part_export.pm
index 9330a925d..300e88821 100644
--- a/FS/FS/part_export.pm
+++ b/FS/FS/part_export.pm
@@ -576,6 +576,9 @@ tie my %shellcommands_options, 'Tie::IxHash',
type =>'textarea',
default=>'',
},
+ 'usermod_pwonly' => { label=>'Disallow username changes',
+ type =>'checkbox',
+ },
'suspend' => { label=>'Suspension command',
default=>'',
},
@@ -613,6 +616,9 @@ tie my %shellcommands_withdomain_options, 'Tie::IxHash',
type =>'textarea',
#default=>"$_password\n$_password\n",
},
+ 'usermod_pwonly' => { label=>'Disallow username changes',
+ type =>'checkbox',
+ },
'suspend' => { label=>'Suspension command',
default=>'',
},
@@ -875,9 +881,9 @@ tie my %forward_shellcommands_options, 'Tie::IxHash',
},
'shellcommands_withdomain' => {
- 'desc' => 'Real-time export via remote SSH.',
+ 'desc' => 'Real-time export via remote SSH (vpopmail, etc.).',
'options' => \%shellcommands_withdomain_options,
- 'notes' => 'Run remote commands via SSH. username@domain (rather than just usernames) are considered unique (also see shellcommands). You probably want this if the commands you are running will accept a domain as a parameter, and will allow the same username with different domains. You will need to <a href="../docs/ssh.html">setup SSH for unattended operation</a>.<BR><BR>The following variables are available for interpolation (prefixed with <code>new_</code> or <code>old_</code> for replace operations): <UL><LI><code>$username</code><LI><code>$domain</code><LI><code>$_password</code><LI><code>$quoted_password</code> - unencrypted password quoted for the shell<LI><code>$crypt_password</code> - encrypted password<LI><code>$uid</code><LI><code>$gid</code><LI><code>$finger</code> - GECOS, already quoted for the shell (do not add additional quotes)<LI><code>$dir</code> - home directory<LI><code>$shell</code><LI><code>$quota</code><LI>All other fields in <a href="../docs/schema.html#svc_acct">svc_acct</a> are also available.</UL>',
+ 'notes' => 'Run remote commands via SSH. username@domain (rather than just usernames) are considered unique (also see shellcommands). You probably want this if the commands you are running will accept a domain as a parameter, and will allow the same username with different domains. You will need to <a href="../docs/ssh.html">setup SSH for unattended operation</a>.<BR><BR>Use these buttons for some useful presets:<UL><LI><INPUT TYPE="button" VALUE="vpopmail" onClick=\'this.form.useradd.value = "vadduser $username@$domain"; this.form.useradd_stdin.value = "$_password\n$_password\n"; this.form.userdel.value = "vdeluser $username@$domain"; this.form.userdel_stdin.value=""; this.form.usermod.value = "vpasswd $new_username@$new_domain"; this.form.usermod_stdin.value = "$new__password\n$new__password\n"; this.form.usermod_pwonly.checked = true;\'></UL>The following variables are available for interpolation (prefixed with <code>new_</code> or <code>old_</code> for replace operations): <UL><LI><code>$username</code><LI><code>$domain</code><LI><code>$_password</code><LI><code>$quoted_password</code> - unencrypted password quoted for the shell<LI><code>$crypt_password</code> - encrypted password<LI><code>$uid</code><LI><code>$gid</code><LI><code>$finger</code> - GECOS, already quoted for the shell (do not add additional quotes)<LI><code>$dir</code> - home directory<LI><code>$shell</code><LI><code>$quota</code><LI>All other fields in <a href="../docs/schema.html#svc_acct">svc_acct</a> are also available.</UL>',
},
'ldap' => {
diff --git a/FS/FS/part_export/shellcommands.pm b/FS/FS/part_export/shellcommands.pm
index f592a838a..b1f9b0d68 100644
--- a/FS/FS/part_export/shellcommands.pm
+++ b/FS/FS/part_export/shellcommands.pm
@@ -81,6 +81,17 @@ sub _export_replace {
$new_crypt_password = ''; #surpress "used only once" warnings
$new_crypt_password = crypt( $new->_password,
$saltset[int(rand(64))].$saltset[int(rand(64))]);
+ if ( $self->option('usermod_pwonly') ) {
+ my $error = '';
+ if ( $old_username ne $new_username ) {
+ $error ||= "can't change username";
+ }
+ if ( $old_domain ne $new_domain ) {
+ $error ||= "can't change domain";
+ }
+ return $error. ' ('. $self->exporttype. ' to '. $self->machine. ')'
+ if $error;
+ }
$self->shellcommands_queue( $new->svcnum,
user => $self->option('user')||'root',
host => $self->machine,