我正在使用freeradius sqlcounter模块。我将帐户的Max-All-Session设置为180秒,因此用户将在超时时注销。当有两个用户使用此帐户时,如果两个用户的访问时间总和达到180秒,我想让他们退出。但是,它们都有180秒。我尝试了以下配置,query
将返回帐户的总访问时间。 IFZERO(a,b)
函数返回a
,如果a == 0
,则返回b
。但它没有用。我也想知道,因为在设置query
之前,原始0
始终返回acctsessiontime
,该模块如何知道超时发生?
#/etc/freeradius/sql/mysql/counter.conf
sqlcounter noresetcounter {
counter-name = Max-All-Session-Time
check-name = Max-All-Session
sqlmod-inst = sql
key = User-Name
reset = never
#query = "SELECT IFNULL(SUM(AcctSessionTime),0) FROM radacct WHERE UserName='%{%k}'" <= origin one
query = "SELECT IFZERO(SUM(IFZERO(AcctSessionTime, NOW() - acctstarttime)),0) FROM radacct WHERE UserName='%{%k}'"
}