X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Fwww_shellcommands.pm;h=bef2e9470d99a9bda8fe9467644fa7a675c7d941;hb=a2ecb1cf6a6c084c521710f1256da082f70ba9e5;hp=988d970d433952f8fbd0162cf51c2e16f70215f1;hpb=a2b20c0b505c6f62e3fc36d18de4ea449cb16f6f;p=freeside.git
diff --git a/FS/FS/part_export/www_shellcommands.pm b/FS/FS/part_export/www_shellcommands.pm
index 988d970d4..bef2e9470 100644
--- a/FS/FS/part_export/www_shellcommands.pm
+++ b/FS/FS/part_export/www_shellcommands.pm
@@ -18,6 +18,12 @@ tie my %options, 'Tie::IxHash',
'usermod' => { label=>'Modify command',
default=>'[ -n "$old_zone" ] && rm /var/www/$old_zone; [ "$old_zone" != "$new_zone" -a -n "$new_zone" ] && ( mv $old_homedir/$old_zone $new_homedir/$new_zone; ln -sf $new_homedir/$new_zone /var/www/$new_zone ); [ "$old_username" != "$new_username" ] && chown -R $new_username $new_homedir/$new_zone; ln -sf $new_homedir/$new_zone /var/www/$new_zone',
},
+ 'suspend' => { label=>'Suspension command',
+ default=>'[ -n "$zone" ] && chmod 0 /var/www/$zone',
+ },
+ 'unsuspend'=> { label=>'Unsuspension command',
+ default=>'[ -n "$zone" ] && chmod 755 /var/www/$zone',
+ },
;
%info = (
@@ -26,7 +32,7 @@ tie my %options, 'Tie::IxHash',
'options' => \%options,
'notes' => <<'END'
Run remote commands via SSH, for virtual web sites. You will need to
-setup SSH for unattended operation.
+setup SSH for unattended operation.
Use these buttons for some useful presets:
new_
or old_
for replace operations):
@@ -78,6 +90,16 @@ sub _export_delete {
$self->_export_command('userdel', @_);
}
+sub _export_suspend {
+ my($self) = shift;
+ $self->_export_command('suspend', @_);
+}
+
+sub _export_unsuspend {
+ my($self) = shift;
+ $self->_export_command('unsuspend', @_);
+}
+
sub _export_command {
my ( $self, $action, $svc_www) = (shift, shift, shift);
my $command = $self->option($action);
@@ -155,14 +177,15 @@ sub shellcommands_queue {
}
sub ssh_cmd { #subroutine, not method
- use Net::SSH '0.08';
- &Net::SSH::ssh_cmd( { @_ } );
+ use Net::OpenSSH;
+ my $opt = { @_ };
+ my $ssh = Net::OpenSSH->new($opt->{'user'}.'@'.$opt->{'host'});
+ die "Couldn't establish SSH connection: ". $ssh->error if $ssh->error;
+ my ($output, $errput) = $ssh->capture2($opt->{'command'});
+ die "Error running SSH command: ". $ssh->error if $ssh->error;
+ die $errput if $errput;
+ die $output if $output;
+ '';
}
-#sub shellcommands_insert { #subroutine, not method
-#}
-#sub shellcommands_replace { #subroutine, not method
-#}
-#sub shellcommands_delete { #subroutine, not method
-#}
-
+1;