From 76e9abe03157deaa2a5ec7253624c9a59464b8fc Mon Sep 17 00:00:00 2001 From: ivan Date: Thu, 27 Jun 2002 09:19:33 +0000 Subject: [PATCH 1/1] export updates --- FS/FS/part_export/bsdshell.pm | 47 +---------------------- FS/FS/part_export/null.pm | 13 +++++++ FS/FS/part_export/sysvshell.pm | 7 ++++ FS/FS/part_export/www_shellcommands.pm | 70 ++++++++++++++++++++++++++++++++++ FS/t/part_export-null.t | 5 +++ FS/t/part_export-sysvshell.t | 5 +++ FS/t/part_export-www_shellcommands.t | 5 +++ 7 files changed, 107 insertions(+), 45 deletions(-) create mode 100644 FS/FS/part_export/null.pm create mode 100644 FS/FS/part_export/sysvshell.pm create mode 100644 FS/FS/part_export/www_shellcommands.pm create mode 100644 FS/t/part_export-null.t create mode 100644 FS/t/part_export-sysvshell.t create mode 100644 FS/t/part_export-www_shellcommands.t diff --git a/FS/FS/part_export/bsdshell.pm b/FS/FS/part_export/bsdshell.pm index 4a890d051..06642097f 100644 --- a/FS/FS/part_export/bsdshell.pm +++ b/FS/FS/part_export/bsdshell.pm @@ -1,50 +1,7 @@ package FS::part_export::bsdshell; use vars qw(@ISA); -use FS::part_export; +use FS::part_export::null; -@ISA = qw(FS::part_export); - -sub rebless { shift; } - -sub _export_insert { - my($self, $svc_acct) = (shift, shift); - $err_or_queue = $self->bsdshell_queue( $svc_acct->svcnum, 'insert', - $svc_acct->username, $svc_acct->_password ); - ref($err_or_queue) ? '' : $err_or_queue; -} - -sub _export_replace { - my( $self, $new, $old ) = (shift, shift, shift); - #return "can't change username with bsdshell" - # if $old->username ne $new->username; - #return '' unless $old->_password ne $new->_password; - $err_or_queue = $self->bsdshell_queue( $new->svcnum, - 'replace', $new->username, $new->_password ); - ref($err_or_queue) ? '' : $err_or_queue; -} - -sub _export_delete { - my( $self, $svc_acct ) = (shift, shift); - $err_or_queue = $self->bsdshell_queue( $svc_acct->svcnum, - 'delete', $svc_acct->username ); - ref($err_or_queue) ? '' : $err_or_queue; -} - -#a good idea to queue anything that could fail or take any time -sub bsdshell_queue { - my( $self, $svcnum, $method ) = (shift, shift, shift); - my $queue = new FS::queue { - 'svcnum' => $svcnum, - 'job' => "FS::part_export::bsdshell::bsdshell_$method", - }; - $queue->insert( @_ ) or $queue; -} - -sub bsdshell_insert { #subroutine, not method -} -sub bsdshell_replace { #subroutine, not method -} -sub bsdshell_delete { #subroutine, not method -} +@ISA = qw(FS::part_export::null); diff --git a/FS/FS/part_export/null.pm b/FS/FS/part_export/null.pm new file mode 100644 index 000000000..0145af3a4 --- /dev/null +++ b/FS/FS/part_export/null.pm @@ -0,0 +1,13 @@ +package FS::part_export::null; + +use vars qw(@ISA); +use FS::part_export; + +@ISA = qw(FS::part_export); + +sub rebless { shift; } + +sub _export_insert {} +sub _export_replace {} +sub _export_delete {} + diff --git a/FS/FS/part_export/sysvshell.pm b/FS/FS/part_export/sysvshell.pm new file mode 100644 index 000000000..f3f6b34b6 --- /dev/null +++ b/FS/FS/part_export/sysvshell.pm @@ -0,0 +1,7 @@ +package FS::part_export::sysvshell; + +use vars qw(@ISA); +use FS::part_export::null; + +@ISA = qw(FS::part_export::null); + diff --git a/FS/FS/part_export/www_shellcommands.pm b/FS/FS/part_export/www_shellcommands.pm new file mode 100644 index 000000000..870d7f1ee --- /dev/null +++ b/FS/FS/part_export/www_shellcommands.pm @@ -0,0 +1,70 @@ +package FS::part_export::shellcommands; + +use vars qw(@ISA); +use FS::part_export; + +@ISA = qw(FS::part_export); + +sub rebless { shift; } + +sub _export_insert { + my($self) = shift; + $self->_export_command('useradd', @_); +} + +sub _export_delete { + my($self) = shift; + $self->_export_command('userdel', @_); +} + +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, + 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, + user => $self->options('user')||'root', + host => $self->options('machine'), + command => eval(qq("$command")), + stdin_string => eval(qq("$stdin")), + ); +} + +#a good idea to queue anything that could fail or take any time +sub shellcommands_queue { + my( $self, $svcnum ) = (shift, shift); + my $queue = new FS::queue { + 'svcnum' => $svcnum, + '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 +#} +#sub shellcommands_delete { #subroutine, not method +#} + diff --git a/FS/t/part_export-null.t b/FS/t/part_export-null.t new file mode 100644 index 000000000..055cdcee6 --- /dev/null +++ b/FS/t/part_export-null.t @@ -0,0 +1,5 @@ +BEGIN { $| = 1; print "1..1\n" } +END {print "not ok 1\n" unless $loaded;} +use FS::part_export::null; +$loaded=1; +print "ok 1\n"; diff --git a/FS/t/part_export-sysvshell.t b/FS/t/part_export-sysvshell.t new file mode 100644 index 000000000..7fc24acb1 --- /dev/null +++ b/FS/t/part_export-sysvshell.t @@ -0,0 +1,5 @@ +BEGIN { $| = 1; print "1..1\n" } +END {print "not ok 1\n" unless $loaded;} +use FS::part_export::sysvshell; +$loaded=1; +print "ok 1\n"; diff --git a/FS/t/part_export-www_shellcommands.t b/FS/t/part_export-www_shellcommands.t new file mode 100644 index 000000000..2ea79cf97 --- /dev/null +++ b/FS/t/part_export-www_shellcommands.t @@ -0,0 +1,5 @@ +BEGIN { $| = 1; print "1..1\n" } +END {print "not ok 1\n" unless $loaded;} +use FS::part_export::www_shellcommands; +$loaded=1; +print "ok 1\n"; -- 2.11.0