自由半径 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%% 防止它被解释为单个字母扩展。

你应该这样使用 %{用户名}