gpt4 book ai didi

mysql - Freeradius sqlcounter 不起作用

转载 作者:行者123 更新时间:2023-11-29 06:21:44 27 4
gpt4 key购买 nike

我将 freeradius 与 mysql 和 choovachilli 结合使用来实现强制门户。我目前正在尝试使用 rlm_sqlcounter 实现每日帐户,但没有成功。这是我包含在全局配置中的配置文件:

sqlcounter dailycounter {
counter-name = 'Daily-Session-Time'
check-name = 'Max-Daily-Session'
sql_module_instance = 'sql'
key = 'User-Name'
reset = daily
query = "SELECT SUM(acctsessiontime - GREATEST((%b - UNIX_TIMESTAMP(acctstarttime)), 0)) FROM radacct WHERE username='%{${key}}' AND UNIX_TIMESTAMP(acctstarttime) + acctsessiontime > '%b'"
}

authorize {
sql
dailycounter
}

accounting {
sql
}

在 freeradius 日志中只有这个与计数器相关的输出:

Tue Oct  6 13:02:22 2015 : Debug:  Module: Linked to module rlm_expr
Tue Oct 6 13:02:22 2015 : Debug: Module: Instantiating module "expr" from file /etc/freeradius/modules/expr
Tue Oct 6 13:02:22 2015 : Debug: (Loaded rlm_counter, checking if it's valid)
Tue Oct 6 13:02:22 2015 : Debug: Module: Linked to module rlm_counter
Tue Oct 6 13:02:22 2015 : Debug: Module: Instantiating module "daily" from file /etc/freeradius/modules/counter
Tue Oct 6 13:02:22 2015 : Debug: counter daily {
Tue Oct 6 13:02:22 2015 : Debug: filename = "/etc/freeradius/db.daily"
Tue Oct 6 13:02:22 2015 : Debug: key = "User-Name"
Tue Oct 6 13:02:22 2015 : Debug: reset = "daily"
Tue Oct 6 13:02:22 2015 : Debug: count-attribute = "Acct-Session-Time"
Tue Oct 6 13:02:22 2015 : Debug: counter-name = "Daily-Session-Time"
Tue Oct 6 13:02:22 2015 : Debug: check-name = "Max-Daily-Session"
Tue Oct 6 13:02:22 2015 : Debug: reply-name = "Session-Timeout"
Tue Oct 6 13:02:22 2015 : Debug: allowed-servicetype = "Framed-User"
Tue Oct 6 13:02:22 2015 : Debug: cache-size = 5000
Tue Oct 6 13:02:22 2015 : Debug: }
Tue Oct 6 13:02:22 2015 : Debug: rlm_counter: Counter attribute Daily-Session-Time is number 3000
Tue Oct 6 13:02:22 2015 : Debug: rlm_counter: Current Time: 1444129342 [2015-10-06 13:02:22], Next reset 1444168800 [2015-10-07 00:00:00]

如果有人能向我解释这个计数器的实际工作原理,我将不胜感激。我设法理解了检查名称和重置的意义,但查询选项让我感到困惑。我了解查询语法以及返回值是什么,但我不了解该查询何时被调用以及谁将使用其返回值以及如何使用?

最佳答案

Daily-Session-Time的解释。

  1. 用户每天可以登录和在线3000s
  2. 使用 Max-Daily-Session。您将值添加到 3000。这意味着 3000s。
  3. Radius 将向 nas 3000s 回复属性 Session-Timeout。这意味着 nas 必须在 3000 秒内断开用户连接
  4. 如果用户登录并在线 1000 秒,他将注销。然后他再次登录,radius会回复Session-Timeout给nas 2000s。
  5. 用户用完所有3000s后,无法登录。他需要等到明天。

关于mysql - Freeradius sqlcounter 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32971863/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com