半径sqlcounter键

我的问题的简短版本是如何限制个人用户会话24小时,即使每个会话具有相同的用户名。

我有一个使用CoovaChilli进行radius服务器设置来validation无线用户访问networking。 所有用户所要做的就是同意一个“服务条款”,所以我有一个用户帐户是免费的,

| 22 | freeuser | 同时使用| := | 99 | | 21 | freeuser | 用户密码| := | 免费通行证|

我想限制每个用户的会话24小时。 但是Max-All-Session计数器是:

query =“SELECT SUM(AcctSessionTime)\ FROM radacct WHERE UserName ='%{%k}'”

所以如果我指定一个Max-All-Session,那么每个免费用户的login时间将会计入这个24小时的限制,并且每个会话都会过期。 是否有可能使用两个键的SQL计数器,所以我可以检查用户名和CalledStationId? 这应该让我限制个人会话时间由MAC地址以及用户名。

还是有一个不同的/更好的方法,我应该试图解决这个问题? 谢谢!

只需将定义中的密钥更改为:

called-station-id 

并将查询更改为:

 SELECT SUM(AcctSessionTime) \ FROM radacct WHERE calledstationid='%{%k} 

这个查询有一个问题,但是在第一次用户连接时,他们将被授予不超时,因为该查询将返回NULL,而不是0