我正在为我的项目使用 Freeradius v3,我正在执行外部php脚本以在授权部分进行一些检查。我想要实现的是从脚本中获取多个属性 - 值对,如:
Auth-Type(控制):值
回复 - 消息(回复):值
...
因此,例如,我想从脚本中接收和Auth-Type = Accept以及回复消息。
我使用这篇文章:FreeRadius Reading attributes while executing external script作为参考,我尝试按照建议进行,但它无效。
以下是一些代码来解释我在做什么:
1 - 授权部分
int
2 - Php脚本(回声部分)
authorize{
update{
control: += `/usr/bin/php -f /path/to/script/test.php '%{User-Name}'`
}
....
3 - Php输出(如链接帖子所示)
echo "Auth-Type = Accept,\n";
echo "reply:WISPr-Redirection-URL = http://google.com,\n";
echo "reply:Reply-Message = 'hello world'\n";
4 - Freeradius输出
Auth-Type = Accept
reply:WISPr-Redirection-URL = http://google.com
reply:Reply-Message = 'hello world'
如果我删除“回复:回复消息...”并仅放入“回复消息:...”,则输出被freeradius接受但是回复消息avp在“控制”下进行,这不是正确的。
Proxying to virtual server test-server
(0) # Executing section authorize from file /etc/freeradius/sites-enabled/test-server
(0) authorize {
(0) update {
(0) Executing: /usr/bin/php -f /path/to/script/test.php '%{User-Name}':
(0) EXPAND %{User-Name}
(0) --> alice
(0) ERROR: Failed parsing output from: /usr/bin/php -f /home/saiv/radius_script/test.php '%{User-Name}': Expecting operator
(0) ERROR: Program returned code (0) and output 'Auth-Type = Accept, reply:WISPr-Redirection-URL = http://google.com, reply:Reply-Message = 'hello world''
(0) } # update = fail
(0) } # authorize = fail
有人可以告诉我我错过了什么吗? 任何帮助将不胜感激。