码迷,mamicode.com
首页 > 其他好文 > 详细

stongswan订制每月每年流量方法

时间:2015-05-13 17:09:42      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:stongswan

stongswan订制每月每年流量方法

  网上好多都是订制月份的比较多,本人由于工作需要,订制每月,每年,每半年的流量需要,找了好多资料都是每月的多,我自己研究出订制方法,希望可以帮助有需要的网友。

  其实你订制完每月的方法后,再依此订制年或半年的方法如下:

  月的大家都会我就不说了,我写一下年的:

   vi /etc/raddb/sql/mysql/counter.conf

在文件最末尾增加如下:   

sqlcounter yearlytrafficcounter {


    counter-name = yearly-Traffic


    check-name = Max-yearly-Traffic


    reply-name = yearly-Traffic-Limit


    sqlmod-inst = sql


    key = User-Name


    reset = 12m


    query = "SELECT SUM(acctinputoctets + acctoutputoctets) FROM radacct WHERE UserName=‘%{%k}‘ AND UNIX_TIMESTAMP(AcctStartTime) > ‘%b‘"

    增加完保存退出,再编辑vi /etc/raddb/dictionary,在文件增加如下:

    

ATTRIBUTE Max-Monthly-Traffic 3003 integer

ATTRIBUTE Monthly-Traffic-Limit 3004 integer

ATTRIBUTE Max-yearly-Traffic 3005 integer

ATTRIBUTE yearly-Traffic-Limit 3006 integer

上面两个是月的,下面这两个是年的,然后保存退出

最后再编辑vi /etc/raddb/sites-enabled/default文件,在authorize的末尾大概在223位置,在}上面增加

monthlytrafficcounter

yearlytrafficcounter

当时我没有调通的原因是由于我加了这个

update request {

Group-Name := "%{sql:SELECT groupname FROM radusergroup WHERE username=‘%{User-Name}‘ ORDER BY priority}"

}

if ("%{sql: SELECT SUM(acctinputoctets+acctoutputoctets) FROM radacct WHERE username=‘%{User-Name}‘ AND date_format(acctstarttime, ‘%Y-%m-%d‘) >= date_format(now(),‘%Y-%m-01‘) AND date_format(acctstoptime, ‘%Y-%m-%d‘) <= last_day(now());}" >= "%{sql: SELECT value FROM radgroupreply WHERE groupname=‘%{Group-Name}‘ AND attribute=‘Max-Monthly-Traffic‘;}") {

reject


}

,我一开始以为再加一个就行了,可是不行,只能去了,这样才能实现月和流量同时可以验证通过的,上面的意思就是流量如果超过了就会不让登陆,这个我们可以写一个脚本来解决上面的问题,每隔多少时间去查一次就行了。

至此解决了问题。

本文出自 “流星” 博客,请务必保留此出处http://461884.blog.51cto.com/451884/1650946

stongswan订制每月每年流量方法

标签:stongswan

原文地址:http://461884.blog.51cto.com/451884/1650946

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!