Add docs for rlm_sqlcounter module to experimental.conf
authorramoore <ramoore>
Tue, 23 Apr 2002 05:50:07 +0000 (05:50 +0000)
committerramoore <ramoore>
Tue, 23 Apr 2002 05:50:07 +0000 (05:50 +0000)
raddb/experimental.conf

index 6cb8bd5..822aac8 100644 (file)
                }
        }
 
+
+       #  This module is an SQL enabled version of the counter module.
+       #  
+       #  Rather than maintaining seperate (GDBM) databases of accounting info
+       #       for each counter, this module uses the data stored in the raddacct
+       #       table by the sql modules. This module NEVER does any database 
+       #       INSERTs or UPDATEs.  It is totally dependent on the SQL module
+       #       to process Accounting packets.
+       #
+       #  The 'sqlmod_inst' parameter holds the instance of the sql module to use 
+       #       when querying the SQL database. Normally it is just "sql".
+       #       If you define more and one SQL module instance 
+       #       (usually for failover situations), you can specify which module
+       #       has access to the Accounting Data (radacct table).
+       #
+       #  The 'reset' parameter defines when the counters are all reset to
+       #       zero.  It can be hourly, daily, weekly, monthly or never.
+       #       It can also be user defined. It should be of the form:
+       #       num[hdwm] where:
+       #       h: hours, d: days, w: weeks, m: months
+       #       If the letter is ommited days will be assumed. In example:
+       #       reset = 10h (reset every 10 hours)
+       #       reset = 12  (reset every 12 days)
+       #
+       #  The 'key' parameter specifies the unique identifier for the counters
+       #       records (usually 'User-Name'). 
+       #
+       # The 'query' parameter specifies the SQL query used to get the 
+       #       current Counter value from the database. There are 3 parameters
+       #       that can be used in the query:
+       #               %k      'key' parameter
+       #               %b      unix time value of beginning of reset period 
+       #               %e      unix time value of end of reset period
+       #
+       #  The 'check-name' parameter is the name of the 'check' attribute to use to access
+       #       the counter in the 'users' file or SQL radcheck or radcheckgroup 
+       #       tables.
+       #
+       #  DEFAULT  Max-Daily-Session > 3600, Auth-Type = Reject
+       #      Reply-Message = "You've used up more than one hour today"
+       #1
+
+       sqlcounter dailycounter {
+               counter-name = Daily-Session-Time
+               check-name = Max-Daily-Session
+               sqlmod-inst = sqlcca3
+               key = User-Name
+               reset = daily
+
+               # This query properly handles calls that span from the previous reset period
+               # into the current period but involves more work for the SQL server than those below
+               query = "SELECT SUM(AcctSessionTime - GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) FROM radacct WHERE UserName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'"
+
+               # This query ignores calls that started in a previous reset period and 
+               # continue into into this one. But it is a little easier on the SQL server 
+               # query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='%{%k}' AND AcctStartTime > FROM_UNIXTIME('%b')"
+
+               # This query is the same as above, but demonstrates an additional 
+               # counter parameter '%e' which is the timestamp for the end of the period
+               # query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='%{%k}' AND AcctStartTime BETWEEN FROM_UNIXTIME('%b') AND FROM_UNIXTIME('%e')"               
+       }
+
+       sqlcounter monthlycounter {
+               counter-name = Monthly-Session-Time
+               check-name = Max-Monthly-Session
+               sqlmod-inst = sqlcca3
+               key = User-Name
+               reset = monthly
+
+               # This query properly handles calls that span from the previous reset period
+               # into the current period but involves more work for the SQL server than those below
+               query = "SELECT SUM(AcctSessionTime - GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) FROM radacct WHERE UserName='%{%k}' AND UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'"
+
+               # This query ignores calls that started in a previous reset period and 
+               # continue into into this one. But it is a little easier on the SQL server 
+               # query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='%{%k}' AND AcctStartTime > FROM_UNIXTIME('%b')"
+
+               # This query is the same as above, but demonstrates an additional 
+               # counter parameter '%e' which is the timestamp for the end of the period
+               # query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='%{%k}' AND AcctStartTime BETWEEN FROM_UNIXTIME('%b') AND FROM_UNIXTIME('%e')"               
+       }
+
+