summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2023-06-13 14:57:31 +0200
committerSimon Rettberg2023-06-13 14:57:31 +0200
commit85fa80de1d6d400ac295f5432eb9948dc405611e (patch)
tree7562e07eab53be23a0df719c8a2d1ffeae902a8a
parent[permissionmanager] Update default permissions (diff)
downloadslx-admin-85fa80de1d6d400ac295f5432eb9948dc405611e.tar.gz
slx-admin-85fa80de1d6d400ac295f5432eb9948dc405611e.tar.xz
slx-admin-85fa80de1d6d400ac295f5432eb9948dc405611e.zip
[minilinux] Stricter check for stage 4 availability
-rw-r--r--modules-available/minilinux/inc/minilinux.inc.php18
1 files changed, 14 insertions, 4 deletions
diff --git a/modules-available/minilinux/inc/minilinux.inc.php b/modules-available/minilinux/inc/minilinux.inc.php
index 4960284f..09daf6c0 100644
--- a/modules-available/minilinux/inc/minilinux.inc.php
+++ b/modules-available/minilinux/inc/minilinux.inc.php
@@ -411,12 +411,22 @@ class MiniLinux
}
if ($image === false)
return true; // No stage4
- $mask = $rid;
if ($rid === 0) {
- $mask = '*';
+ // Get latest local revision
+ foreach (glob(CONFIG_VMSTORE_DIR . '/' . $image . '.r*', GLOB_NOSORT) as $file) {
+ if (preg_match('/\.r(\d+)$/', $file, $out)) {
+ $cmp = (int)$out[1];
+ if ($cmp > $rid) {
+ $rid = $cmp;
+ }
+ }
+ }
+ }
+ if ($rid > 0 && file_exists(CONFIG_VMSTORE_DIR . '/' . $image . '.r' . $rid)
+ && !file_exists(CONFIG_VMSTORE_DIR . '/' . $image . '.r' . $rid . '.map')) {
+ // Accept if image exists locally and no map file (map file would mean incomplete)
+ return true;
}
- if (glob(CONFIG_VMSTORE_DIR . '/' . $image . '.r' . $mask, GLOB_NOSORT) !== [])
- return true; // Already exists locally
// Not found locally -- try to replicate
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($sock === false) {