#!/usr/bin/perl -w
#
-# $Id: svc_acct.export,v 1.25 2001-10-16 20:33:02 jeff Exp $
+# $Id: svc_acct.export,v 1.33 2002-02-18 00:13:57 jeff Exp $
#
# Create and export password, radius and vpopmail password files:
# passwd, passwd.adjunct, shadow, acp_passwd, acp_userinfo, acp_dialup
use FS::svc_domain;
use FS::svc_forward;
+my $ssh='ssh';
+my $rsync='rsync';
+
my $user = shift or die &usage;
adminsuidsetup $user;
warn "using depriciated textradiusprepend file" if $textradiusprepend;
+
+my $radiusprepend =
+ $conf->exists('radiusprepend')
+ ? join("\n", $conf->config('radiusprepend'))
+ : '';
+
my @vpopmailmachines = $conf->config('vpopmailmachines')
if $conf->exists('vpopmailmachines');
my $vpopmailrestart = '';
setpriority(0,0,10);
+print USERS "$radiusprepend\n";
+
my %usernames; ## this hack helps keep the passwd files sane
my @sendmail;
foreach $svc_acct (qsearch('svc_acct', {'domsvc' => $svc_domain->svcnum})) {
my($password)=$svc_acct->getfield('_password');
my($cpassword,$rpassword);
- if ( ( length($password) <= 8 )
+ #if ( ( length($password) <= 8 )
+ if ( ( length($password) <= 12 )
&& ( $password ne '*' )
&& ( $password ne '!!' )
&& ( $password ne '' )
$username=$svc_acct->username . $svc_acct->domsvc;
} elsif ($userpolicy =~ /^append domain$/) {
$username=$svc_acct->username . $svc_domain->domain;
+ } elsif ($userpolicy =~ /^append domain$/) {
+ $username=$svc_acct->username . $svc_domain->domain;
+ } elsif ($userpolicy =~ /^append \@domain$/) {
+ $username=$svc_acct->username . '@'. $svc_domain->domain;
} else {
die "Unknown policy in username_policy\n";
}
'',
), "\n";
}
+ }
- ###
- # FORMAT OF THE VPASSWD FILE HERE
- print VPASSWD join(":",
- $svc_acct->username,
- $cpassword,
- '1',
- '0',
- $svc_acct->username,
- "$vpopdir/domains/" . $svc_domain->domain ."/" . $svc_acct->username,
- 'NOQUOTA',
- ), "\n";
+ ###
+ # FORMAT OF THE VPASSWD FILE HERE
+ print VPASSWD join(":",
+ $svc_acct->username,
+ $cpassword,
+ '1',
+ '0',
+ $svc_acct->username,
+ "$vpopdir/domains/" . $svc_domain->domain ."/" . $svc_acct->username,
+ 'NOQUOTA',
+ ), "\n";
- }
if ( $svc_acct->slipip ne '' ) {
ssh("root\@$bsdshellmachine",
"( ".
"mv /etc/passwd.new /etc/passwd; ".
- "mv /etc/master.passwd.new /etc/master.passwd; ".
+ #"mv /etc/master.passwd.new /etc/master.passwd; ".
+ "pwd_mkdb /etc/master.passwd.new; ".
" )"
)
== 0 or die "ssh error: $!";
close WRITER;
}
-my @args = ("/bin/tar", "c", "--force-local", "-C", "$spooldir", "-f", "$spooldir/vpoptarball", "domains");
+#my @args = ("/bin/tar", "c", "--force-local", "-C", "$spooldir", "-f", "$spooldir/vpoptarball", "domains");
-system {$args[0]} @args;
+#system {$args[0]} @args;
my($vpopmailmachine);
foreach $vpopmailmachine (@vpopmailmachines) {
my ($machine, $vpopdir, $vpopuid, $vpopgid) = split (/\s+/, $vpopmailmachine);
my $scp = new Net::SCP;
- $scp->scp("$spooldir/vpoptarball","root\@$machine:vpoptarball")
- or die "scp error: ". $scp->{errstr};
- ssh("root\@$machine",
- "( ".
- "tar xf vpoptarball; ".
- "chown -R $vpopuid:$vpopgid domains; ".
- "tar cf vpoptarball domains; ".
- "cd $vpopdir; ".
- "tar xf ~/vpoptarball; ".
- " )"
- )
- == 0 or die "ssh error: $!";
+# $scp->scp("$spooldir/vpoptarball","root\@$machine:vpoptarball")
+# or die "scp error: ". $scp->{errstr};
+# ssh("root\@$machine",
+# "( ".
+# "rm -rf domains; ".
+# "tar xf vpoptarball; ".
+# "chown -R $vpopuid:$vpopgid domains; ".
+# "tar cf vpoptarball domains; ".
+# "cd $vpopdir; ".
+# "tar xf ~/vpoptarball; ".
+# " )"
+# )
+# == 0 or die "ssh error: $!";
+
+ chdir $spooldir;
+ my @args = ("$rsync", "-rlpt", "-e", "$ssh", "domains/", "vpopmail\@$machine:$vpopdir/domains/");
+
+ system {$args[0]} @args;
$scp->scp("$spooldir/assign","root\@$machine:/var/qmail/users/assign")
or die "scp error: ". $scp->{errstr};