X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=FS%2FFS%2Fpart_export%2Fsqlradius.pm;h=63927780bdc87307496c005b06819b3831cc16ae;hb=48ba2845d0119c56971d5b724661aa37e73b49dd;hp=85e5969fcdd6461225fbb9a434a8e6153ab2b964;hpb=049da6c538c952f938af4544a07c688b89c26a17;p=freeside.git diff --git a/FS/FS/part_export/sqlradius.pm b/FS/FS/part_export/sqlradius.pm index 85e5969fc..63927780b 100644 --- a/FS/FS/part_export/sqlradius.pm +++ b/FS/FS/part_export/sqlradius.pm @@ -12,8 +12,20 @@ tie %options, 'Tie::IxHash', 'username' => { label=>'Database username' }, 'password' => { label=>'Database password' }, 'ignore_accounting' => { - type => 'checkbox', - label=>'Ignore accounting records from this database' + type => 'checkbox', + label => 'Ignore accounting records from this database' + }, + 'hide_ip' => { + type => 'checkbox', + label => 'Hide IP address information on session reports', + }, + 'hide_data' => { + type => 'checkbox', + label => 'Hide download/upload information on session reports', + }, + 'show_called_station' => { + type => 'checkbox', + label => 'Show the Called-Station-ID on session reports', }, ; @@ -335,7 +347,7 @@ sub sqlradius_connect { #-- -=item usage_sessions TIMESTAMP_START TIMESTAMP_END [ SVC_ACCT [ IP [ SQL_SELECT ] ] ] +=item usage_sessions TIMESTAMP_START TIMESTAMP_END [ SVC_ACCT [ IP [ PREFIX [ SQL_SELECT ] ] ] ] TIMESTAMP_START and TIMESTAMP_END are specified as UNIX timestamps; see L. Also see L and L for conversion @@ -345,6 +357,9 @@ SVC_ACCT, if specified, limits the results to the specified account. IP, if specified, limits the results to the specified IP address. +PREFIX, if specified, limits the results to records with a matching +Called-Station-ID. + #SQL_SELECT defaults to * if unspecified. It can be useful to set it to #SUM(acctsessiontime) or SUM(AcctInputOctets), etc. @@ -367,6 +382,8 @@ Returns an arrayref of hashrefs with the following fields: =item acctoutputoctets +=item calledstationid + =back =cut @@ -377,11 +394,12 @@ sub usage_sessions { my( $self, $start, $end ) = splice(@_, 0, 3); my $svc_acct = @_ ? shift : ''; my $ip = @_ ? shift : ''; + my $prefix = @_ ? shift : ''; #my $select = @_ ? shift : '*'; $end ||= 2147483647; - return () if $self->option('ignore_accounting'); + return [] if $self->option('ignore_accounting'); my $dbh = sqlradius_connect( map $self->option($_), qw( datasrc username password ) ); @@ -401,6 +419,7 @@ sub usage_sessions { my @fields = ( qw( username realm framedipaddress acctsessiontime acctinputoctets acctoutputoctets + calledstationid ), "$str2time acctstarttime ) as acctstarttime", "$str2time acctstoptime ) as acctstoptime", @@ -425,6 +444,11 @@ sub usage_sessions { push @param, $ip; } + if ( length($prefix) ) { + #assume sip: for now, else things get ugly trying to match /^\w+:$prefix/ + $where .= " CalledStationID LIKE 'sip:$prefix\%' AND"; + } + push @param, $start, $end; my $sth = $dbh->prepare('SELECT '. join(', ', @fields).