mirror of
https://github.com/netbirdio/plugins.git
synced 2026-05-22 18:44:07 -07:00
net/relayd: revert back from ApiMutableModelControllerBase xxxBase (#550)
This commit is contained in:
committed by
Franco Fichtner
parent
8d6debcf5d
commit
942c78928b
+1
-1
@@ -3,6 +3,6 @@ PLUGIN_VERSION= 2.0.d
|
||||
PLUGIN_DEPENDS= relayd
|
||||
PLUGIN_COMMENT= Relayd Load Balancer
|
||||
PLUGIN_MAINTAINER= frank.brendel@eurolog.com
|
||||
PLUGIN_REVISION= 0
|
||||
PLUGIN_REVISION= 1
|
||||
|
||||
.include "../../Mk/plugins.mk"
|
||||
|
||||
+90
-67
@@ -58,16 +58,25 @@ class SettingsController extends ApiMutableModelControllerBase
|
||||
*/
|
||||
public function getAction($nodeType = null, $uuid = null)
|
||||
{
|
||||
if ($nodeType != null) {
|
||||
$result = array("result" => "failed");
|
||||
if ($this->request->isGet() && $nodeType != null) {
|
||||
$this->validateNodeType($nodeType);
|
||||
$mdlRelayd = new Relayd();
|
||||
if ($nodeType == 'general') {
|
||||
$mdlRelayd = new Relayd();
|
||||
return array('result' => 'ok', 'general' => $mdlRelayd->getNodeByReference('general')->getNodes());
|
||||
$node = $mdlRelayd->getNodeByReference($nodeType);
|
||||
} else {
|
||||
return $this->getBase($nodeType, $nodeType, $uuid);
|
||||
if($uuid != null) {
|
||||
$node = $mdlRelayd->getNodeByReference($nodeType . '.' . $uuid);
|
||||
} else {
|
||||
$node = $mdlRelayd->$nodeType->Add();
|
||||
}
|
||||
}
|
||||
if ($node != null) {
|
||||
$result[$nodeType] = $node->getNodes();
|
||||
$result["result"] = "ok";
|
||||
}
|
||||
}
|
||||
return array("result" => "failed");
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -79,74 +88,85 @@ class SettingsController extends ApiMutableModelControllerBase
|
||||
*/
|
||||
public function setAction($nodeType = null, $uuid = null)
|
||||
{
|
||||
if (!$this->request->isPost() || !$this->request->hasPost("relayd") || $nodeType == null) {
|
||||
return array('result' => 'failed');
|
||||
}
|
||||
|
||||
$this->validateNodeType($nodeType);
|
||||
|
||||
$relaydInfo = $this->request->getPost("relayd");
|
||||
|
||||
if ($nodeType == 'general') {
|
||||
$result = array("result" => "failed", "validations" => array());
|
||||
if ($this->request->isPost() && $this->request->hasPost("relayd") && $nodeType != null) {
|
||||
$this->validateNodeType($nodeType);
|
||||
$mdlRelayd = new Relayd();
|
||||
$node = $mdlRelayd->getNodeByReference($nodeType);
|
||||
$node->setNodes($relaydInfo[$nodeType]);
|
||||
if ($relaydInfo['general']['enabled'] == '0') {
|
||||
$svcRelayd = new ServiceController();
|
||||
$svcRelayd->stopAction();
|
||||
}
|
||||
$mdlRelayd->serializeToConfig();
|
||||
Config::getInstance()->save();
|
||||
return array("result" => "saved");
|
||||
}
|
||||
|
||||
// perform plugin specific validations
|
||||
if ($nodeType == 'virtualserver') {
|
||||
if ($relaydInfo[$nodeType]['type'] == 'redirect') {
|
||||
if ($relaydInfo[$nodeType]['transport_tablemode'] != 'least-states' &&
|
||||
$relaydInfo[$nodeType]['transport_tablemode'] != 'roundrobin') {
|
||||
$result["validations"]['relayd.virtualserver.transport_tablemode'] = "Scheduler '" . $relaydInfo[$nodeType]['transport_tablemode'] . "' not supported for redirects.";
|
||||
}
|
||||
if ($relaydInfo[$nodeType]['backuptransport_tablemode'] != 'least-states' &&
|
||||
$relaydInfo[$nodeType]['backuptransport_tablemode'] != 'roundrobin') {
|
||||
$result["validations"]['relayd.virtualserver.backuptransport_tablemode'] = "Scheduler '" . $relaydInfo[$nodeType]['backuptransport_tablemode'] . "' not supported for redirects.";
|
||||
if ($nodeType == 'general') {
|
||||
$node = $mdlRelayd->getNodeByReference($nodeType);
|
||||
} else {
|
||||
if($uuid != null) {
|
||||
$node = $mdlRelayd->getNodeByReference($nodeType . '.' . $uuid);
|
||||
} else {
|
||||
$node = $mdlRelayd->$nodeType->Add();
|
||||
}
|
||||
}
|
||||
if ($relaydInfo[$nodeType]['type'] == 'relay') {
|
||||
if ($relaydInfo[$nodeType]['transport_tablemode'] == 'least-states') {
|
||||
$result["validations"]['relayd.virtualserver.transport_tablemode'] = "Scheduler '" . $relaydInfo[$nodeType]['transport_tablemode'] . "' not supported for relays.";
|
||||
if ($node != null) {
|
||||
$relaydInfo = $this->request->getPost("relayd");
|
||||
|
||||
// perform plugin specific validations
|
||||
if ($nodeType == 'virtualserver') {
|
||||
if ($relaydInfo[$nodeType]['type'] == 'redirect') {
|
||||
if ($relaydInfo[$nodeType]['transport_tablemode'] != 'least-states' &&
|
||||
$relaydInfo[$nodeType]['transport_tablemode'] != 'roundrobin') {
|
||||
$result["validations"]['relayd.virtualserver.transport_tablemode'] = "Scheduler '" . $relaydInfo[$nodeType]['transport_tablemode'] . "' not supported for redirects.";
|
||||
}
|
||||
if ($relaydInfo[$nodeType]['backuptransport_tablemode'] != 'least-states' &&
|
||||
$relaydInfo[$nodeType]['backuptransport_tablemode'] != 'roundrobin') {
|
||||
$result["validations"]['relayd.virtualserver.backuptransport_tablemode'] = "Scheduler '" . $relaydInfo[$nodeType]['backuptransport_tablemode'] . "' not supported for redirects.";
|
||||
}
|
||||
}
|
||||
if ($relaydInfo[$nodeType]['type'] == 'relay') {
|
||||
if ($relaydInfo[$nodeType]['transport_tablemode'] == 'least-states') {
|
||||
$result["validations"]['relayd.virtualserver.transport_tablemode'] = "Scheduler '" . $relaydInfo[$nodeType]['transport_tablemode'] . "' not supported for relays.";
|
||||
}
|
||||
if ($relaydInfo[$nodeType]['backuptransport_tablemode'] == 'least-states') {
|
||||
$result["validations"]['relayd.virtualserver.backuptransport_tablemode'] = "Scheduler '" . $relaydInfo[$nodeType]['backuptransport_tablemode'] . "' not supported for relays.";
|
||||
}
|
||||
}
|
||||
} elseif ($nodeType == 'tablecheck') {
|
||||
switch ($relaydInfo[$nodeType]['type']) {
|
||||
case 'send':
|
||||
if (empty($relaydInfo[$nodeType]['expect'])) {
|
||||
$result["validations"]['relayd.tablecheck.expect'] = "Expect Pattern cannot be empty.";
|
||||
}
|
||||
break;
|
||||
case 'script':
|
||||
if(empty($relaydInfo[$nodeType]['path'])) {
|
||||
$result["validations"]['relayd.tablecheck.path'] = "Script path cannot be empty.";
|
||||
}
|
||||
break;
|
||||
case 'http':
|
||||
if(empty($relaydInfo[$nodeType]['path'])) {
|
||||
$result["validations"]['relayd.tablecheck.path'] = "Path cannot be empty.";
|
||||
}
|
||||
if(empty($relaydInfo[$nodeType]['code']) && empty($relaydInfo[$nodeType]['digest'])) {
|
||||
$result["validations"]['relayd.tablecheck.code'] = "Provide one of Response Code or Message Digest.";
|
||||
$result["validations"]['relayd.tablecheck.digest'] = "Provide one of Response Code or Message Digest.";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ($relaydInfo[$nodeType]['backuptransport_tablemode'] == 'least-states') {
|
||||
$result["validations"]['relayd.virtualserver.backuptransport_tablemode'] = "Scheduler '" . $relaydInfo[$nodeType]['backuptransport_tablemode'] . "' not supported for relays.";
|
||||
|
||||
$node->setNodes($relaydInfo[$nodeType]);
|
||||
$valMsgs = $mdlRelayd->performValidation();
|
||||
foreach ($valMsgs as $field => $msg) {
|
||||
$fieldnm = str_replace($node->__reference, "relayd." . $nodeType, $msg->getField());
|
||||
$result["validations"][$fieldnm] = $msg->getMessage();
|
||||
}
|
||||
}
|
||||
} elseif ($nodeType == 'tablecheck') {
|
||||
switch ($relaydInfo[$nodeType]['type']) {
|
||||
case 'send':
|
||||
if (empty($relaydInfo[$nodeType]['expect'])) {
|
||||
$result["validations"]['relayd.tablecheck.expect'] = "Expect Pattern cannot be empty.";
|
||||
if (empty($result["validations"])) {
|
||||
unset($result["validations"]);
|
||||
$result['result'] = 'ok';
|
||||
$mdlRelayd->serializeToConfig();
|
||||
Config::getInstance()->save();
|
||||
if ($nodeType == 'general' && $relaydInfo['general']['enabled'] == '0') {
|
||||
$svcRelayd = new ServiceController();
|
||||
$result = $svcRelayd->stopAction();
|
||||
}
|
||||
break;
|
||||
case 'script':
|
||||
if (empty($relaydInfo[$nodeType]['path'])) {
|
||||
$result["validations"]['relayd.tablecheck.path'] = "Script path cannot be empty.";
|
||||
}
|
||||
break;
|
||||
case 'http':
|
||||
if (empty($relaydInfo[$nodeType]['path'])) {
|
||||
$result["validations"]['relayd.tablecheck.path'] = "Path cannot be empty.";
|
||||
}
|
||||
if (empty($relaydInfo[$nodeType]['code']) && empty($relaydInfo[$nodeType]['digest'])) {
|
||||
$result["validations"]['relayd.tablecheck.code'] = "Provide one of Response Code or Message Digest.";
|
||||
$result["validations"]['relayd.tablecheck.digest'] = "Provide one of Response Code or Message Digest.";
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($result["validations"])) {
|
||||
return $result;
|
||||
}
|
||||
return $this->setBase('relayd', $nodeType, $uuid);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -200,8 +220,11 @@ class SettingsController extends ApiMutableModelControllerBase
|
||||
*/
|
||||
public function searchAction($nodeType = null)
|
||||
{
|
||||
if ($nodeType != null) {
|
||||
$this->sessionClose();
|
||||
if ($this->request->isPost() && $nodeType != null) {
|
||||
$this->validateNodeType($nodeType);
|
||||
$mdlRelayd = new Relayd();
|
||||
$grid = new UIModelGrid($mdlRelayd->$nodeType);
|
||||
$fields = array();
|
||||
switch ($nodeType) {
|
||||
case 'host':
|
||||
@@ -220,7 +243,7 @@ class SettingsController extends ApiMutableModelControllerBase
|
||||
$fields = array('enabled', 'name', 'type');
|
||||
break;
|
||||
}
|
||||
return $this->searchBase($nodeType, $fields);
|
||||
return $grid->fetchBindRequest($this->request, $fields);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user