📄 counter.conf
字号:
# -*- text -*-#### counter.conf -- PostgreSQL queries for rlm_sqlcounter#### $Id: counter.conf,v 1.4 2007/12/31 03:40:15 aland Exp $# 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# counter 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"#sqlcounter dailycounter { counter-name = Daily-Session-Time check-name = Max-Daily-Session reply-name = Session-Timeout sqlmod-inst = sql 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 - \ GREATER((%b - AcctStartTime::ABSTIME::INT4), 0)) \ FROM radacct WHERE UserName='%{%k}' AND \ AcctStartTime::ABSTIME::INT4 + 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 AND AcctStartTime::ABSTIME::INT4 > '%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::ABSTIME::INT4 \# BETWEEN '%b' AND '%e'"}sqlcounter monthlycounter { counter-name = Monthly-Session-Time check-name = Max-Monthly-Session reply-name = Session-Timeout sqlmod-inst = sql 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 - \ GREATER((%b - AcctStartTime::ABSTIME::INT4), 0)) \ FROM radacct WHERE UserName='%{%k}' AND \ AcctStartTime::ABSTIME::INT4 + 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 AND AcctStartTime::ABSTIME::INT4 > '%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::ABSTIME::INT4 \# BETWEEN '%b' AND '%e'"}sqlcounter noresetcounter { counter-name = Max-All-Session-Time check-name = Max-All-Session sqlmod-inst = sql key = User-Name reset = never query = "SELECT SUM(AcctSessionTime) FROM radacct WHERE UserName='%{%k}'"}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -