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

再把下面的代码加到default文件中的90行位置就行了。

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 like 'Max%';}") {

reject

}

把上面这内容加到/etc/raddb/sites-enabled/default加到authorize的90行位置就行了

这样就完美了。哈哈

至此解决了问题。