diff options
author | Simon Rettberg | 2023-06-13 14:57:31 +0200 |
---|---|---|
committer | Simon Rettberg | 2023-06-13 14:57:31 +0200 |
commit | 85fa80de1d6d400ac295f5432eb9948dc405611e (patch) | |
tree | 7562e07eab53be23a0df719c8a2d1ffeae902a8a | |
parent | [permissionmanager] Update default permissions (diff) | |
download | slx-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.php | 18 |
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) { |