From 2a7a391173847e9b41c2399c9397b23fd8df4f50 Mon Sep 17 00:00:00 2001 From: Nigel Kukard <nkukard@lbsd.net> Date: Mon, 2 Mar 2009 10:39:38 +0000 Subject: [PATCH] * Added default SQL queries --- .../modules/accounting/mod_accounting_sql.pm | 88 ++++++++++++++++++- 1 file changed, 85 insertions(+), 3 deletions(-) diff --git a/smradius/modules/accounting/mod_accounting_sql.pm b/smradius/modules/accounting/mod_accounting_sql.pm index 8a86a7bf..e98213d1 100644 --- a/smradius/modules/accounting/mod_accounting_sql.pm +++ b/smradius/modules/accounting/mod_accounting_sql.pm @@ -26,6 +26,7 @@ use smradius::constants; use smradius::logging; use smradius::util; +use Data::Dumper; # Exporter stuff require Exporter; @@ -68,9 +69,82 @@ sub init # Default configs... $config->{'accounting_start_query'} = " - INSERT DEFAULT + INSERT INTO accounting + ( + Username, + ServiceType, + FramedProtocol, + NASPort, + NASPortType, + CallingStationID, + CalledStationID, + NASPortID, + AcctSessionID, + FramedIPAddress, + AcctAuthentic, + EventTimestamp, + AcctStatusType, + NASIdentifier, + NASIPAddress, + AcctDelayTime + ) + VALUES + ( + %{accounting.User-Name}, + %{accounting.Service-Type}, + %{accounting.Framed-Protocol}, + %{accounting.NAS-Port}, + %{accounting.NAS-Port-Type}, + %{accounting.Calling-Station-Id}, + %{accounting.Called-Station-Id}, + %{accounting.NAS-Port-Id}, + %{accounting.Acct-Session-Id}, + %{accounting.Framed-IP-Address}, + %{accounting.Acct-Authentic}, + %{accounting.Event-Timestamp}, + %{accounting.Acct-Status-Type}, + %{accounting.NAS-Identifier}, + %{accounting.NAS-IP-Address}, + %{accounting.Acct-Delay-Time} + ) "; + $config->{'accounting_update_query'} = " + UPDATE accounting + SET + AcctSessionTime = %{accounting.Acct-Session-Time}, + AcctInputOctets = %{accounting.Acct-Input-Octets}, + AcctInputGigawords = %{accounting.Acct-Input-Gigawords}, + AcctInputPackets = %{accounting.Acct-Input-Packets}, + AcctOutputOctets = %{accounting.Acct-Output-Octets}, + AcctOutputGigawords = %{accounting.Acct-Output-Gigawords}, + AcctOutputPackets = %{accounting.Acct-Output-Packets}, + AcctStatusType = %{accounting.Acct-Status-Type} + WHERE + UserName = %{accounting.User-Name}, + AND AcctSessionID = %{accounting.Acct-Session-Id}, + AND NASIPAddress = %{accounting.NAS-IP-Address} + "; + + $config->{'accounting_stop_query'} = " + UPDATE accounting + SET + AcctSessionTime = %{accounting.Acct-Session-Time}, + AcctInputOctets = %{accounting.Acct-Input-Octets}, + AcctInputGigawords = %{accounting.Acct-Input-Gigawords}, + AcctInputPackets = %{accounting.Acct-Input-Packets}, + AcctOutputOctets = %{accounting.Acct-Output-Octets}, + AcctOutputGigawords = %{accounting.Acct-Output-Gigawords}, + AcctOutputPackets = %{accounting.Acct-Output-Packets}, + AcctStatusType = %{accounting.Acct-Status-Type}, + AcctTerminateCause = %{accounting.Acct-Terminate-Cause} + WHERE + UserName = %{accounting.User-Name}, + AND AcctSessionID = %{accounting.Acct-Session-Id}, + AND NASIPAddress = %{accounting.NAS-IP-Address} + "; + + # Setup SQL queries if (defined($scfg->{'mod_accounting_sql'})) { # Pull in queries @@ -78,6 +152,14 @@ sub init $scfg->{'mod_accounting_sql'}->{'accounting_start_query'} ne "") { $config->{'accounting_start_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_start_query'}; } + if (defined($scfg->{'mod_accounting_sql'}->{'accounting_update_query'}) && + $scfg->{'mod_accounting_sql'}->{'accounting_update_query'} ne "") { + $config->{'accounting_update_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_update_query'}; + } + if (defined($scfg->{'mod_accounting_sql'}->{'accounting_stop_query'}) && + $scfg->{'mod_accounting_sql'}->{'accounting_stop_query'} ne "") { + $config->{'accounting_stop_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_stop_query'}; + } } } @@ -107,15 +189,15 @@ sub acct_log if ($packet->attr('Acct-Status-Type') eq "Start") { $server->log(LOG_DEBUG,"Start Packet: ".$packet->dump()); - - use Data::Dumper; print(STDERR Dumper(templateReplace($config->{'accounting_start_query'},$template))); } elsif ($packet->attr('Acct-Status-Type') eq "Alive") { $server->log(LOG_DEBUG,"Alive Packet: ".$packet->dump()); + print(STDERR Dumper(templateReplace($config->{'accounting_update_query'},$template))); } elsif ($packet->attr('Acct-Status-Type') eq "Stop") { $server->log(LOG_DEBUG,"Stop Packet: ".$packet->dump()); + print(STDERR Dumper(templateReplace($config->{'accounting_stop_query'},$template))); } -- GitLab