- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当带宽配额达到时,我使用 freeradius 2.2.8 和 mysql 通过 freeradius 发送 coa/disconnect 消息。这部分代码运行良好。不幸的是,即使 NAS 发出了计费停止,coa/disconnect 消息也会发出。为了防止这种情况发生,我设置了一个条件,从 mysql radacct 表中提取 acct 终止原因,并将其与某些字符串进行比较。
根据会计,
update control {
....
Tmp-String-0 := "%{sql:SELECT acctterminatecause AS Terminate FROM radacct WHERE radacct.username='%{User-Name}' AND radacct.acctsessionid='%{Acct-Session-Id}'}}"
***if ("%{control:Tmp-String-0}" != "User-Request")***{
if (("%{control:Tmp-Integer-0}" > "%{control:Tmp-Integer-2}") || ("%{control:Tmp-Integer-1}" > "%{control:Tmp-Integer-3}")){
if ("%{control:coa_dm}" == "coa"){
update coa {
User-Name = "%{User-Name}"
Acct-Session-Id = "%{Acct-Session-Id}"
NAS-IP-Address = "%{NAS-IP-Address}"
#Filter-Id = "UN-AUTHORIZED-PROFILE"
Framed-IP-Address = "%{Framed-IP-Address}"
Session-Timeout = 10
}
}
if ("%{control:coa_dm}" == "dm"){
update disconnect {
User-Name = "%{User-Name}"
NAS-IP-Address = "%{NAS-IP-Address}"
}
}
}
}
根据 freeradius 调试日志,我们可以看到该字符串应该是匹配的,并且程序应该避免内部 if 条件。不幸的是,情况并非如此,第一个 IF 条件始终返回 true。
***Thu May 17 17:43:41 2018 : Info: expand: SELECT acctterminatecause AS Terminate FROM radacct WHERE radacct.username='%{User-Name}' AND radacct.acctsessionid='%{Acct-Session-Id}' -> SELECT acctterminatecause AS Terminate FROM radacct WHERE radacct.username='kiranc' AND radacct.acctsessionid='5AFD71CB-3FE1C000'
Thu May 17 17:43:41 2018 : Debug: rlm_sql (sql): Reserving sql socket id: 16
Thu May 17 17:43:41 2018 : Info: sql_xlat finished
Thu May 17 17:43:41 2018 : Debug: rlm_sql (sql): Released sql socket id: 16
Thu May 17 17:43:41 2018 : Info: expand: %{sql:SELECT acctterminatecause AS Terminate FROM radacct WHERE radacct.username='%{User-Name}' AND radacct.acctsessionid='%{Acct-Session-Id}'}} -> User-Request}
Thu May 17 17:43:41 2018 : Info: ++} # update control = noop
Thu May 17 17:43:41 2018 : Info: ++? if ("%{control:Tmp-String-0}" != "User-Request")
Thu May 17 17:43:41 2018 : Info: expand: %{control:Tmp-String-0} -> User-Request}
Thu May 17 17:43:41 2018 : Info: ? Evaluating ("%{control:Tmp-String-0}" != "User-Request") -> TRUE***
Thu May 17 17:43:41 2018 : Info: ++? if ("%{control:Tmp-String-0}" != "User-Request") -> TRUE
Thu May 17 17:43:41 2018 : Info: ++if ("%{control:Tmp-String-0}" != "User-Request") {
Thu May 17 17:43:41 2018 : Info: +++? if (("%{control:Tmp-Integer-0}" > "%{control:Tmp-Integer-2}") || ("%{control:Tmp-Integer-1}" > "%{control:Tmp-Integer-3}"))
Thu May 17 17:43:41 2018 : Info: expand: %{control:Tmp-Integer-0} -> 3169
Thu May 17 17:43:41 2018 : Info: expand: %{control:Tmp-Integer-2} -> 25000000
Thu May 17 17:43:41 2018 : Info: ?? Evaluating ("%{control:Tmp-Integer-0}" > "%{control:Tmp-Integer-2}") -> FALSE
Thu May 17 17:43:41 2018 : Info: expand: %{control:Tmp-Integer-1} -> 13402
Thu May 17 17:43:41 2018 : Info: expand: %{control:Tmp-Integer-3} -> 50000000
我尝试使用 & 而不是 % 来单引号、双引号,但无济于事。其他条件在命中时会正确满足,因为它们以整数形式返回。
感谢您的帮助。
最佳答案
我忘了说我已经让它工作了。我没有使用 Tmp-String-0 变量进行比较,而是使用了实际的半径属性名称并使其正常工作。
if (("%{Acct-Terminate-Cause}" != "User-Request")
感谢您的帮助。
关于mysql - 无法匹配 freeradius 中的 mysql 字符串响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50391543/
我正在创建一个使用统计网页,该页面将显示当前在线用户并具有给定时间/日期的用户历史图表。 freeradius 中是否有一个函数可以轻松获取当前连接的用户数量,然后我可以将其转储到数据库中以供我的网页
这是我在 copy-acct-to-home-server 中部署的代码片段。它基本上检查用户名是否有“@”符号...如果是,则它从比较 NAS-IP-地址的 mysql 表中提取 Huntgroup
我遇到了一个问题,我在 Freeradius 中无法理解 用户 文件。 我的目标只是使用密码“test”验证外部用户“shad”。 我在/etc/raddb/users 中添加了以下行: shad 明
我正在使用 hostapd 在笔记本电脑中创建热点。我使用 freeradius 作为我的后端认证服务器。 我在 freeradius 中将客户端配置为 client 11.0.0.1 { secr
我已经在 Ubuntu-14.04 上安装了 freeradius 服务器,当我尝试使用 radtest -x bob root123 127.0.0.1 1812 testing123 在服务器上进
我已经成功地使用 CoA 端口 3799(从使用 radclient 的终端)将断开连接的数据包发送到 NAS,但这只有在我可以从外部网络到达该端口时才有效(即,如果我从 Internet 设置端口转
我有3台服务器:代理服务器和2台家庭服务器。我想用以下方式配置Freeradius代理。当第一个服务器不响应时,代理将请求转发到另一个服务器。 可以这样配置Freeradius,而不需要更改C源代码?
有没有办法在不重新启动服务的情况下重新加载 Freeradius 客户端配置?我在用着: Ubuntu 服务器 12 自由半径 2.1.10 MySQL v5.5.20(我将客户端存储在“nas”表中
我在 kubernetes 集群中设置了一个 freeradius 服务器。我已按照说明设置测试用户以使用 radtest 进行测试,但是,我在运行测试时仍然收到“访问拒绝”。 这是用户文件的开头,我
谁知道nas.sql表的这个字段的作用? ports int(5) server varchar(64) community varchar(50) 我认为社区用于 checkrad snmp 检查,
我希望能够延迟激活登录。例如,我可以在星期一创建一个用户,但我只想允许他仅从星期五连接到登录我的网络。 所以我在文件dictionary.conf上创建了一个属性 ATTRIBUTE Acc
我在centos 6.x上安装了freeradius,并且在mysql用户身份验证中这是可以的,并为用户分配IP。我有一个 Mikrotik PPPoE 服务器 (NAS),并通过端口 1812 将身
我使用 FreeRADIUS 和 MySQL 来验证用户身份。 用户保存在radcheck 表中。用户属性保存在radreply表中。 例如,我在 radcheck 表中有一个名为 Bob 的用户。
我将 freeradius 与 mysql 和 choovachilli 结合使用来实现强制门户。我目前正在尝试使用 rlm_sqlcounter 实现每日帐户,但没有成功。这是我包含在全局配置中的配
我的 FreeRadius 有问题 我写了一个脚本来添加用户。当我想重新启动服务时: service freeradius restart 我得到以下输出: top: Unknown instance
我有一个项目要创建类似 freeradius 的应用程序,但我不明白数据库中每个表存储的数据类型。有人愿意解释吗?这是这些表的列表: 纳斯 拉达克 检查 radgroupcheck radgroupr
当我运行以下命令时,我可以获得成功的结果。 root@ubuntu:/home/can# radtest 用户密码 127.0.0.1 1812 testing123 将 id 78 的访问请求发送到
我使用 CoovaChilli 和 Freeradius 以及 mysql 来实现 CaptivePortal。到目前为止一切正常。您可以使用 DB 的用户帐户登录并访问互联网。然后我需要为帐户设置时
我正在尝试检查日期时间字段是否大于(晚于)当前日期。我不断收到访问被拒绝的消息。我使用 MySQL 作为数据库。 这是完整的代码,authorize_reply_query也是如此 authorize
场景:Freeradius 服务器 2.2.8 作为 Ubuntu 服务器上的计费系统,NAS 是 Mikrotik 路由器 ccr1036 v 6.42.4 问题:在 NAS 上我可以看到 900
我是一名优秀的程序员,十分优秀!