使用 FauxAPI 查询将用户添加到具有 PHP 功能的 freeradius 配置 xml 用户列表
Using FauxAPI query to add a user to the freeradius config xml list of users with PHP function
我有一个服务器,其中包含使用 freeradius 的强制门户的允许用户列表。我希望有一个单独的服务器能够发送一个虚假的 api 请求以将用户添加到此配置 xml 列表。
我正在尝试使用邮递员向我的 pfsense 文件发送请求以修补配置。 body 应该如何构建?
我已经尝试了 function_call 请求
{
"function":"radius"
"args":[args]
}
并且相信也许我应该使用 config_patch 请求
该错误无助于描述它期望的 json 数据的结构。我提供了一个 null 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": ""
},
好的,事实证明 pfsense 没有很好地与 freeradius 集成。 post 会覆盖 freeradius 的 xml 配置数组。我发现 OPNSense 可以更好地处理插件。
使用它我能够更好地处理 freeradius 的用户:
https://docs.opnsense.org/development/api/plugins/freeradius.html
我有一个服务器,其中包含使用 freeradius 的强制门户的允许用户列表。我希望有一个单独的服务器能够发送一个虚假的 api 请求以将用户添加到此配置 xml 列表。
我正在尝试使用邮递员向我的 pfsense 文件发送请求以修补配置。 body 应该如何构建?
我已经尝试了 function_call 请求
{
"function":"radius"
"args":[args]
}
并且相信也许我应该使用 config_patch 请求
该错误无助于描述它期望的 json 数据的结构。我提供了一个 null 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": ""
},
好的,事实证明 pfsense 没有很好地与 freeradius 集成。 post 会覆盖 freeradius 的 xml 配置数组。我发现 OPNSense 可以更好地处理插件。
使用它我能够更好地处理 freeradius 的用户:
https://docs.opnsense.org/development/api/plugins/freeradius.html