Fix: SettingsController in install.sh aktualisiert (rmmagent[general] Parsing)

This commit is contained in:
cynfo3000
2026-03-01 01:37:35 +01:00
parent 77ec200b42
commit c114df215a
11 changed files with 534 additions and 60 deletions
@@ -1,7 +1,5 @@
<?php
namespace OPNsense\RMMAgent\Api;
use OPNsense\Base\ApiControllerBase;
use OPNsense\RMMAgent\RMMAgent;
use OPNsense\Core\Config;
@@ -11,28 +9,48 @@ class SettingsController extends ApiControllerBase
public function getAction()
{
$mdl = new RMMAgent();
$result = array('general' => array());
$result = array('rmmagent' => array('general' => array()));
foreach ($mdl->general->iterateItems() as $key => $node) {
$result['general'][$key] = (string)$node;
$result['rmmagent']['general'][$key] = (string)$node;
}
return $result;
}
public function setAction()
{
$result = array('result' => 'failed');
if ($this->request->isPost()) {
$mdl = new RMMAgent();
$post = null;
// OPNsense sends data as rmmagent[general][KEY]
$rmmagent = $this->request->getPost('rmmagent');
if (!empty($rmmagent) && isset($rmmagent['general'])) {
$post = $rmmagent['general'];
}
// Fallback: JSON body
if (empty($post)) {
$rawBody = $this->request->getRawBody();
if (!empty($rawBody)) {
$jsonData = json_decode($rawBody, true);
if (isset($jsonData['rmmagent']['general'])) {
$post = $jsonData['rmmagent']['general'];
} elseif (isset($jsonData['general'])) {
$post = $jsonData['general'];
}
}
}
$post = $this->request->getPost('general');
if (!empty($post)) {
foreach ($post as $key => $value) {
$node = $mdl->general->$key;
if ($node !== null) {
$node->setValue($value);
try {
$node = $mdl->general->$key;
if ($node !== null) {
$node->setValue($value);
}
} catch (\Exception $e) {
// skip
}
}
}
@@ -41,7 +59,7 @@ class SettingsController extends ApiControllerBase
if ($valMsgs->count() > 0) {
$result['validations'] = array();
foreach ($valMsgs as $msg) {
$result['validations']['general.' . $msg->getField()] = $msg->getMessage();
$result['validations']['rmmagent.general.' . $msg->getField()] = $msg->getMessage();
}
} else {
$mdl->serializeToConfig();
@@ -49,7 +67,6 @@ class SettingsController extends ApiControllerBase
$result['result'] = 'saved';
}
}
return $result;
}
}