自由半径 SQLCounter
Freeradius SQLCounter
我正在使用 Freeradius 的 SQL 模块来检查用户是否已达到每周数据限制,为此我正在使用此查询:
SELECT (IFNULL(SUM(AcctInputOctets), 0) + IFNULL(SUM(AcctOutputOctets), 0)) as used_data FROM (SELECT * FROM radacct b WHERE username = '%{%k}' AND DATE_FORMAT(acctstarttime, '%Y-%u') = DATE_FORMAT(CURDATE(), '%Y-%u') GROUP BY acctuniqueid) a
现在 '%{%k}'
被带有用户用户名的 Freeradius 替换,但 %u
也被替换,这不应该发生,因为它应该由 SQL 处理以使用周数.
%Y
未被 Freeradius 触及。
关于如何进行查询以使 Freeradius 不会逃避此问题的任何想法?
正确的转义序列是%%u
。 %%
防止它被解释为单个字母扩展。
你应该这样使用
%{用户名}
我正在使用 Freeradius 的 SQL 模块来检查用户是否已达到每周数据限制,为此我正在使用此查询:
SELECT (IFNULL(SUM(AcctInputOctets), 0) + IFNULL(SUM(AcctOutputOctets), 0)) as used_data FROM (SELECT * FROM radacct b WHERE username = '%{%k}' AND DATE_FORMAT(acctstarttime, '%Y-%u') = DATE_FORMAT(CURDATE(), '%Y-%u') GROUP BY acctuniqueid) a
现在 '%{%k}'
被带有用户用户名的 Freeradius 替换,但 %u
也被替换,这不应该发生,因为它应该由 SQL 处理以使用周数.
%Y
未被 Freeradius 触及。
关于如何进行查询以使 Freeradius 不会逃避此问题的任何想法?
正确的转义序列是%%u
。 %%
防止它被解释为单个字母扩展。
你应该这样使用 %{用户名}