X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Fwww_shellcommands.pm;h=bef2e9470d99a9bda8fe9467644fa7a675c7d941;hp=988d970d433952f8fbd0162cf51c2e16f70215f1;hb=1ad547a47f16b4230762e752fbe48d460ed997e1;hpb=a2b20c0b505c6f62e3fc36d18de4ea449cb16f6f 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: The following variables are available for interpolation (prefixed with 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;