X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Fshellcommands.pm;h=665ec473f7e2c452cab96234b46617a0d12ef96d;hb=e96a3fd1c8ee8c711a7e119c0937da6866bbd4f0;hp=1af5bb348b3e4a5f15055bb4202da735391c34c4;hpb=e53cf6b04ea8c6f10c331d46372c486128478df0;p=freeside.git
diff --git a/FS/FS/part_export/shellcommands.pm b/FS/FS/part_export/shellcommands.pm
index 1af5bb348..665ec473f 100644
--- a/FS/FS/part_export/shellcommands.pm
+++ b/FS/FS/part_export/shellcommands.pm
@@ -83,7 +83,7 @@ running will not accept a domain as a parameter. You will need to
this.form.unsuspend_stdin.value="";
'>
-
- Note: On FreeBSD versions before 5.3, due to deficient locking in pw(1),
- you must disable the chpass(1), chsh(1), chfn(1), passwd(1), and vipw(1)
- commands, or replace them with wrappers that prepend
- "lockf /etc/passwd.lock". Alternatively, apply the patch in
+ Note: On FreeBSD versions before 5.3 and 4.10 (4.10 is after 4.9, not
+ 4.1!), due to deficient locking in pw(1), you must disable the chpass(1),
+ chsh(1), chfn(1), passwd(1), and vipw(1) commands, or replace them with
+ wrappers that prepend "lockf /etc/passwd.lock". Alternatively, apply the
+ patch in
FreeBSD PR#23501
- and use the "FreeBSD 5.3 or later" button below.
+ and use the "FreeBSD 4.10 / 5.3 or later" button below.
- $dir - home directory
$shell
$quota
+
@radius_groups
All other fields in svc_acct are also available.
END
@@ -174,14 +176,25 @@ sub _export_delete {
sub _export_suspend {
my($self) = shift;
- $self->_export_command('suspend', @_);
+ $self->_export_command_or_super('suspend', @_);
}
sub _export_unsuspend {
my($self) = shift;
- $self->_export_command('unsuspend', @_);
+ $self->_export_command_or_super('unsuspend', @_);
}
+sub _export_command_or_super {
+ my($self, $action) = (shift, shift);
+ if ( $self->option($action) =~ /^\s*$/ ) {
+ my $method = "SUPER::_export_$action";
+ $self->$method(@_);
+ } else {
+ $self->_export_command($action, @_);
+ }
+};
+
+
sub _export_command {
my ( $self, $action, $svc_acct) = (shift, shift, shift);
my $command = $self->option($action);
@@ -203,7 +216,7 @@ sub _export_command {
my $cust_pkg = $svc_acct->cust_svc->cust_pkg;
if ( $cust_pkg ) {
- $email = ( grep { $_ ne 'POST' } $cust_pkg->cust_main->invoicing_list )[0];
+ $email = ( grep { $_ !~ /^(POST|FAX)$/ } $cust_pkg->cust_main->invoicing_list )[0];
} else {
$email = '';
}
@@ -227,6 +240,8 @@ sub _export_command {
);
}
+ @radius_groups = $svc_acct->radius_groups;
+
$self->shellcommands_queue( $svc_acct->svcnum,
user => $self->option('user')||'root',
host => $self->machine,
@@ -265,6 +280,9 @@ sub _export_replace {
);
}
+ @old_radius_groups = $old->radius_groups;
+ @new_radius_groups = $new->radius_groups;
+
if ( $self->option('usermod_pwonly') ) {
my $error = '';
if ( $old_username ne $new_username ) {
@@ -279,6 +297,10 @@ sub _export_replace {
if ( $old_dir ne $new_dir ) {
$error ||= "can't change dir";
}
+ if ( join("\n", sort @old_radius_groups) ne
+ join("\n", sort @new_radius_groups) ) {
+ $error ||= "can't change RADIUS groups";
+ }
return $error. ' ('. $self->exporttype. ' to '. $self->machine. ')'
if $error;
}