X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=bin%2Fsqlradius.import;h=e75f65b17c9cb1aea66f8696824e1da2b1b8c451;hp=120cbf373ddf13c50bcd4361f004cf72b853b884;hb=f2e9d8413d6178a6248c8b5d47ac06b1d1f12cb5;hpb=cf9f008216028a4140208f0b26bba773c01fc5a2 diff --git a/bin/sqlradius.import b/bin/sqlradius.import index 120cbf373..e75f65b17 100644 --- a/bin/sqlradius.import +++ b/bin/sqlradius.import @@ -17,6 +17,7 @@ adminsuidsetup $user; #push @FS::svc_acct::shells, qw(/bin/sync /sbin/shutdown /bin/halt /sbin/halt); #others? $FS::svc_Common::noexport_hack = 1; +$FS::svc_domain::whois_hack = 1; ### @@ -47,7 +48,7 @@ sub menu_svc { ( join "\n", map "$_: ".$part_svc{$_}->svc, sort keys %part_svc ). "\n"; } sub menu_domain_svc { - ( join "\n", map "$_: ".$part_svc{$_}->svc, sort keys %domain_part_svc ). "\n"; + ( join "\n", map "$_: ".$domain_part_svc{$_}->svc, sort keys %domain_part_svc ). "\n"; } sub getpart { $^W=0; # Term::Query isn't -w-safe @@ -81,22 +82,24 @@ my $sth = $dbh->prepare('SELECT DISTINCT UserName, Realm FROM radcheck') $sth->execute or die $sth->errstr; my $row; -while ( $row = $sth->fetchrow_arrayref ) { +while ( defined ( $row = $sth->fetchrow_arrayref ) ) { my( $r_username, $realm ) = @$row; my( $username, $domain ); - if ( $r_username =~ s/([^@]+)\@([^@]+)$// ) { + if ( $r_username =~ /^([^@]+)\@([^@]+)$/ ) { $username = $1; $domain = $2; } else { $username = $r_username; $domain = $realm; } - my %svc_domain = ( 'svcpart' => $domain_svcpart, - 'domain' => $domain, ); - my $svc_domain = qsearchs('svc_domain', \%svc_domain ) - || new FS::svc_domain \%svc_domain; - unless ( $svc_domain->domsvc ) { + my $svc_domain = qsearchs('svc_domain', { 'domain' => $domain } ) + || new FS::svc_domain { + 'domain' => $domain, + 'svcpart' => $domain_svcpart, + 'action' => 'N', + }; + unless ( $svc_domain->svcnum ) { my $error = $svc_domain->insert; if ( $error ) { die "can't insert domain $domain: $error\n"; @@ -113,8 +116,8 @@ while ( $row = $sth->fetchrow_arrayref ) { $rc_sth->execute($r_username, $realm) or die $rc_sth->errstr; foreach my $rc_row ( @{$rc_sth->fetchall_arrayref} ) { - my($attribute, $value, $name, $groupname) = @$row; - if ( $attribute =~ /^(Crypt-)?Password$/ ) { + my($attribute, $value, $name, $groupname) = @$rc_row; + if ( $attribute =~ /^((User|Crypt)-)?Password$/ ) { $password = $value; $finger = $name; $group = $groupname; @@ -123,22 +126,21 @@ while ( $row = $sth->fetchrow_arrayref ) { } } - my $svc_acct = new FS::svc_acct ( + my $svc_acct = new FS::svc_acct { 'svcpart' => $sqlradius_svcpart, 'username' => $username, - 'domsvc' => $svc_domain->domsvc, + 'domsvc' => $svc_domain->svcnum, '_password' => $password, 'finger' => $finger, - ); + }; - my($error); - #$error = $svc_acct->insert; - $error = $svc_acct->check; + my $error = $svc_acct->insert; + #my $error = $svc_acct->check; if ( $error ) { if ( $error =~ /duplicate/i ) { - warn "$r_username: $error"; + warn "$r_username / $realm: $error"; } else { - die "$r_username: $error"; + die "$r_username / $realm: $error"; } }