OPNsense Plugin: install.sh Installer-Script (self-contained, alle Dateien inline)
This commit is contained in:
+41
-6
@@ -2,12 +2,47 @@
|
||||
|
||||
namespace OPNsense\RMMAgent\Api;
|
||||
|
||||
use OPNsense\Base\ApiMutableServiceControllerBase;
|
||||
use OPNsense\Base\ApiControllerBase;
|
||||
|
||||
class ServiceController extends ApiMutableServiceControllerBase
|
||||
class ServiceController extends ApiControllerBase
|
||||
{
|
||||
protected static $internalServiceClass = '\OPNsense\RMMAgent\RMMAgent';
|
||||
protected static $internalServiceTemplate = 'OPNsense/RMMAgent/config.yaml';
|
||||
protected static $internalServiceEnabled = 'general.Enabled';
|
||||
protected static $internalServiceName = 'rmmagent';
|
||||
public function statusAction()
|
||||
{
|
||||
$backend = new \OPNsense\Core\Backend();
|
||||
$response = trim($backend->configdRun('rmmagent status'));
|
||||
|
||||
if (strpos($response, 'is running') !== false) {
|
||||
return array('status' => 'running', 'message' => $response);
|
||||
} else {
|
||||
return array('status' => 'stopped', 'message' => $response);
|
||||
}
|
||||
}
|
||||
|
||||
public function startAction()
|
||||
{
|
||||
$backend = new \OPNsense\Core\Backend();
|
||||
$response = trim($backend->configdRun('rmmagent start'));
|
||||
return array('status' => 'ok', 'message' => $response);
|
||||
}
|
||||
|
||||
public function stopAction()
|
||||
{
|
||||
$backend = new \OPNsense\Core\Backend();
|
||||
$response = trim($backend->configdRun('rmmagent stop'));
|
||||
return array('status' => 'ok', 'message' => $response);
|
||||
}
|
||||
|
||||
public function restartAction()
|
||||
{
|
||||
$backend = new \OPNsense\Core\Backend();
|
||||
$response = trim($backend->configdRun('rmmagent restart'));
|
||||
return array('status' => 'ok', 'message' => $response);
|
||||
}
|
||||
|
||||
public function reconfigureAction()
|
||||
{
|
||||
$backend = new \OPNsense\Core\Backend();
|
||||
$response = trim($backend->configdRun('rmmagent reconfigure'));
|
||||
return array('status' => 'ok', 'message' => $response);
|
||||
}
|
||||
}
|
||||
|
||||
+41
-7
@@ -2,20 +2,54 @@
|
||||
|
||||
namespace OPNsense\RMMAgent\Api;
|
||||
|
||||
use OPNsense\Base\ApiMutableModelControllerBase;
|
||||
use OPNsense\Base\ApiControllerBase;
|
||||
use OPNsense\RMMAgent\RMMAgent;
|
||||
use OPNsense\Core\Config;
|
||||
|
||||
class SettingsController extends ApiMutableModelControllerBase
|
||||
class SettingsController extends ApiControllerBase
|
||||
{
|
||||
protected static $internalModelName = 'rmmagent';
|
||||
protected static $internalModelClass = 'OPNsense\RMMAgent\RMMAgent';
|
||||
|
||||
public function getAction()
|
||||
{
|
||||
return $this->getBase('general', 'general');
|
||||
$mdl = new RMMAgent();
|
||||
$result = array('general' => array());
|
||||
|
||||
foreach ($mdl->general->iterateItems() as $key => $node) {
|
||||
$result['general'][$key] = (string)$node;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function setAction()
|
||||
{
|
||||
return $this->setBase('general', 'general');
|
||||
$result = array('result' => 'failed');
|
||||
|
||||
if ($this->request->isPost()) {
|
||||
$mdl = new RMMAgent();
|
||||
|
||||
$post = $this->request->getPost('general');
|
||||
if (!empty($post)) {
|
||||
foreach ($post as $key => $value) {
|
||||
$node = $mdl->general->$key;
|
||||
if ($node !== null) {
|
||||
$node->setValue($value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$valMsgs = $mdl->performValidation();
|
||||
if ($valMsgs->count() > 0) {
|
||||
$result['validations'] = array();
|
||||
foreach ($valMsgs as $msg) {
|
||||
$result['validations']['general.' . $msg->getField()] = $msg->getMessage();
|
||||
}
|
||||
} else {
|
||||
$mdl->serializeToConfig();
|
||||
Config::getInstance()->save();
|
||||
$result['result'] = 'saved';
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,15 +9,47 @@
|
||||
mapDataToFormUI(data_get_map).done(function () {
|
||||
formatTokenizersUI();
|
||||
$('.selectpicker').selectpicker('refresh');
|
||||
updateServiceControlUI('rmmagent');
|
||||
});
|
||||
|
||||
// Service status abrufen
|
||||
ajaxCall('/api/rmmagent/service/status', {}, function (data, status) {
|
||||
if (data && data['status']) {
|
||||
var badge = data['status'] === 'running'
|
||||
? '<span class="label label-success">Running</span>'
|
||||
: '<span class="label label-danger">Stopped</span>';
|
||||
$('#service_status_container').html(badge);
|
||||
}
|
||||
});
|
||||
|
||||
$('#saveAct').unbind('click').click(function () {
|
||||
saveFormToEndpoint('/api/rmmagent/settings/set', 'frm_GeneralSettings', function () {
|
||||
$('#saveAct_progress').addClass('fa fa-spinner fa-pulse');
|
||||
ajaxCall('/api/rmmagent/service/reconfigure', {}, function (data, status) {
|
||||
updateServiceControlUI('rmmagent');
|
||||
$('#saveAct_progress').removeClass('fa fa-spinner fa-pulse');
|
||||
// Status aktualisieren
|
||||
ajaxCall('/api/rmmagent/service/status', {}, function (data, status) {
|
||||
if (data && data['status']) {
|
||||
var badge = data['status'] === 'running'
|
||||
? '<span class="label label-success">Running</span>'
|
||||
: '<span class="label label-danger">Stopped</span>';
|
||||
$('#service_status_container').html(badge);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$('#restartAct').unbind('click').click(function () {
|
||||
$('#restartAct_progress').addClass('fa fa-spinner fa-pulse');
|
||||
ajaxCall('/api/rmmagent/service/restart', {}, function (data, status) {
|
||||
$('#restartAct_progress').removeClass('fa fa-spinner fa-pulse');
|
||||
ajaxCall('/api/rmmagent/service/status', {}, function (data, status) {
|
||||
if (data && data['status']) {
|
||||
var badge = data['status'] === 'running'
|
||||
? '<span class="label label-success">Running</span>'
|
||||
: '<span class="label label-danger">Stopped</span>';
|
||||
$('#service_status_container').html(badge);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -26,7 +58,7 @@
|
||||
|
||||
<div class="content-box" style="padding: 10px;">
|
||||
<div class="content-box-header">
|
||||
<h3>{{ lang._('RMM Agent Einstellungen') }}</h3>
|
||||
<h3>{{ lang._('RMM Agent') }} <small id="service_status_container"><span class="label label-default">...</span></small></h3>
|
||||
</div>
|
||||
<div class="content-box-main">
|
||||
<div class="table-responsive">
|
||||
@@ -36,16 +68,10 @@
|
||||
<div class="col-md-12">
|
||||
<hr/>
|
||||
<button class="btn btn-primary" id="saveAct" type="button">
|
||||
<b>{{ lang._('Speichern') }}</b> <i id="saveAct_progress"></i>
|
||||
<b>{{ lang._('Speichern & Anwenden') }}</b> <i id="saveAct_progress"></i>
|
||||
</button>
|
||||
<button class="btn btn-default" id="restartAct" type="button">
|
||||
<b>{{ lang._('Neustart') }}</b> <i id="restartAct_progress"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content-box" style="padding: 10px; margin-top: 20px;">
|
||||
<div class="content-box-header">
|
||||
<h3>{{ lang._('Dienst-Status') }}</h3>
|
||||
</div>
|
||||
<div class="content-box-main">
|
||||
{{ partial("layout_partials/service_control", ['serviceName': 'rmmagent']) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user