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=0e50d607c4d411f23784d13b592f73c6a31fcbb1;hb=1ad547a47f16b4230762e752fbe48d460ed997e1;hpb=b8cfd0780aa40bb07f3215bf9cb58011f5e32a35 diff --git a/FS/FS/part_export/www_shellcommands.pm b/FS/FS/part_export/www_shellcommands.pm index 0e50d607c..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): @@ -57,6 +69,7 @@ The following variables are available for interpolation (prefixed with
  • $bare_zone - just the zone of this virtual host, without the domain portion
  • $domain - base domain
  • $username +
  • $_password
  • $homedir
  • All other fields in svc_www are also available. @@ -77,9 +90,20 @@ 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); + return '' if $command =~ /^\s*$/; #set variable for the command no strict 'vars'; @@ -153,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;