2

我正在使用 freeradius sqlcounter 模块。我将帐户的 Max-All-Session 设置为 180 秒,因此用户将在超时时注销。当有两个用户使用这个帐户时,如果两个用户的访问时间之和达到180秒,我希望他们退出。但是,他们两个还有180秒。我尝试了以下配置,query将返回帐户的总访问时间。IFZERO(a,b)函数 return aif a == 0else breturn 。但它没有用。我还想知道,既然originquery总是在设置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}'" 
} 
4

0 回答 0