summaryrefslogtreecommitdiffstats
path: root/modules-available/dnbd3/page.inc.php
diff options
context:
space:
mode:
authorSimon Rettberg2017-12-11 16:10:38 +0100
committerSimon Rettberg2017-12-11 16:10:38 +0100
commit7c5bebc943557d771d0310bb7d82fbfbcc51b62b (patch)
tree5615822623f33440d69f18216656ce1ecc911dd6 /modules-available/dnbd3/page.inc.php
parent[dozmod] Increase limits for maxImageValidityDays and maxLectureValidityDays (diff)
downloadslx-admin-7c5bebc943557d771d0310bb7d82fbfbcc51b62b.tar.gz
slx-admin-7c5bebc943557d771d0310bb7d82fbfbcc51b62b.tar.xz
slx-admin-7c5bebc943557d771d0310bb7d82fbfbcc51b62b.zip
[dnbd3] Allow configuring alternative IP address for managed proxy
Diffstat (limited to 'modules-available/dnbd3/page.inc.php')
-rw-r--r--modules-available/dnbd3/page.inc.php34
1 files changed, 31 insertions, 3 deletions
diff --git a/modules-available/dnbd3/page.inc.php b/modules-available/dnbd3/page.inc.php
index 74a23021..39500f83 100644
--- a/modules-available/dnbd3/page.inc.php
+++ b/modules-available/dnbd3/page.inc.php
@@ -39,6 +39,34 @@ class Page_Dnbd3 extends Page
}
$bgr = Request::post('bgr', false, 'bool');
$firewall = Request::post('firewall', false, 'bool');
+ $overrideIp = false;
+ $sip = Request::post('fixedip', null, 'string');
+ if (empty($sip)) {
+ $overrideIp = null;
+ } elseif ($server['fixedip'] !== $overrideIp) {
+ $ip = ip2long(trim($sip));
+ if ($ip !== false) {
+ $ip = long2ip($ip);
+ }
+ if ($ip === false) {
+ Message::addError('invalid-ipv4', $sip);
+ return;
+ }
+ $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) {
+ Message::addError('server-already-exists', $ip);
+ return;
+ }
+ $overrideIp = $ip;
+ }
+ if ($overrideIp !== false) {
+ Database::exec('UPDATE dnbd3_server SET fixedip = :fixedip WHERE machineuuid = :uuid', array(
+ 'uuid' => $server['machineuuid'],
+ 'fixedip' => $overrideIp,
+ ));
+ }
RunMode::setRunMode($server['machineuuid'], 'dnbd3', 'proxy',
json_encode(compact('bgr', 'firewall')), false);
}
@@ -310,10 +338,10 @@ class Page_Dnbd3 extends Page
Message::addError('server-non-existent', 'server');
Util::redirect('?do=dnbd3');
}
- if (!is_null($server['clientip'])) {
- $server['ip'] = $server['clientip'];
- } elseif (!is_null($server['fixedip'])) {
+ if (!is_null($server['fixedip'])) {
$server['ip'] = $server['fixedip'];
+ } elseif (!is_null($server['clientip'])) {
+ $server['ip'] = $server['clientip'];
} else {
$server['ip'] = '127.0.0.1';
}