Add Gigaword support. Patch from Stefan Winter
authoraland <aland>
Wed, 30 May 2007 09:08:28 +0000 (09:08 +0000)
committeraland <aland>
Wed, 30 May 2007 09:08:28 +0000 (09:08 +0000)
doc/examples/mysql.sql
raddb/sql/mysql-dialup.conf

index d798e85..a6011d7 100644 (file)
@@ -30,8 +30,8 @@ CREATE TABLE radacct (
   AcctAuthentic varchar(32) default NULL,
   ConnectInfo_start varchar(50) default NULL,
   ConnectInfo_stop varchar(50) default NULL,
-  AcctInputOctets bigint(12) default NULL,
-  AcctOutputOctets bigint(12) default NULL,
+  AcctInputOctets bigint(20) default NULL,
+  AcctOutputOctets bigint(20) default NULL,
   CalledStationId varchar(50) NOT NULL default '',
   CallingStationId varchar(50) NOT NULL default '',
   AcctTerminateCause varchar(32) NOT NULL default '',
index 9418437..d6aced3 100644 (file)
        #                               (alternate in case first query doesn't
        #                                affect any existing rows in the table)
        #######################################################################
-       accounting_onoff_query = "UPDATE ${acct_table1} SET AcctStopTime='%S', AcctSessionTime=unix_timestamp('%S') - unix_timestamp(AcctStartTime), AcctTerminateCause='%{Acct-Terminate-Cause}', AcctStopDelay = %{Acct-Delay-Time:-0} WHERE AcctSessionTime=0 AND AcctStopTime=0 AND NASIPAddress= '%{NAS-IP-Address}' AND AcctStartTime <= '%S'"
+       accounting_onoff_query = "\
+          UPDATE ${acct_table1} \
+          SET \
+             AcctStopTime       =  '%S', \
+             AcctSessionTime    =  unix_timestamp('%S') - unix_timestamp(AcctStartTime), \
+             AcctTerminateCause =  '%{Acct-Terminate-Cause}', \
+             AcctStopDelay      =  %{Acct-Delay-Time:-0} \
+          WHERE AcctSessionTime =  0 \
+          AND AcctStopTime      =  0 \
+          AND NASIPAddress      =  '%{NAS-IP-Address}' \
+          AND AcctStartTime     <= '%S'"
 
-       accounting_update_query = "UPDATE ${acct_table1} \
-          SET FramedIPAddress = '%{Framed-IP-Address}', \
-          AcctSessionTime = '%{Acct-Session-Time}', \
-          AcctInputOctets = '%{Acct-Input-Octets}', \
-          AcctOutputOctets = '%{Acct-Output-Octets}' \
+       accounting_update_query = " \
+          UPDATE ${acct_table1} \
+          SET \
+             FramedIPAddress = '%{Framed-IP-Address}', \
+             AcctSessionTime     = '%{Acct-Session-Time}', \
+             AcctInputOctets     = '%{Acct-Input-Gigawords:-0}'  << 32 | '%{Acct-Input-Octets:-0}', \
+             AcctOutputOctets    = '%{Acct-Output-Gigawords:-0}' << 32 | '%{Acct-Output-Octets:-0}' \
           WHERE AcctSessionId = '%{Acct-Session-Id}' \
-          AND UserName = '%{SQL-User-Name}' \
-          AND NASIPAddress= '%{NAS-IP-Address}'"
+          AND UserName        = '%{SQL-User-Name}' \
+          AND NASIPAddress    = '%{NAS-IP-Address}'"
 
-       accounting_update_query_alt = "INSERT into ${acct_table1} (AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start, AcctInputOctets, AcctOutputOctets, CalledStationId, CallingStationId, ServiceType, FramedProtocol, FramedIPAddress, AcctStartDelay) values('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', DATE_SUB('%S',INTERVAL (%{Acct-Session-Time:-0} + %{Acct-Delay-Time:-0}) SECOND), '%{Acct-Session-Time}', '%{Acct-Authentic}', '', '%{Acct-Input-Octets}', '%{Acct-Output-Octets}', '%{Called-Station-Id}', '%{Calling-Station-Id}', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '0')"
+        accounting_update_query_alt = " \
+          INSERT INTO ${acct_table1} \
+            (AcctSessionId,    AcctUniqueId,      UserName, \
+             Realm,            NASIPAddress,      NASPortId, \
+             NASPortType,      AcctStartTime,     AcctSessionTime, \
+             AcctAuthentic,    ConnectInfo_start, AcctInputOctets, \
+             AcctOutputOctets, CalledStationId,   CallingStationId, \
+             ServiceType,      FramedProtocol,    FramedIPAddress, \
+             AcctStartDelay) \
+          VALUES \
+            ('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', \
+             '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', \
+             '%{NAS-Port-Type}', DATE_SUB('%S',INTERVAL (%{Acct-Session-Time:-0} + %{Acct-Delay-Time:-0}) SECOND), '%{Acct-Session-Time}', \
+             '%{Acct-Authentic}', '', '%{Acct-Input-Gigawords:-0}' << 32 | '%{Acct-Input-Octets:-0}', \
+             '%{Acct-Output-Gigawords:-0}' << 32 | '%{Acct-Output-Octets:-0}', '%{Called-Station-Id}', '%{Calling-Station-Id}', \
+             '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', \
+             '0')"
 
-       accounting_start_query = "INSERT into ${acct_table1} (AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime, AcctStopTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start, ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, CalledStationId, CallingStationId, AcctTerminateCause, ServiceType, FramedProtocol, FramedIPAddress, AcctStartDelay, AcctStopDelay) values('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', '%S', '0', '0', '%{Acct-Authentic}', '%{Connect-Info}', '', '0', '0', '%{Called-Station-Id}', '%{Calling-Station-Id}', '', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '%{Acct-Delay-Time:-0}', '0')"
+       accounting_start_query = " \
+          INSERT INTO ${acct_table1} \
+            (AcctSessionId,    AcctUniqueId,     UserName, \
+             Realm,            NASIPAddress,     NASPortId, \
+             NASPortType,      AcctStartTime,    AcctStopTime, \
+             AcctSessionTime,  AcctAuthentic,    ConnectInfo_start, \
+             ConnectInfo_stop, AcctInputOctets,  AcctOutputOctets, \
+             CalledStationId,  CallingStationId, AcctTerminateCause, \
+             ServiceType,      FramedProtocol,   FramedIPAddress, \
+             AcctStartDelay,   AcctStopDelay) \
+          VALUES \
+            ('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', \
+             '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', \
+             '%{NAS-Port-Type}', '%S', '0', \
+             '0', '%{Acct-Authentic}', '%{Connect-Info}', \
+             '', '0', '0', \
+             '%{Called-Station-Id}', '%{Calling-Station-Id}', '', \
+             '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', \
+             '%{Acct-Delay-Time:-0}', '0')"
 
-       accounting_start_query_alt  = "UPDATE ${acct_table1} SET AcctStartTime = '%S', AcctStartDelay = '%{Acct-Delay-Time:-0}', ConnectInfo_start = '%{Connect-Info}' WHERE AcctSessionId = '%{Acct-Session-Id}' AND UserName = '%{SQL-User-Name}' AND NASIPAddress = '%{NAS-IP-Address}'"
+       accounting_start_query_alt  = " \
+          UPDATE ${acct_table1} SET \
+             AcctStartTime     = '%S', \
+             AcctStartDelay    = '%{Acct-Delay-Time:-0}', \
+             ConnectInfo_start = '%{Connect-Info}' \
+          WHERE AcctSessionId  = '%{Acct-Session-Id}' \
+          AND UserName         = '%{SQL-User-Name}' \
+          AND NASIPAddress     = '%{NAS-IP-Address}'"
 
-       accounting_stop_query = "UPDATE ${acct_table2} SET AcctStopTime = '%S', AcctSessionTime = '%{Acct-Session-Time}', AcctInputOctets = '%{Acct-Input-Octets}', AcctOutputOctets = '%{Acct-Output-Octets}', AcctTerminateCause = '%{Acct-Terminate-Cause}', AcctStopDelay = '%{Acct-Delay-Time:-0}', ConnectInfo_stop = '%{Connect-Info}' WHERE AcctSessionId = '%{Acct-Session-Id}' AND UserName = '%{SQL-User-Name}' AND NASIPAddress = '%{NAS-IP-Address}'"
+       accounting_stop_query = " \
+          UPDATE ${acct_table2} SET \
+             AcctStopTime       = '%S', \
+             AcctSessionTime    = '%{Acct-Session-Time}', \
+             AcctInputOctets    = '%{Acct-Input-Gigawords:-0}' << 32 | '%{Acct-Input-Octets:-0}', \
+             AcctOutputOctets   = '%{Acct-Output-Gigawords:-0}' << 32 | '%{Acct-Output-Octets:-0}', \
+             AcctTerminateCause = '%{Acct-Terminate-Cause}', \
+             AcctStopDelay      = '%{Acct-Delay-Time:-0}', \
+             ConnectInfo_stop   = '%{Connect-Info}' \
+          WHERE AcctSessionId   = '%{Acct-Session-Id}' \
+          AND UserName          = '%{SQL-User-Name}' \
+          AND NASIPAddress      = '%{NAS-IP-Address}'"
 
-       accounting_stop_query_alt = "INSERT into ${acct_table2} (AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime, AcctStopTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start, ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, CalledStationId, CallingStationId, AcctTerminateCause, ServiceType, FramedProtocol, FramedIPAddress, AcctStartDelay, AcctStopDelay) values('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', DATE_SUB('%S', INTERVAL (%{Acct-Session-Time:-0} + %{Acct-Delay-Time:-0}) SECOND), '%S', '%{Acct-Session-Time}', '%{Acct-Authentic}', '', '%{Connect-Info}', '%{Acct-Input-Octets}', '%{Acct-Output-Octets}', '%{Called-Station-Id}', '%{Calling-Station-Id}', '%{Acct-Terminate-Cause}', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '0', '%{Acct-Delay-Time:-0}')"
+       accounting_stop_query_alt = " \
+          INSERT INTO ${acct_table2} \
+            (AcctSessionId, AcctUniqueId, UserName, \
+             Realm, NASIPAddress, NASPortId, \
+             NASPortType, AcctStartTime, AcctStopTime, \
+             AcctSessionTime, AcctAuthentic, ConnectInfo_start, \
+             ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, \
+             CalledStationId, CallingStationId, AcctTerminateCause, \
+             ServiceType, FramedProtocol, FramedIPAddress, \
+             AcctStartDelay, AcctStopDelay) \
+          VALUES \
+            ('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', \
+             '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', \
+             '%{NAS-Port-Type}', DATE_SUB('%S', INTERVAL (%{Acct-Session-Time:-0} + %{Acct-Delay-Time:-0}) SECOND), '%S', \
+             '%{Acct-Session-Time}', '%{Acct-Authentic}', '', \
+             '%{Connect-Info}', '%{Acct-Input-Gigawords:-0}' << 32 | '%{Acct-Input-Octets:-0}', '%{Acct-Output-Gigawords:-0}' << 32 | '%{Acct-Output-Octets:-0}', \
+             '%{Called-Station-Id}', '%{Calling-Station-Id}', '%{Acct-Terminate-Cause}', \
+             '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', \
+             '0', '%{Acct-Delay-Time:-0}')"
 
        #######################################################################
        # Simultaneous Use Checking Queries
        #######################################################################
 
        # Uncomment simul_count_query to enable simultaneous use checking
-       # simul_count_query = "SELECT COUNT(*) FROM ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0"
-       simul_verify_query = "SELECT RadAcctId, AcctSessionId, UserName, NASIPAddress, NASPortId, FramedIPAddress, CallingStationId, FramedProtocol FROM ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0"
+       # simul_count_query = "SELECT COUNT(*) \
+        #                      FROM ${acct_table1} \
+        #                      WHERE UserName='%{SQL-User-Name}' \
+        #                      AND AcctStopTime = 0"
+
+       simul_verify_query  = "SELECT RadAcctId, AcctSessionId, UserName, NASIPAddress, NASPortId, FramedIPAddress, CallingStationId, FramedProtocol \
+                               FROM ${acct_table1} \
+                               WHERE UserName='%{SQL-User-Name}' \
+                               AND AcctStopTime = 0"
 
        #######################################################################
        # Authentication Logging Queries
        # postauth_query                - Insert some info after authentication
        #######################################################################
 
-       postauth_query = "INSERT into ${postauth_table} (id, user, pass, reply, date) values ('', '%{User-Name}', '%{User-Password:-Chap-Password}', '%{reply:Packet-Type}', '%S')"
+       postauth_query = "INSERT INTO ${postauth_table} (id, user, pass, reply, date) \
+                          VALUES ('', '%{User-Name}', '%{User-Password:-Chap-Password}', '%{reply:Packet-Type}', '%S')"