merging vpopmail support branch
[freeside.git] / bin / svc_acct_sm.export
diff --git a/bin/svc_acct_sm.export b/bin/svc_acct_sm.export
deleted file mode 100755 (executable)
index d7a7840..0000000
+++ /dev/null
@@ -1,254 +0,0 @@
-#!/usr/bin/perl -Tw
-#
-# $Id: svc_acct_sm.export,v 1.10 2001-05-08 10:44:17 ivan Exp $
-# 
-# Create and export config files for sendmail, qmail
-#
-# (used to) Create and export VoiceNet_quasar.m4
-#
-# ivan@voicenet.com late oct 96
-#
-# change priority (after copies) to 19, not 10
-# ivan@voicenet.com 97-feb-5
-#
-# put file in different place and run different script, as per matt and
-# mohamed
-# ivan@voicenet.com 97-mar-10
-#
-# added exit if stuff is already locked ivan@voicenet.com 97-apr-15
-#
-# removed mail2
-# ivan@voicenet.com 97-jul-10
-#
-# rewrote lots of the bits, now exports qmail "virtualdomain",
-# "recipientmap" and "rcpthosts" files as well
-#
-# ivan@voicenet.com 97-sep-4
-#
-# adds ".extra" files
-#
-# ivan@voicenet.com 97-sep-29
-#
-# added ".pp" files, ugh.
-#
-# ivan@voicenet.com 97-oct-1
-#
-# rewrite ivan@sisd.com 98-mar-9
-#
-# now can create .qmail-default files ivan@sisd.com 98-mar-10
-#
-# put example $my_domain declaration in ivan@sisd.com 98-mar-23
-#
-# /var/spool/freeside/conf and sendmail updates ivan@sisd.com 98-aug-14
-#
-# $Log: svc_acct_sm.export,v $
-# 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
-# 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 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;
-use FS::svc_acct_sm;
-use FS::svc_domain;
-
-my $user = shift or die &usage;
-adminsuidsetup $user;
-
-$conf = new FS::Conf;
-
-my($shellmachine, @qmailmachines);
-if ( $conf->exists('qmailmachines') ) {
-  $shellmachine = $conf->config('shellmachine');
-  @qmailmachines = $conf->config('qmailmachines');
-}
-
-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');
-
-my $spooldir = "/usr/local/etc/freeside/export.". datasrc;
-my $spoollock = "/usr/local/etc/freeside/svc_acct_sm.export.lock.". datasrc;
-
-umask 066;
-
-open(EXPORT,"+>>$spoollock") or die "Can't open $spoollock: $!";
-select(EXPORT); $|=1; select(STDOUT);
-unless ( flock(EXPORT,LOCK_EX|LOCK_NB) ) {
-  seek(EXPORT,0,0);
-  my($pid)=<EXPORT>;
-  chop($pid);
-  #no reason to start locks of blocking processes
-  die "Is another export process running under pid $pid?\n";
-}
-seek(EXPORT,0,0);
-print EXPORT $$,"\n";
-
-( open(RCPTHOSTS,">$spooldir/rcpthosts")
-  and flock(RCPTHOSTS,LOCK_EX|LOCK_NB) 
-) or die "Can't open $spooldir/rcpthosts: $!";
-( open(RECIPIENTMAP,">$spooldir/recipientmap") 
-  and flock(RECIPIENTMAP,LOCK_EX|LOCK_NB) 
-) or die "Can't open $spooldir/recipientmap: $!";
-( open(VIRTUALDOMAINS,">$spooldir/virtualdomains") 
-  and flock(VIRTUALDOMAINS,LOCK_EX|LOCK_NB)
-) or die "Can't open $spooldir/virtualdomains: $!";
-( open(VIRTUSERTABLE,">$spooldir/virtusertable")
-  and flock(VIRTUSERTABLE,LOCK_EX|LOCK_NB)
-) or die "Can't open $spooldir/virtusertable: $!";
-( open(SENDMAIL_CW,">$spooldir/sendmail.cw")
-  and flock(SENDMAIL_CW,LOCK_EX|LOCK_NB)
-) or die "Can't open $spooldir/sendmail.cw: $!";
-
-setpriority(0,0,10);
-
-my($svc_domain,%domain);
-foreach $svc_domain ( qsearch('svc_domain',{}) ) {
-  my($domain)=$svc_domain->domain;
-  $domain{$svc_domain->svcnum}=$domain;
-  print RCPTHOSTS "$domain\n.$domain\n";
-  print SENDMAIL_CW "$domain\n";
-}
-
-my(@sendmail);
-
-my($svc_acct_sm);
-foreach $svc_acct_sm ( qsearch('svc_acct_sm') ) { 
-  my($domsvc,$domuid,$domuser)=(
-    $svc_acct_sm->domsvc,
-    $svc_acct_sm->domuid,
-    $svc_acct_sm->domuser,
-  );
-  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,
-    $svc_acct->uid,
-    $svc_acct->gid,
-  );
-  next unless $username && $domain && $domuser;
-
-  if ($domuser eq '*') {
-    push @sendmail, "\@$domain\t$username\n";
-    print VIRTUALDOMAINS "$domain:$username-$domain\n",
-                         ".$domain:$username-$domain\n",
-    ;
-    ###
-    # qmail
-    ssh("root\@$shellmachine",
-      "[ -e $dir/.qmail-default ] || { touch $dir/.qmail-default; chown $uid:$gid $dir/.qmail-default; }"
-    ) if ( $shellmachine && $dir && $uid );
-
-  } else {
-    print VIRTUSERTABLE "$domuser\@$domain\t$username\n";
-    print RECIPIENTMAP "$domuser\@$domain:$username\@$mydomain\n";
-  }
-
-}
-
-print VIRTUSERTABLE @sendmail;
-
-chmod 0644, "$spooldir/sendmail.cw",
-            "$spooldir/virtusertable",
-            "$spooldir/rcpthosts",
-            "$spooldir/recipientmap",
-            "$spooldir/virtualdomains",
-;
-
-flock(SENDMAIL_CW,LOCK_UN);
-flock(VIRTUSERTABLE,LOCK_UN);
-flock(RCPTHOSTS,LOCK_UN);
-flock(RECIPIENTMAP,LOCK_UN);
-flock(VIRTUALDOMAINS,LOCK_UN);
-
-close SENDMAIL_CW;
-close VIRTUSERTABLE;
-close RCPTHOSTS;
-close RECIPIENTMAP;
-close VIRTUALDOMAINS;
-
-###
-# export stuff
-#
-
-my($sendmailmachine);
-foreach $sendmailmachine (@sendmailmachines) {
-  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 $sendmailconfigpath/sendmail.cw.new $sendmailconfigpath/sendmail.cw; ".
-      "mv $sendmailconfigpath/virtusertable.new $sendmailconfigpath/virtusertable; ".
-      $sendmailrestart.
-    " )"
-  )
-    == 0 or die "ssh error: $!";
-}
-
-my($qmailmachine);
-foreach $qmailmachine (@qmailmachines) {
-  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: $!";
-}
-
-unlink $spoollock;
-flock(EXPORT,LOCK_UN);
-close EXPORT;
-
-#
-
-sub usage {
-  die "Usage:\n\n  svc_acct.export user\n";
-}
-