X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=bin%2Fsvc_acct_sm.export;h=d7a7840f179338d1374bfdcf74172cb430b212d2;hb=6d49710a4eaaa51438b42059c2d97f1d99e7a243;hp=8a38f5d54529b288de05e4914cc00bd2f3f28380;hpb=f30825464928625a2980e9286a28ea7ab91dad64;p=freeside.git diff --git a/bin/svc_acct_sm.export b/bin/svc_acct_sm.export index 8a38f5d54..d7a7840f1 100755 --- a/bin/svc_acct_sm.export +++ b/bin/svc_acct_sm.export @@ -1,6 +1,6 @@ #!/usr/bin/perl -Tw # -# $Id: svc_acct_sm.export,v 1.4 2000-06-29 14:02:29 ivan Exp $ +# $Id: svc_acct_sm.export,v 1.10 2001-05-08 10:44:17 ivan Exp $ # # Create and export config files for sendmail, qmail # @@ -42,7 +42,26 @@ # /var/spool/freeside/conf and sendmail updates ivan@sisd.com 98-aug-14 # # $Log: svc_acct_sm.export,v $ -# Revision 1.4 2000-06-29 14:02:29 ivan +# Revision 1.10 2001-05-08 10:44:17 ivan +# fix for OO Net::SCP +# +# Revision 1.9 2001/04/22 01:56:15 ivan +# get rid of FS::SSH.pm (became Net::SSH and Net::SCP on CPAN) +# +# Revision 1.8 2000/07/06 03:37:24 ivan +# don't error out on invalid svc_acct_sm.domuid's that can't be matched in +# svc_acct.uid - just warn. +# +# Revision 1.7 2000/07/03 09:13:10 ivan +# get rid of double sendmailrestart invocation; no need for multiple sessions +# +# Revision 1.6 2000/07/03 09:09:14 ivan +# typo +# +# Revision 1.5 2000/07/03 09:03:14 ivan +# added sendmailrestart and sendmailconfigpath config files +# +# Revision 1.4 2000/06/29 14:02:29 ivan # add sendmailrestart configuration file # # Revision 1.3 2000/06/12 08:37:56 ivan @@ -55,7 +74,8 @@ use strict; use vars qw($conf); use Fcntl qw(:flock); -use FS::SSH qw(ssh scp); +use Net::SSH qw(ssh); +use Net::SCP qw(scp); use FS::UID qw(adminsuidsetup datasrc); use FS::Record qw(qsearch qsearchs); use FS::svc_acct; @@ -67,15 +87,18 @@ adminsuidsetup $user; $conf = new FS::Conf; -my($shellmachine); -my(@qmailmachines); +my($shellmachine, @qmailmachines); if ( $conf->exists('qmailmachines') ) { $shellmachine = $conf->config('shellmachine'); @qmailmachines = $conf->config('qmailmachines'); } -my @sendmailmachines = $conf->config('sendmailmachines') - if $conf->exists('sendmailmachines'); +my(@sendmailmachines, $sendmailconfigpath, $sendmailrestart); +if ( $conf->exists('sendmailmachines') ) { + @sendmailmachines = $conf->config('sendmailmachines'); + $sendmailconfigpath = $conf->config('sendmailconfigpath') || '/etc'; + $sendmailrestart = $conf->config('sendmailrestart'); +} my $mydomain = $conf->config('domain'); @@ -133,6 +156,11 @@ foreach $svc_acct_sm ( qsearch('svc_acct_sm') ) { ); my($domain)=$domain{$domsvc}; my($svc_acct)=qsearchs('svc_acct',{'uid'=>$domuid}); + unless ( $svc_acct ) { + warn "WARNING: couldn't find svc_acct.uid $domuid (svc_acct_sm.svcnum ". + $svc_acct_sm->svcnum. ") - corruped database?\n"; + next; + } my($username,$dir,$uid,$gid)=( $svc_acct->username, $svc_acct->dir, @@ -186,32 +214,30 @@ close VIRTUALDOMAINS; my($sendmailmachine); foreach $sendmailmachine (@sendmailmachines) { - scp("$spooldir/sendmail.cw","root\@$sendmailmachine:/etc/sendmail.cw.new") - == 0 or die "scp error: $!"; - scp("$spooldir/virtusertable","root\@$sendmailmachine:/etc/virtusertable.new") - == 0 or die "scp error: $!"; + my $scp = new Net::SCP; + $scp->scp("$spooldir/sendmail.cw","root\@$sendmailmachine:$sendmailconfigpath/sendmail.cw.new") + or die "scp error: ". $scp->{errstr}; + $scp->scp("$spooldir/virtusertable","root\@$sendmailmachine:$sendmailconfigpath/virtusertable.new") + or die "scp error: ". $scp->{errstr}; ssh("root\@$sendmailmachine", "( ". - "mv /etc/sendmail.cw.new /etc/sendmail.cw; ". - "mv /etc/virtusertable.new /etc/virtusertable; ". - #"/etc/init.d/sendmail restart; ". + "mv $sendmailconfigpath/sendmail.cw.new $sendmailconfigpath/sendmail.cw; ". + "mv $sendmailconfigpath/virtusertable.new $sendmailconfigpath/virtusertable; ". + $sendmailrestart. " )" ) == 0 or die "ssh error: $!"; - if ( $conf->config('sendmailrestart') ) { - ssh("root\@$sendmailmachine", $conf->config('sendmailrestart') ) - == 0 or die "ssh error: $!"; - } } my($qmailmachine); foreach $qmailmachine (@qmailmachines) { - scp("$spooldir/recipientmap","root\@$qmailmachine:/var/qmail/control/recipientmap") - == 0 or die "scp error: $!"; - scp("$spooldir/virtualdomains","root\@$qmailmachine:/var/qmail/control/virtualdomains") - == 0 or die "scp error: $!"; - scp("$spooldir/rcpthosts","root\@$qmailmachine:/var/qmail/control/rcpthosts") - == 0 or die "scp error: $!"; + my $scp = new Net::SCP; + $scp->scp("$spooldir/recipientmap","root\@$qmailmachine:/var/qmail/control/recipientmap") + or die "scp error: ". $scp->{errstr}; + $scp->scp("$spooldir/virtualdomains","root\@$qmailmachine:/var/qmail/control/virtualdomains") + or die "scp error: ". $scp->{errstr}; + $scp->scp("$spooldir/rcpthosts","root\@$qmailmachine:/var/qmail/control/rcpthosts") + or die "scp error: ". $scp->{errstr}; #ssh("root\@$qmailmachine","/etc/init.d/qmail restart") # == 0 or die "ssh error: $!"; }