я использую FreeRadius v3 для моего проекта, и я выполняю внешний скрипт php, чтобы выполнить некоторые проверки в разделе авторизации. Я пытаюсь получить несколько пар атрибут-значение из скрипта, например:
Auth-Type (контроль): значение
Ответ-сообщение (ответ): значение
…
Так, например, я хотел бы получить и Auth-Type = Accept плюс ответное сообщение от скрипта.
Я использовал этот пост: Атрибуты чтения FreeRadius при выполнении внешнего скрипта в качестве ссылки, и я попытался сделать, как предложено, но это не работает.
Вот некоторый код, чтобы объяснить, что я делаю:
1 — Авторизовать раздел
authorize{
update{
control: += `/usr/bin/php -f /path/to/script/test.php '%{User-Name}'`
}
....
2 — скрипт php (эхо-раздел)
echo "Auth-Type = Accept,\n";
echo "reply:WISPr-Redirection-URL = http://google.com,\n";
echo "reply:Reply-Message = 'hello world'\n";
3 — выход Php (как предложено из связанного поста)
Auth-Type = Accept
reply:WISPr-Redirection-URL = http://google.com
reply:Reply-Message = 'hello world'
4 — вывод Freeradius
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
Если я удаляю «reply: Reply-Message …» и добавляю только «Reply-Message: …», вывод принимается freeradius, но avp-сообщение Reply переходит под «control», и это неверно.
(0) Program returned code (0) and output 'Auth-Type = Accept, WISPr-Redirection-URL = http://google.com, Reply-Message = 'hello world''
(0) control::Auth-Type = Accept
(0) control::WISPr-Redirection-URL = http://google.com
(0) control::Reply-Message = hello world
Может кто-нибудь сказать мне, что мне не хватает?
Любая помощь будет оценена.
Задача ещё не решена.
Других решений пока нет …