summaryrefslogtreecommitdiffstats
path: root/modules-available/dnbd3/page.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2017-10-13 15:13:38 +0200
committerSimon Rettberg2017-10-13 15:13:38 +0200
commitda6ecc50178f51d4fefe9730d88d4aa88f90dba4 (patch)
tree8d6dfa82d8d2926645b34aa3e5bc2be5265c1255 /modules-available/dnbd3/page.inc.php
parent[dnbd3] Show free space, fix styling, add help texts and strings (de) (diff)
downloadslx-admin-da6ecc50178f51d4fefe9730d88d4aa88f90dba4.tar.gz
slx-admin-da6ecc50178f51d4fefe9730d88d4aa88f90dba4.tar.xz
slx-admin-da6ecc50178f51d4fefe9730d88d4aa88f90dba4.zip
[dnbd3] Implement settings dialog for automatic proxies
Diffstat (limited to 'modules-available/dnbd3/page.inc.php')
-rw-r--r--modules-available/dnbd3/page.inc.php97
1 files changed, 65 insertions, 32 deletions
diff --git a/modules-available/dnbd3/page.inc.php b/modules-available/dnbd3/page.inc.php
index a2d47f1e..cfe86e48 100644
--- a/modules-available/dnbd3/page.inc.php
+++ b/modules-available/dnbd3/page.inc.php
@@ -18,6 +18,8 @@ class Page_Dnbd3 extends Page
$this->deleteServer();
} elseif ($action === 'addserver') {
$this->addServer();
+ } elseif ($action === 'editserver') {
+ $this->editServer();
} elseif ($action === 'savelocations') {
$this->saveServerLocations();
} elseif ($action === 'toggle-usage') {
@@ -28,6 +30,19 @@ class Page_Dnbd3 extends Page
}
}
+ private function editServer()
+ {
+ $server = $this->getServerById();
+ if (!isset($server['machineuuid'])) {
+ Message::addError('not-automatic-server', $server['ip']);
+ return;
+ }
+ $bgr = Request::post('bgr', false, 'bool');
+ $firewall = Request::post('firewall', false, 'bool');
+ RunMode::setRunMode($server['machineuuid'], 'dnbd3', 'proxy',
+ json_encode(compact('bgr', 'firewall')));
+ }
+
private function toggleUsage()
{
$enabled = Request::post('enabled', false, 'bool');
@@ -284,42 +299,60 @@ class Page_Dnbd3 extends Page
{
$action = Request::any('action', false, 'string');
if ($action === 'servertest') {
- Header('Content-Type: application/json; charset=utf-8');
- $ip = Request::post('ip', false, 'string');
- if ($ip === false)
- die('{"error": "Missing parameter", "fatal": true}');
- $ip = ip2long(trim($ip));
- if ($ip !== false) {
- $ip = long2ip($ip);
- }
- if ($ip === false)
- die('{"error": "Supports IPv4 only", "fatal": true}');
- // Dup?
- $res = Database::queryFirst('SELECT serverid FROM dnbd3_server s
- LEFT JOIN machine m USING (machineuuid)
- WHERE s.fixedip = :ip OR m.clientip = :ip', compact('ip'));
- if ($res !== false)
- die('{"error": "Server with this IP already exists", "fatal": true}');
- // Query
- $reply = Dnbd3Rpc::query($ip, 5003,true, false, false, true);
- if ($reply === false)
- die('{"error": "Could not reach server"}');
- if (!is_array($reply))
- die('{"error": "No JSON received from server"}');
- if (!isset($reply['uptime']) || !isset($reply['clientCount']))
- die('{"error": "Reply does not suggest this is a dnbd3 server"}');
- echo json_encode($reply);
+ $this->ajaxServerTest();
} elseif ($action === 'editserver') {
- $server = $this->getServerById();
- if (isset($server['machineuuid'])) {
- echo 'Not automatic server.';
- } else {
- //RunMode::getForModule()
- echo Render::parse('fragment-server-settings', $server);
- }
+ $this->ajaxEditServer();
} else {
die($action . '???');
}
}
+ private function ajaxServerTest()
+ {
+ Header('Content-Type: application/json; charset=utf-8');
+ $ip = Request::post('ip', false, 'string');
+ if ($ip === false)
+ die('{"error": "Missing parameter", "fatal": true}');
+ $ip = ip2long(trim($ip));
+ if ($ip !== false) {
+ $ip = long2ip($ip);
+ }
+ if ($ip === false)
+ die('{"error": "Supports IPv4 only", "fatal": true}');
+ // Dup?
+ $res = Database::queryFirst('SELECT serverid FROM dnbd3_server s
+ LEFT JOIN machine m USING (machineuuid)
+ WHERE s.fixedip = :ip OR m.clientip = :ip', compact('ip'));
+ if ($res !== false)
+ die('{"error": "Server with this IP already exists", "fatal": true}');
+ // Query
+ $reply = Dnbd3Rpc::query($ip, 5003,true, false, false, true);
+ if ($reply === false)
+ die('{"error": "Could not reach server"}');
+ if (!is_array($reply))
+ die('{"error": "No JSON received from server"}');
+ if (!isset($reply['uptime']) || !isset($reply['clientCount']))
+ die('{"error": "Reply does not suggest this is a dnbd3 server"}');
+ echo json_encode($reply);
+ }
+
+ private function ajaxEditServer()
+ {
+ $server = $this->getServerById();
+ if (!isset($server['machineuuid'])) {
+ echo 'Not automatic server.';
+ return;
+ }
+ $rm = RunMode::getForMode(Page::getModule(), 'proxy', false, true);
+ if (!isset($rm[$server['machineuuid']])) {
+ echo 'Error: RunMode entry missing.';
+ return;
+ }
+ $modeData = json_decode($rm[$server['machineuuid']]['modedata'], true);
+ if (is_array($modeData)) {
+ $server += $modeData;
+ }
+ echo Render::parse('fragment-server-settings', $server);
+ }
+
}