summaryrefslogtreecommitdiffstats
path: root/modules-available
diff options
context:
space:
mode:
authorSimon Rettberg2020-07-10 17:27:56 +0200
committerSimon Rettberg2020-07-30 13:31:34 +0200
commit04449f369f42469c707e134dc2dab66938607ddd (patch)
tree68ceb6de1a96f8327f91e6ea2c77be24dcd7b091 /modules-available
parent[minilinux] Lower update disable to 5 mins (was 10) (diff)
downloadslx-admin-04449f369f42469c707e134dc2dab66938607ddd.tar.gz
slx-admin-04449f369f42469c707e134dc2dab66938607ddd.tar.xz
slx-admin-04449f369f42469c707e134dc2dab66938607ddd.zip
[minilinux] (bootentry-hook) Add entry for "latest from branch"
The iPXE menu item of type "minilinux" will now show an option to automatically use the latest locally installed version for each branch.
Diffstat (limited to 'modules-available')
-rw-r--r--modules-available/minilinux/inc/linuxbootentryhook.inc.php29
-rw-r--r--modules-available/minilinux/lang/de/module.json1
-rw-r--r--modules-available/minilinux/lang/de/permissions.json5
-rw-r--r--modules-available/minilinux/lang/en/module.json1
-rw-r--r--modules-available/minilinux/lang/en/permissions.json5
5 files changed, 32 insertions, 9 deletions
diff --git a/modules-available/minilinux/inc/linuxbootentryhook.inc.php b/modules-available/minilinux/inc/linuxbootentryhook.inc.php
index 324ffc7e..30ede469 100644
--- a/modules-available/minilinux/inc/linuxbootentryhook.inc.php
+++ b/modules-available/minilinux/inc/linuxbootentryhook.inc.php
@@ -37,6 +37,7 @@ class LinuxBootEntryHook extends BootEntryHook
/*
* Dictionary::translate('default_boot_entry');
* Dictionary::translate('not_installed_hint');
+ * Dictionary::translate('latest_of_branch');
*/
$array = [];
$array[] = new HookEntryGroup($this->name(), [
@@ -49,12 +50,19 @@ class LinuxBootEntryHook extends BootEntryHook
// Group by branch for detailed listing
foreach ($branches as $branch) {
if (isset($versions[$branch['branchid']])) {
- $group = [];
+ $group = [
+ new HookEntry($branch['branchid'],
+ $branch['branchid'] . ' '
+ . Dictionary::translateFileModule('minilinux', 'module',
+ 'latest_of_branch', true),
+ true),
+ ];
foreach ($versions[$branch['branchid']] as $version) {
$valid = $version['installed'] != 0;
$title = $version['versionid'] . ' ' . $version['title'];
if (!$valid) {
- $title .= ' ' . Dictionary::translateFileModule('minilinux', 'module', 'not_installed_hint');
+ $title .= ' ' . Dictionary::translateFileModule('minilinux', 'module',
+ 'not_installed_hint', true);
}
$group[] = new HookEntry($version['versionid'], $title, $valid);
}
@@ -65,7 +73,7 @@ class LinuxBootEntryHook extends BootEntryHook
}
/**
- * @param $id
+ * @param $localData
* @return BootEntry the actual boot entry instance for given entry, false if invalid id
*/
public function getBootEntryInternal($localData)
@@ -76,13 +84,21 @@ class LinuxBootEntryHook extends BootEntryHook
} else {
$effectiveId = $id;
}
- $res = Database::queryFirst('SELECT installed, data FROM minilinux_version WHERE versionid = :id', ['id' => $effectiveId]);
+ $res = Database::queryFirst('SELECT versionid, installed, data FROM minilinux_version WHERE versionid = :id',
+ ['id' => $effectiveId]);
+ if ($res === false) {
+ // Maybe this is a branchid, which means latest from according branch (installed only)
+ $res = Database::queryFirst('SELECT versionid, installed, data FROM minilinux_version WHERE branchid = :id
+ ORDER BY installed DESC, dateline DESC LIMIT 1', // Order by installed instead of WHERE for better errormsg
+ ['id' => $effectiveId]);
+ }
if ($res === false) {
return BootEntry::newCustomBootEntry(['script' => 'prompt Invalid minilinux boot entry id: ' . $id]);
}
if ($res['installed'] == 0) {
return BootEntry::newCustomBootEntry(['script' => 'prompt Selected version not currently installed on server: ' . $effectiveId]);
}
+ $effectiveId = $res['versionid']; // In case we selected from a branchid, so above message doesn't show versionid
$remoteData = json_decode($res['data'], true);
$bios = $efi = false;
if (!@is_array($remoteData['agnostic']) && !@is_array($remoteData['efi']) && !@is_array($remoteData['bios'])) {
@@ -157,6 +173,9 @@ class LinuxBootEntryHook extends BootEntryHook
if ($id === 'default')
return true; // Meta-version that links to whatever the default is set to
$res = Database::queryFirst('SELECT installed FROM minilinux_version WHERE versionid = :id', ['id' => $id]);
- return $res !== false && $res['installed'];
+ if ($res !== false && $res['installed'])
+ return true;
+ $res = Database::queryFirst('SELECT branchid FROM minilinux_branch WHERE branchid = :id', ['id' => $id]);
+ return $res !== false;
}
}
diff --git a/modules-available/minilinux/lang/de/module.json b/modules-available/minilinux/lang/de/module.json
index 133e428f..9cf5c1a1 100644
--- a/modules-available/minilinux/lang/de/module.json
+++ b/modules-available/minilinux/lang/de/module.json
@@ -8,6 +8,7 @@
"ipxe-debug": "Debug-Ausgaben statt Bootlogo",
"ipxe-insecure-cpu": "Alle Mitigations for CPU-Sicherheitsl\u00fccken deaktivieren",
"ipxe-kcl-extra": "Modifikation der Kernel-Command-Line",
+ "latest_of_branch": "(Neueste lokal vorhandene Version)",
"menu-sources": "Update-Quellen",
"menu-versions": "Verf\u00fcgbare Versionen",
"module_name": "Netboot Grundsystem",
diff --git a/modules-available/minilinux/lang/de/permissions.json b/modules-available/minilinux/lang/de/permissions.json
index 29012620..c7d7df54 100644
--- a/modules-available/minilinux/lang/de/permissions.json
+++ b/modules-available/minilinux/lang/de/permissions.json
@@ -1,4 +1,5 @@
{
- "view": "Zeige Komponenten des Minilinux. Wird nicht benötigt, wenn Nutzer eine der anderen Rechte hat.",
- "update": "Aktualisieren von Komponenten des Minilinux."
+ "delete": "Ein heruntergeladenes Linux l\u00f6schen.",
+ "update": "Aktualisieren von Komponenten des Minilinux.",
+ "view": "Zeige Komponenten des Minilinux. Wird nicht ben\u00f6tigt, wenn Nutzer eine der anderen Rechte hat."
} \ No newline at end of file
diff --git a/modules-available/minilinux/lang/en/module.json b/modules-available/minilinux/lang/en/module.json
index 4667ceda..b58c48e2 100644
--- a/modules-available/minilinux/lang/en/module.json
+++ b/modules-available/minilinux/lang/en/module.json
@@ -8,6 +8,7 @@
"ipxe-debug": "Print debug messages instead of showing splash screen",
"ipxe-insecure-cpu": "Disable all mitigations for CPU security flaws",
"ipxe-kcl-extra": "Modifications to the kernel command line",
+ "latest_of_branch": "(Latest locally available version)",
"menu-sources": "Sources for updates",
"menu-versions": "Available versions",
"module_name": "Net-boot OS",
diff --git a/modules-available/minilinux/lang/en/permissions.json b/modules-available/minilinux/lang/en/permissions.json
index b8389e62..124dcdb8 100644
--- a/modules-available/minilinux/lang/en/permissions.json
+++ b/modules-available/minilinux/lang/en/permissions.json
@@ -1,4 +1,5 @@
{
- "view": "Show list of minilinux components. Not needed if User has any of the other permissions.",
- "update": "Update minilinux components."
+ "delete": "Delete a downloaded Linux version.",
+ "update": "Update minilinux components.",
+ "view": "Show list of minilinux components. Not needed if User has any of the other permissions."
} \ No newline at end of file