#!/usr/bin/perl -Tw
#
-# $Id: svc_acct_sm.export,v 1.2 1998-12-10 07:23:17 ivan Exp $
+# $Id: svc_acct_sm.export,v 1.9 2001-04-22 01:56:15 ivan Exp $
#
# Create and export config files for sendmail, qmail
#
# /var/spool/freeside/conf and sendmail updates ivan@sisd.com 98-aug-14
#
# $Log: svc_acct_sm.export,v $
-# Revision 1.2 1998-12-10 07:23:17 ivan
+# 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
+# sendmail fix from Jeff Finucane
+#
+# Revision 1.2 1998/12/10 07:23:17 ivan
# use FS::Conf, need user (for datasrc)
#
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;
$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');
seek(EXPORT,0,0);
print EXPORT $$,"\n";
-my(@svc_acct_sm)=qsearch('svc_acct_sm',{});
-
( open(RCPTHOSTS,">$spooldir/rcpthosts")
and flock(RCPTHOSTS,LOCK_EX|LOCK_NB)
) or die "Can't open $spooldir/rcpthosts: $!";
);
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,
print RECIPIENTMAP "$domuser\@$domain:$username\@$mydomain\n";
}
- print VIRTUSERTABLE @sendmail;
-
}
+print VIRTUSERTABLE @sendmail;
+
chmod 0644, "$spooldir/sendmail.cw",
"$spooldir/virtusertable",
"$spooldir/rcpthosts",
my($sendmailmachine);
foreach $sendmailmachine (@sendmailmachines) {
- scp("$spooldir/sendmail.cw","root\@$sendmailmachine:/etc/sendmail.cw.new")
+ scp("$spooldir/sendmail.cw","root\@$sendmailmachine:$sendmailconfigpath/sendmail.cw.new")
== 0 or die "scp error: $!";
- scp("$spooldir/virtusertable","root\@$sendmailmachine:/etc/virtusertable.new")
+ scp("$spooldir/virtusertable","root\@$sendmailmachine:$sendmailconfigpath/virtusertable.new")
== 0 or die "scp error: $!";
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: $!";