summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2023-06-13 12:18:59 +0200
committerSimon Rettberg2023-06-13 12:18:59 +0200
commita079dcffbc8be5a0f1cd1e99d1a1bb69406c6ade (patch)
tree087c7e31600889a408b647a6c1bddfeb070e823a
parent[minilinux] Minor design tweaks to list (diff)
downloadslx-admin-a079dcffbc8be5a0f1cd1e99d1a1bb69406c6ade.tar.gz
slx-admin-a079dcffbc8be5a0f1cd1e99d1a1bb69406c6ade.tar.xz
slx-admin-a079dcffbc8be5a0f1cd1e99d1a1bb69406c6ade.zip
[dnbd3] Add option to prefer satellite server for initial connection
-rw-r--r--modules-available/dnbd3/baseconfig/getconfig.inc.php2
-rw-r--r--modules-available/dnbd3/inc/dnbd3.inc.php10
-rw-r--r--modules-available/dnbd3/lang/de/template-tags.json1
-rw-r--r--modules-available/dnbd3/lang/en/template-tags.json1
-rw-r--r--modules-available/dnbd3/page.inc.php9
-rw-r--r--modules-available/dnbd3/templates/page-serverlist.html4
6 files changed, 23 insertions, 4 deletions
diff --git a/modules-available/dnbd3/baseconfig/getconfig.inc.php b/modules-available/dnbd3/baseconfig/getconfig.inc.php
index 6a3aec25..b9091a34 100644
--- a/modules-available/dnbd3/baseconfig/getconfig.inc.php
+++ b/modules-available/dnbd3/baseconfig/getconfig.inc.php
@@ -32,7 +32,7 @@ $fallback = array();
foreach ($res as $row) {
if ($row['fixedip'] === '<self>') {
$row['fixedip'] = Property::getServerIp();
- $defPrio = 2000;
+ $defPrio = Dnbd3::preferLocal() ? 500 : 2000;
} else {
$defPrio = 1000;
}
diff --git a/modules-available/dnbd3/inc/dnbd3.inc.php b/modules-available/dnbd3/inc/dnbd3.inc.php
index 6d0f7ceb..def4e062 100644
--- a/modules-available/dnbd3/inc/dnbd3.inc.php
+++ b/modules-available/dnbd3/inc/dnbd3.inc.php
@@ -4,6 +4,7 @@ class Dnbd3 {
const PROP_ENABLED = 'dnbd3.enabled';
const PROP_NFS_FALLBACK = 'dnbd3.nfs-fallback';
+ const PROP_PREFER_LOCAL = 'dnbd3.prefer-local';
public static function isEnabled(): bool
{
@@ -25,6 +26,15 @@ class Dnbd3 {
{
Property::set(self::PROP_NFS_FALLBACK, $bool ? 1 : 0);
}
+ public static function preferLocal(): bool
+ {
+ return (bool)Property::get(self::PROP_PREFER_LOCAL, 0);
+ }
+
+ public static function setPreferLocal($bool)
+ {
+ Property::set(self::PROP_PREFER_LOCAL, $bool ? 1 : 0);
+ }
public static function getActiveServers(): array
{
diff --git a/modules-available/dnbd3/lang/de/template-tags.json b/modules-available/dnbd3/lang/de/template-tags.json
index cda5f83b..1730fe50 100644
--- a/modules-available/dnbd3/lang/de/template-tags.json
+++ b/modules-available/dnbd3/lang/de/template-tags.json
@@ -49,6 +49,7 @@
"lang_numFails": "Fehler",
"lang_overrideIp": "Zu verwendende IP-Adresse",
"lang_overrideIpInfo": "Normalerweise wird die automatisch per DHCP zugewiesene Adresse auf dem Boot-Interface verwendet. Falls der Proxy mit weiteren Netzwerkkarten ausgestattet ist (die ebenfalls per DHCP konfiguriert werden) kann durch Angabe einer solchen Alternativadresse hier die Verwendung der entsprechenden Karte erzwungen werden.",
+ "lang_preferSatDnbd3": "Bevorzuge Sat-Server f\u00fcr initiale Verbindung",
"lang_proxyConfig": "Konfiguration",
"lang_proxyLocationText": "Hier k\u00f6nnen Sie festlegen, dass nur Clients aus bestimmten R\u00e4umen\/Orten diesen Proxy verwenden. Damit vermeiden Sie die Metrikmessung zwischen Client und Proxy, wenn aufgrund der Infrastruktur bereits bekannt ist, dass dieser Proxy nur f\u00fcr bestimmte R\u00e4ume sinnvoll ist. ",
"lang_proxyServerTHead": "Server\/Proxy",
diff --git a/modules-available/dnbd3/lang/en/template-tags.json b/modules-available/dnbd3/lang/en/template-tags.json
index f1ee255c..27ba9598 100644
--- a/modules-available/dnbd3/lang/en/template-tags.json
+++ b/modules-available/dnbd3/lang/en/template-tags.json
@@ -49,6 +49,7 @@
"lang_numFails": "Errors",
"lang_overrideIp": "IP address to use",
"lang_overrideIpInfo": "Usually the address that the DHCP server assigns to the boot interface of the proxy will be used. If the proxy has multiple interfaces (that also get an address assigned via DHCP) you can specify that address here to enforce their usage instead.",
+ "lang_preferSatDnbd3": "Prefer satellite server for initial connection",
"lang_proxyConfig": "Configuration",
"lang_proxyLocationText": "Here you can restrict the usage of this proxy to certain locations. This can be useful if the usage is only reasonable from some locations. That may be because of the network infrastructure.",
"lang_proxyServerTHead": "Server\/Proxy",
diff --git a/modules-available/dnbd3/page.inc.php b/modules-available/dnbd3/page.inc.php
index f8cabca5..d60b3dfa 100644
--- a/modules-available/dnbd3/page.inc.php
+++ b/modules-available/dnbd3/page.inc.php
@@ -25,7 +25,7 @@ class Page_Dnbd3 extends Page
} elseif ($action === 'savelocations') {
$this->saveServerLocations();
} elseif ($action === 'toggle-usage') {
- $this->toggleUsage();
+ $this->saveGenericSettings();
}
if (Request::isPost()) {
Util::redirect('?do=dnbd3');
@@ -77,13 +77,15 @@ class Page_Dnbd3 extends Page
json_encode(compact('bgr', 'firewall', 'advancedSettings')), false);
}
- private function toggleUsage()
+ private function saveGenericSettings()
{
User::assertPermission('toggle-usage');
$enabled = Request::post('enabled', false, 'bool');
$nfs = Request::post('with-nfs', false, 'bool');
+ $preferLocal = Request::post('prefer-local', false, 'bool');
Dnbd3::setEnabled($enabled);
Dnbd3::setNfsFallback($nfs);
+ Dnbd3::setPreferLocal($preferLocal);
}
private function saveServerLocations()
@@ -208,7 +210,7 @@ class Page_Dnbd3 extends Page
$server['diskUsePercent'] = 0;
}
$server['self'] = ($server['fixedip'] === '<self>');
- if (isset($server['clientip']) && !is_null($server['clientip'])) {
+ if (isset($server['clientip'])) {
if ($NOW - $server['lastseen'] > 360) {
$server['slxDown'] = true;
} else {
@@ -251,6 +253,7 @@ class Page_Dnbd3 extends Page
'enabled' => Dnbd3::isEnabled(),
'enabled_checked_s' => Dnbd3::isEnabled() ? 'checked' : '',
'nfs_checked_s' => Dnbd3::hasNfsFallback() ? 'checked' : '',
+ 'local_checked_s' => Dnbd3::preferLocal() ? 'checked' : '',
'rebootcontrol' => Module::isAvailable('rebootcontrol', false)
);
Permission::addGlobalTags($data['perms'], null, ['view.details', 'refresh', 'toggle-usage', 'configure.proxy', 'configure.external']);
diff --git a/modules-available/dnbd3/templates/page-serverlist.html b/modules-available/dnbd3/templates/page-serverlist.html
index 4ccf75ff..efec21e1 100644
--- a/modules-available/dnbd3/templates/page-serverlist.html
+++ b/modules-available/dnbd3/templates/page-serverlist.html
@@ -28,6 +28,10 @@
<input id="allow-nfs" type="checkbox" name="with-nfs" {{nfs_checked_s}} {{perms.toggle-usage.disabled}}>
<label for="allow-nfs">{{lang_allowNfsFallback}}</label>
</div>
+ <div class="checkbox">
+ <input id="prefer-local" type="checkbox" name="prefer-local" {{local_checked_s}} {{perms.toggle-usage.disabled}}>
+ <label for="prefer-local">{{lang_preferSatDnbd3}}</label>
+ </div>
<button type="submit" name="action" value="toggle-usage" class="btn btn-success" {{perms.toggle-usage.disabled}}>
<span class="glyphicon glyphicon-floppy-disk"></span>
{{lang_save}}