X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=bin%2Fsvc_acct.export;h=11178c962924a2a91346d5db594ab29be05df6d3;hp=8c408a2e8d5b86b9d8d4099cf704c1418aaf23df;hb=b35b650a6078d645d6f97620f3c79ae941915dd9;hpb=03dcc6e0f48fae0b892dbd36229884e684b94049 diff --git a/bin/svc_acct.export b/bin/svc_acct.export index 8c408a2e8..11178c962 100755 --- a/bin/svc_acct.export +++ b/bin/svc_acct.export @@ -1,6 +1,6 @@ #!/usr/bin/perl -w # -# $Id: svc_acct.export,v 1.27 2001-12-11 10:38:56 ivan 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 @@ -22,6 +22,9 @@ use FS::svc_acct; use FS::svc_domain; use FS::svc_forward; +my $ssh='ssh'; +my $rsync='rsync'; + my $user = shift or die &usage; adminsuidsetup $user; @@ -71,7 +74,7 @@ warn "using depriciated textradiusprepend file" if $textradiusprepend; my $radiusprepend = $conf->exists('radiusprepend') - ? $conf->config('radiusprepend') + ? join("\n", $conf->config('radiusprepend')) : ''; my @vpopmailmachines = $conf->config('vpopmailmachines') @@ -287,6 +290,10 @@ foreach $svc_domain (sort {$a->domain cmp $b->domain} @svc_domain) { $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"; } @@ -346,20 +353,20 @@ foreach $svc_domain (sort {$a->domain cmp $b->domain} @svc_domain) { '', ), "\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 '' ) { @@ -573,7 +580,8 @@ foreach $bsdshellmachine (@bsdshellmachines) { 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: $!"; @@ -643,26 +651,32 @@ foreach my $icradiusmachine ( @icradiusmachines ) { 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};