-#!/usr/bin/perl -Tw
+#!/usr/bin/perl -w
#
-# $Id: svc_acct.export,v 1.2 1998-12-10 07:23:15 ivan Exp $
+# $Id: svc_acct.export,v 1.8 2000-03-06 14:51:27 ivan Exp $
#
# Create and export password files: passwd, passwd.adjunct, shadow,
# acp_passwd, acp_userinfo, acp_dialup, users
# ivan@sisd.com 98-sep-18
#
# $Log: svc_acct.export,v $
-# Revision 1.2 1998-12-10 07:23:15 ivan
+# Revision 1.8 2000-03-06 14:51:27 ivan
+# eek
+#
+# Revision 1.2 1998/12/10 07:23:15 ivan
# use FS::Conf, need user (for datasrc)
#
use strict;
use vars qw($conf);
use Fcntl qw(:flock);
+use IO::Handle;
use FS::Conf;
-use FS::SSH qw(scp ssh);
-use FS::UID qw(adminsuidsetup datasrc);
+use FS::SSH qw(scp ssh sshopen2);
+use FS::UID qw(adminsuidsetup datasrc dbh);
use FS::Record qw(qsearch fields);
use FS::svc_acct;
my @radiusmachines = $conf->config('radiusmachines')
if $conf->exists('radiusmachines');
+my $icradiusmachines = $conf->exists('icradiusmachines');
+my @icradiusmachines = $conf->config('icradiusmachines') if $icradiusmachines;
+my $icradius_mysqldest =
+ $conf->config('icradius_mysqldest') || "/usr/local/var/"
+ if $icradiusmachines;
+my $icradius_mysqlsource =
+ $conf->config('icradius_mysqlsource') || "/usr/local/var/freeside"
+ if $icradiusmachines;
+my $icradius_dbh = dbh; #could eventually get it from a config file if you're
+ #not running MySQL for your Freeside database
+
my(@saltset)= ( 'a'..'z' , 'A'..'Z' , '0'..'9' , '.' , '/' );
require 5.004; #srand(time|$$);
"$spooldir/users",
;
+if ( $icradiusmachines ) {
+ my $sth = $icradius_dbh->prepare("DELETE FROM radcheck");
+ $sth->execute or die "Can't reset radcheck table: ". $sth->errstr;
+}
+
setpriority(0,0,10);
my($svc_acct);
print USERS qq(\n\n);
}
+ ###
+ # ICRADIUS export
+ if ( $icradiusmachines ) {
+ my $sth = $icradius_dbh->prepare(
+ "INSERT INTO radcheck ( id, UserName, Attribute, Value ) VALUES ( ".
+ join(", ", map { $icradius_dbh->quote( $_ ) } (
+ $svc_acct->svcnum,
+ $svc_acct->username,
+ "Password",
+ $svc_acct->_password,
+ ) ). " )"
+ );
+ $sth->execute or die "Can't insert into radcheck table: ". $sth->errstr;
+ }
+
}
}
== 0 or die "ssh error: $!";
}
+foreach my $icradiusmachine ( @icradiusmachines ) {
+ my( $machine, $db, $user, $pass ) = split(/\s+/, $icradiusmachine);
+ chdir $icradius_mysqlsource or die "Can't cd $icradius_mysqlsource: $!";
+ my($reader,$writer)=(new IO::Handle, new IO::Handle);
+ sshopen2("root\@$machine", $reader, $writer, "mysql --user=$user -p $db");
+ print $writer "$pass\nLOCK TABLES radcheck WRITE;\n";
+ foreach my $file ( glob("radcheck.*") ) {
+ scp($file,"root\@$machine:$icradius_mysqldest/$db/$file");
+ }
+ close $writer;
+ close $reader;
+}
+
unlink $spoollock;
flock(EXPORT,LOCK_UN);
close EXPORT;