summaryrefslogtreecommitdiff
path: root/bin/svc_acct.export
diff options
context:
space:
mode:
authorivan <ivan>2000-03-06 14:12:57 +0000
committerivan <ivan>2000-03-06 14:12:57 +0000
commit236d0a0f93ffa2f7609f930c8af2c507741060ad (patch)
tree5ee46c4700b8d936c23b42e88b75a30668564372 /bin/svc_acct.export
parent147a12d9488e975954d8c3ced9fba08391922f13 (diff)
ICRADIUS export support
Diffstat (limited to 'bin/svc_acct.export')
-rwxr-xr-xbin/svc_acct.export56
1 files changed, 52 insertions, 4 deletions
diff --git a/bin/svc_acct.export b/bin/svc_acct.export
index d4ebe6bdc..8cdccda1f 100755
--- a/bin/svc_acct.export
+++ b/bin/svc_acct.export
@@ -1,6 +1,6 @@
#!/usr/bin/perl -Tw
#
-# $Id: svc_acct.export,v 1.2 1998-12-10 07:23:15 ivan Exp $
+# $Id: svc_acct.export,v 1.3 2000-03-06 14:12:57 ivan Exp $
#
# Create and export password files: passwd, passwd.adjunct, shadow,
# acp_passwd, acp_userinfo, acp_dialup, users
@@ -38,16 +38,20 @@
# ivan@sisd.com 98-sep-18
#
# $Log: svc_acct.export,v $
-# Revision 1.2 1998-12-10 07:23:15 ivan
+# Revision 1.3 2000-03-06 14:12:57 ivan
+# ICRADIUS export support
+#
+# 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;
@@ -71,6 +75,17 @@ my @erpcdmachines = $conf->config('erpcdmachines')
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/radius"
+ 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|$$);
@@ -119,6 +134,11 @@ chmod 0600, "$spooldir/master.passwd",
"$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);
@@ -226,6 +246,21 @@ foreach $svc_acct (@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( $_ ) } qw (
+ $svc_acct->svcnum
+ $svc_acct->username
+ "Password"
+ $svc_acct->_password
+ ) ). " )"
+ );
+ $sth->execute or die "Can't insert into radcheck table: ". $sth->errstr;
+ }
+
}
}
@@ -318,6 +353,19 @@ foreach $radiusmachine (@radiusmachines) {
== 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\@$icradiusmachine:$icradius_mysqldest/$file");
+ }
+ close $writer;
+ close $reader;
+}
+
unlink $spoollock;
flock(EXPORT,LOCK_UN);
close EXPORT;