Skip to content
Snippets Groups Projects
Commit 16ebdd80 authored by Nigel Kukard's avatar Nigel Kukard
Browse files

* Fixed up templating engine macros

* Use internal timestamp instead of the one in the packet which is not always present
parent 7d738612
No related branches found
No related tags found
No related merge requests found
...@@ -26,7 +26,6 @@ use smradius::dblayer; ...@@ -26,7 +26,6 @@ use smradius::dblayer;
use smradius::logging; use smradius::logging;
use smradius::util; use smradius::util;
use DateTime;
use POSIX qw(ceil); use POSIX qw(ceil);
...@@ -94,61 +93,61 @@ sub init ...@@ -94,61 +93,61 @@ sub init
) )
VALUES VALUES
( (
%{accounting.User-Name}, %{request.User-Name},
%{accounting.Service-Type}, %{request.Service-Type},
%{accounting.Framed-Protocol}, %{request.Framed-Protocol},
%{accounting.NAS-Port}, %{request.NAS-Port},
%{accounting.NAS-Port-Type}, %{request.NAS-Port-Type},
%{accounting.Calling-Station-Id}, %{request.Calling-Station-Id},
%{accounting.Called-Station-Id}, %{request.Called-Station-Id},
%{accounting.NAS-Port-Id}, %{request.NAS-Port-Id},
%{accounting.Acct-Session-Id}, %{request.Acct-Session-Id},
%{accounting.Framed-IP-Address}, %{request.Framed-IP-Address},
%{accounting.Acct-Authentic}, %{request.Acct-Authentic},
%{accounting.Event-Timestamp}, %{request.Timestamp},
%{accounting.Acct-Status-Type}, %{request.Acct-Status-Type},
%{accounting.NAS-Identifier}, %{request.NAS-Identifier},
%{accounting.NAS-IP-Address}, %{request.NAS-IP-Address},
%{accounting.Acct-Delay-Time} %{request.Acct-Delay-Time}
) )
'; ';
$config->{'accounting_update_query'} = ' $config->{'accounting_update_query'} = '
UPDATE @TP@accounting UPDATE @TP@accounting
SET SET
AcctSessionTime = %{accounting.Acct-Session-Time}, AcctSessionTime = %{request.Acct-Session-Time},
AcctInputOctets = %{accounting.Acct-Input-Octets}, AcctInputOctets = %{request.Acct-Input-Octets},
AcctInputGigawords = %{accounting.Acct-Input-Gigawords}, AcctInputGigawords = %{request.Acct-Input-Gigawords},
AcctInputPackets = %{accounting.Acct-Input-Packets}, AcctInputPackets = %{request.Acct-Input-Packets},
AcctOutputOctets = %{accounting.Acct-Output-Octets}, AcctOutputOctets = %{request.Acct-Output-Octets},
AcctOutputGigawords = %{accounting.Acct-Output-Gigawords}, AcctOutputGigawords = %{request.Acct-Output-Gigawords},
AcctOutputPackets = %{accounting.Acct-Output-Packets}, AcctOutputPackets = %{request.Acct-Output-Packets},
AcctStatusType = %{accounting.Acct-Status-Type} AcctStatusType = %{request.Acct-Status-Type}
WHERE WHERE
UserName = %{accounting.User-Name} UserName = %{request.User-Name}
AND AcctSessionID = %{accounting.Acct-Session-Id} AND AcctSessionID = %{request.Acct-Session-Id}
AND NASIPAddress = %{accounting.NAS-IP-Address} AND NASIPAddress = %{request.NAS-IP-Address}
'; ';
$config->{'accounting_stop_query'} = ' $config->{'accounting_stop_query'} = '
UPDATE @TP@accounting UPDATE @TP@accounting
SET SET
AcctSessionTime = %{accounting.Acct-Session-Time}, AcctSessionTime = %{request.Acct-Session-Time},
AcctInputOctets = %{accounting.Acct-Input-Octets}, AcctInputOctets = %{request.Acct-Input-Octets},
AcctInputGigawords = %{accounting.Acct-Input-Gigawords}, AcctInputGigawords = %{request.Acct-Input-Gigawords},
AcctInputPackets = %{accounting.Acct-Input-Packets}, AcctInputPackets = %{request.Acct-Input-Packets},
AcctOutputOctets = %{accounting.Acct-Output-Octets}, AcctOutputOctets = %{request.Acct-Output-Octets},
AcctOutputGigawords = %{accounting.Acct-Output-Gigawords}, AcctOutputGigawords = %{request.Acct-Output-Gigawords},
AcctOutputPackets = %{accounting.Acct-Output-Packets}, AcctOutputPackets = %{request.Acct-Output-Packets},
AcctStatusType = %{accounting.Acct-Status-Type}, AcctStatusType = %{request.Acct-Status-Type},
AcctTerminateCause = %{accounting.Acct-Terminate-Cause} AcctTerminateCause = %{request.Acct-Terminate-Cause}
WHERE WHERE
UserName = %{accounting.User-Name} UserName = %{request.User-Name}
AND AcctSessionID = %{accounting.Acct-Session-Id} AND AcctSessionID = %{request.Acct-Session-Id}
AND NASIPAddress = %{accounting.NAS-IP-Address} AND NASIPAddress = %{request.NAS-IP-Address}
'; ';
$config->{'get_usage_query'} = ' $config->{'accounting_usage_query'} = '
SELECT SELECT
SUM(AcctInputOctets) AS InputOctets, SUM(AcctInputOctets) AS InputOctets,
SUM(AcctOutputOctets) AS OutputOctets, SUM(AcctOutputOctets) AS OutputOctets,
...@@ -158,7 +157,7 @@ sub init ...@@ -158,7 +157,7 @@ sub init
FROM FROM
@TP@accounting @TP@accounting
WHERE WHERE
Username = %{accounting.User-Name} Username = %{request.User-Name}
'; ';
# Setup SQL queries # Setup SQL queries
...@@ -191,13 +190,13 @@ sub init ...@@ -191,13 +190,13 @@ sub init
$config->{'accounting_stop_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_stop_query'}; $config->{'accounting_stop_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_stop_query'};
} }
} }
if (defined($scfg->{'mod_accounting_sql'}->{'get_usage_query'}) && if (defined($scfg->{'mod_accounting_sql'}->{'accounting_usage_query'}) &&
$scfg->{'mod_accounting_sql'}->{'get_usage_query'} ne "") { $scfg->{'mod_accounting_sql'}->{'accounting_usage_query'} ne "") {
if (ref($scfg->{'mod_accounting_sql'}->{'get_usage_query'}) eq "ARRAY") { if (ref($scfg->{'mod_accounting_sql'}->{'accounting_usage_query'}) eq "ARRAY") {
$config->{'get_usage_query'} = join(' ', $config->{'accounting_usage_query'} = join(' ',
@{$scfg->{'mod_accounting_sql'}->{'get_usage_query'}}); @{$scfg->{'mod_accounting_sql'}->{'accounting_usage_query'}});
} else { } else {
$config->{'get_usage_query'} = $scfg->{'mod_accounting_sql'}->{'get_usage_query'}; $config->{'accounting_usage_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_usage_query'};
} }
} }
} }
...@@ -212,12 +211,12 @@ sub getUsage ...@@ -212,12 +211,12 @@ sub getUsage
# Build template # Build template
my $template; my $template;
foreach my $attr ($packet->attributes) { foreach my $attr ($packet->attributes) {
$template->{'accounting'}->{$attr} = $packet->rawattr($attr) $template->{'request'}->{$attr} = $packet->rawattr($attr)
} }
$template->{'user'} = $user; $template->{'user'} = $user;
# Replace template entries # Replace template entries
my @dbDoParams = templateReplace($config->{'get_usage_query'},$template); my @dbDoParams = templateReplace($config->{'accounting_usage_query'},$template);
# Fetch data # Fetch data
my $sth = DBSelect(@dbDoParams); my $sth = DBSelect(@dbDoParams);
...@@ -286,14 +285,11 @@ sub acct_log ...@@ -286,14 +285,11 @@ sub acct_log
# Build template # Build template
my $template; my $template;
foreach my $attr ($packet->attributes) { foreach my $attr ($packet->attributes) {
$template->{'accounting'}->{$attr} = $packet->rawattr($attr) $template->{'request'}->{$attr} = $packet->rawattr($attr)
} }
# Fix event timestamp
# Fix up timestamp a bit $template->{'request'}->{'Timestamp'} = $user->{'_Internal'}->{'Timestamp'};
$template->{'accounting'}->{'Event-Timestamp-Unix'} = $template->{'accounting'}->{'Event-Timestamp'}; # Add user
my $dt = DateTime->from_epoch( epoch => $template->{'accounting'}->{'Event-Timestamp'} );
$template->{'accounting'}->{'Event-Timestamp'} = $dt->strftime('%Y-%m-%d %H:%M:%S');
$template->{'user'} = $user; $template->{'user'} = $user;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment