diff options
author | Simon Rettberg | 2017-12-11 16:10:38 +0100 |
---|---|---|
committer | Simon Rettberg | 2017-12-11 16:10:38 +0100 |
commit | 7c5bebc943557d771d0310bb7d82fbfbcc51b62b (patch) | |
tree | 5615822623f33440d69f18216656ce1ecc911dd6 /modules-available/dnbd3/page.inc.php | |
parent | [dozmod] Increase limits for maxImageValidityDays and maxLectureValidityDays (diff) | |
download | slx-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.php | 34 |
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'; } |