diff options
author | ivan <ivan> | 2002-06-20 01:29:21 +0000 |
---|---|---|
committer | ivan <ivan> | 2002-06-20 01:29:21 +0000 |
commit | cf6020a0c273d549d33f3e9999bd8b68d9b6d133 (patch) | |
tree | 54cc6041fbcace7167c310eb501b063ae25e075f /FS | |
parent | c5a358f8b8b0c7ac8f627f7042d81f4187bed57f (diff) |
shellcommands w/passwords
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/part_export.pm | 16 | ||||
-rw-r--r-- | FS/FS/part_export/shellcommands.pm | 21 | ||||
-rw-r--r-- | FS/bin/freeside-queued | 2 |
3 files changed, 31 insertions, 8 deletions
diff --git a/FS/FS/part_export.pm b/FS/FS/part_export.pm index 9af00174d..20e3ab474 100644 --- a/FS/FS/part_export.pm +++ b/FS/FS/part_export.pm @@ -526,21 +526,33 @@ tie my %shellcommands_options, 'Tie::IxHash', #'machine' => { label=>'Remote machine' }, 'user' => { label=>'Remote username', default=>'root' }, 'useradd' => { label=>'Insert command', - default=>'useradd -d $dir -m -s $shell -u $uid $username' + default=>'useradd -d $dir -m -s $shell -u $uid $username; passwd $username' #default=>'cp -pr /etc/skel $dir; chown -R $uid.$gid $dir' }, + 'useradd_stdin' => { label=>'Insert command STDIN', + type =>'textarea', + default=>'$_password\n$_password\n', + }, 'userdel' => { label=>'Delete command', default=>'userdel $username', #default=>'rm -rf $dir', }, + 'userdel_stdin' => { label=>'Delete command STDIN', + type =>'textarea', + default=>'', + }, 'usermod' => { label=>'Modify command', - default=>'usermod -d $new_dir -l $new_username -s $new_shell -u $new_uid $old_username', + default=>'usermod -d $new_dir -l $new_username -s $new_shell -u $new_uid $old_username; passwd $new_username', #default=>'[ -d $old_dir ] && mv $old_dir $new_dir || ( '. # 'chmod u+t $old_dir; mkdir $new_dir; cd $old_dir; '. # 'find . -depth -print | cpio -pdm $new_dir; '. # 'chmod u-t $new_dir; chown -R $uid.$gid $new_dir; '. # 'rm -rf $old_dir'. #')' + 'usermod_stdin' => { label=>'Modify command STDIN', + type =>'textarea', + default=>'$_password\n$_password\n', + }, }, ; diff --git a/FS/FS/part_export/shellcommands.pm b/FS/FS/part_export/shellcommands.pm index 7a87bd3e0..870d7f1ee 100644 --- a/FS/FS/part_export/shellcommands.pm +++ b/FS/FS/part_export/shellcommands.pm @@ -20,23 +20,29 @@ sub _export_delete { sub _export_command { my ( $self, $action, $svc_acct) = (shift, shift, shift); my $command = $self->option($action); + my $stdin = $self->option($action."_stdin"); no strict 'refs'; ${$_} = $svc_acct->getfield($_) foreach $svc_acct->fields; $self->shellcommands_queue( $svc_acct->svcnum, - $self->options('user')||'root'. "\@". $self->options('machine'), - eval(qq("$command")) + user => $self->options('user')||'root', + host => $self->options('machine'), + command => eval(qq("$command")), + stdin_string => eval(qq("$stdin")), ); } sub _export_replace { my($self, $new, $old ) = (shift, shift, shift); my $command = $self->option('usermod'); + my $stdin = $self->option('usermod_stdin'); no strict 'refs'; ${"old_$_"} = $old->getfield($_) foreach $old->fields; ${"new_$_"} = $new->getfield($_) foreach $new->fields; $self->shellcommands_queue( $new->svcnum, - $self->options('user')||'root'. "\@". $self->options('machine'), - eval(qq("$command")) + user => $self->options('user')||'root', + host => $self->options('machine'), + command => eval(qq("$command")), + stdin_string => eval(qq("$stdin")), ); } @@ -45,11 +51,16 @@ sub shellcommands_queue { my( $self, $svcnum ) = (shift, shift); my $queue = new FS::queue { 'svcnum' => $svcnum, - 'job' => "Net::SSH::ssh_cmd", #freeside-queued pre-uses... + 'job' => "FS::part_export::shellcommands::ssh_cmd", }; $queue->insert( @_ ); } +sub ssh_cmd { #subroutine, not method + use Net::SSH '0.06'; + &Net::SSH::ssh_cmd( { @_ } ); +} + #sub shellcommands_insert { #subroutine, not method #} #sub shellcommands_replace { #subroutine, not method diff --git a/FS/bin/freeside-queued b/FS/bin/freeside-queued index 846055dc3..48d283a75 100644 --- a/FS/bin/freeside-queued +++ b/FS/bin/freeside-queued @@ -15,7 +15,7 @@ use FS::queue_depend; # no autoloading just yet use FS::cust_main; use FS::svc_acct; -use Net::SSH 0.05; +use Net::SSH 0.06; use FS::part_export; $max_kids = '10'; #guess it should be a config file... |