Использование запроса FauxAPI для добавления пользователя в список пользователей freeradius config xml с функцией PHP - PullRequest
1 голос
/ 06 ноября 2019

У меня есть сервер со списком разрешенных пользователей для портала авторизации, использующего freeradius. Я хочу, чтобы отдельный сервер мог отправлять ложный API-запрос на добавление пользователя в этот список XML-конфигурации.

Я пытаюсь использовать почтальон для отправки запроса в мой файл pfsense для исправления конфигурации. Как должно быть структурировано тело?

Я уже пробовал запрос function_call

{
   "function":"radius"
   "args":[args]
}

и считаю, что, возможно, мне следует использовать запрос config_patch

Ошибка непомощь в описании структуры данных JSON, которые он ожидает, хотя. Я предоставил ноль JSON:

{}

Что вернуло:

Fatal error: Uncaught TypeError: Argument 2 passed to
fauxapi\v1\fauxApiPfsenseInterface::array_merge_recursive_distinct() must be of the type array, null given, called in
/etc/inc/fauxapi/fauxapi_pfsense_interface.inc on line 120 and defined in
/etc/inc/fauxapi/fauxapi_pfsense_interface.inc:135
Stack trace:
#0 /etc/inc/fauxapi/fauxapi_pfsense_interface.inc(120):
fauxapi\v1\fauxApiPfsenseInterface->array_merge_recursive_distinct(Array, NULL)
#1 /etc/inc/fauxapi/fauxapi_actions.inc(113): fauxapi\v1\fauxApiPfsenseInterface->config_patch(NULL, true, true)
#2 /etc/inc/fauxapi/fauxapi.inc(90): fauxapi\v1\fauxApiActions->config_patch(Array)
#3 /usr/local/www/fauxapi/v1/index.php(32): fauxapi\v1\fauxApi->__call('config_patch', Array)
#4 {main}
thrown in /etc/inc/fauxapi/fauxapi_pfsense_interface.inc on line 135
PHP ERROR: Type: 1, File: /etc/inc/fauxapi/fauxapi_pfsense_interface.inc, Line: 135, Message: Uncaught TypeError:
Argument 2 passed to fauxapi\v1\fauxApiPfsenseInterface::array_merge_recursive_distinct() must be of the type array,
null given, called in /etc/inc/fauxapi/fauxapi_pfsense_interface.inc on line 120 and defined in
/etc/inc/fauxapi/fauxapi_pfsense_interface.inc:135
Stack trace:
#0 /etc/inc/fauxapi/fauxapi_pfsense_interface.inc(120):
fauxapi\v1\fauxApiPfsenseInterface->array_merge_recursive_distinct(Array, NULL)
#1 /etc/inc/fauxapi/fauxapi_actions.inc(113): fauxapi\v1\fauxApiPfsenseInterface->config_patch(NULL, true, true)
#2 /etc/inc/fauxapi/fauxapi.inc(90): fauxapi\v1\fauxApiActions->config_patch(Array)
#3 /usr/local/www/fauxapi/v1/index.php(32): fauxapi\v1\fauxApi->__call('config_patch', Array)
#4 {main}
thrown

Я хочу добавить пользователя в этой структуре:

"freeradius": {
                    "config": [
                        {
                            "sortable": "",
                            "varusersusername": "blah",
                            "varuserspassword": "password",
//just for debug purposes
                            "varuserspasswordencryption": "Cleartext-Password",
                            "varusersmotpenable": "",
                            "varusersauthmethod": "",
                            "varusersmotpinitsecret": "",
                            "varusersmotppin": "",
                            "varusersmotpoffset": "",
                            "qrcodetext": "",
                            "varuserswisprredirectionurl": "",
                            "varuserssimultaneousconnect": "",
                            "description": "",
                            "varusersframedipaddress": "",
                            "varusersframedipnetmask": "",
                            "varusersframedroute": "",
                            "varusersvlanid": "",
                            "varusersexpiration": "",
                            "varuserssessiontimeout": "",
                            "varuserslogintime": "",
                            "varusersamountoftime": "",
                            "varuserspointoftime": "Daily",
                            "varusersmaxtotaloctets": "1000",
                            "varusersmaxtotaloctetstimerange": "daily",
                            "varusersmaxbandwidthdown": "2048",
                            "varusersmaxbandwidthup": "2048",
                            "varusersacctinteriminterval": "",
                            "varuserstopadditionaloptions": "",
                            "varuserscheckitemsadditionaloptions": "",
                            "varusersreplyitemsadditionaloptions": ""
                        },

1 Ответ

0 голосов
/ 08 ноября 2019

Хорошо, получается, что pfsense плохо интегрируется с freeradius. Пост переписал бы массив конфигурации xml для freeradius. Я обнаружил, что OPNSense гораздо лучше оснащен для работы с плагинами.

Благодаря этому я смог лучше справляться с пользователями freeradius:

https://docs.opnsense.org/development/api/plugins/freeradius.html

...