X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Fradiator.pm;h=669e3d41c8c9be8028e4f13f3972386cc4fa3108;hb=fcce61390d750f98bd82e84d4664ae9c03202be2;hp=95f0a0b016b82d43a0733ea592edbe899a4b887f;hpb=673b9a458d9138523026963df6fa3b4683e09bae;p=freeside.git
diff --git a/FS/FS/part_export/radiator.pm b/FS/FS/part_export/radiator.pm
index 95f0a0b01..669e3d41c 100644
--- a/FS/FS/part_export/radiator.pm
+++ b/FS/FS/part_export/radiator.pm
@@ -3,6 +3,7 @@ package FS::part_export::radiator;
use vars qw(@ISA %info $radusers);
use Tie::IxHash;
use FS::part_export::sqlradius;
+use FS::DBI;
tie my %options, 'Tie::IxHash', %FS::part_export::sqlradius::options;
@@ -11,6 +12,8 @@ tie my %options, 'Tie::IxHash', %FS::part_export::sqlradius::options;
'desc' => 'Real-time export to RADIATOR',
'options' => \%options,
'nodomain' => '',
+ 'no_machine' => 1,
+ 'default_svc_class' => 'Internet',
'notes' => <<'END',
Real-time export of the radusers table to any SQL database in
Radiator-native format.
@@ -68,17 +71,34 @@ sub _radiator_hash {
my( $self, $svc_acct ) = @_;
my %hash = (
'username' => $self->export_username($svc_acct),
- 'pass_word' => $svc_acct->_password,
+ 'pass_word' => $svc_acct->crypt_password,
'fullname' => $svc_acct->finger,
map { my $method = "radius_$_"; $_ => $svc_acct->$method(); }
qw( framed_filter_id framed_mtu framed_netmask framed_protocol
framed_routing login_host login_service login_tcp_port )
);
- $hash{timeleft} = $svc_acct->seconds
+ $hash{'timeleft'} = $svc_acct->seconds
if $svc_acct->seconds =~ /^\d+$/;
- $hash{staticaddress} = $svc_acct->slipip
+ $hash{'staticaddress'} = $svc_acct->slipip
if $svc_acct->slipip =~ /^[\d\.]+$/; # and $self->slipip ne '0.0.0.0';
+ $hash{'servicename'} = ( $svc_acct->radius_groups )[0];
+
+ my $cust_pkg = $svc_acct->cust_svc->cust_pkg;
+ $hash{'validto'} = $cust_pkg->bill
+ if $cust_pkg && $cust_pkg->part_pkg->is_prepaid && $cust_pkg->bill;
+
+ #some other random stuff, should probably be attributes or virtual fields
+ #$hash{'state'} = 0; #only inserts
+ #$hash{'badlogins'} = 0; #only inserts
+ $hash{'maxlogins'} = 1;
+ $hash{'addeddate'} = $cust_pkg->setup
+ if $cust_pkg && $cust_pkg->setup;
+ $hash{'validfrom'} = $cust_pkg->last_bill || $cust_pkg->setup
+ if $cust_pkg && ( $cust_pkg->last_bill || $cust_pkg->setup );
+ $hash{'state'} = $cust_pkg->susp ? 1 : 0
+ if $cust_pkg;
+
%hash;
}
@@ -99,6 +119,8 @@ sub radiator_queue {
sub radiator_insert { #subroutine, not method
my $dbh = radiator_connect(shift, shift, shift);
my %hash = @_;
+ $hash{'state'} = 0; #see "random stuff" above
+ $hash{'badlogins'} = 0; #see "random stuff" above
my $sth = $dbh->prepare(
"INSERT INTO $radusers ( ". join(', ', keys %hash ). ' ) '.
@@ -142,7 +164,7 @@ sub radiator_delete { #subroutine, not method
sub radiator_connect {
#my($datasrc, $username, $password) = @_;
#DBI->connect($datasrc, $username, $password) or die $DBI::errstr;
- DBI->connect(@_) or die $DBI::errstr;
+ FS::DBI->connect(@_) or die $FS::DBI::errstr;
}
1;