From 9cabb043956f7d83347b57d23ae1372d74be771f Mon Sep 17 00:00:00 2001 From: Gmer4Lfe Date: Sat, 8 Aug 2026 12:47:26 -0400 Subject: [PATCH] Resolve Custom script ids where the scripts actually live The Custom/ prefix is a namespace, not a directory under SCRIPTS_DIR, so every launcher that resolved it as one could never find the script. --- Plugin/unraid/api/dryrun.php | 5 ++++- Plugin/unraid/api/run.php | 5 ++++- Plugin/unraid/event/disks_mounted/array_start_jobs | 4 +++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Plugin/unraid/api/dryrun.php b/Plugin/unraid/api/dryrun.php index 449bcea..4408864 100644 --- a/Plugin/unraid/api/dryrun.php +++ b/Plugin/unraid/api/dryrun.php @@ -74,7 +74,10 @@ if (!$id || !preg_match('/^[a-zA-Z0-9_.\/\-]+\.sh$/', $id) || str_contains($id, exit; } -$script = SCRIPTS_DIR . '/' . $id; +// Custom scripts live outside the repo (CUSTOM_SCRIPTS_DIR) — everything else resolves under SCRIPTS_DIR. +$script = str_starts_with($id, 'Custom/') + ? CUSTOM_SCRIPTS_DIR . '/' . substr($id, strlen('Custom/')) + : SCRIPTS_DIR . '/' . $id; if (!file_exists($script)) { echo json_encode(['ok' => false, 'error' => 'Script not found: ' . $id]); exit; diff --git a/Plugin/unraid/api/run.php b/Plugin/unraid/api/run.php index d8e67ef..becfeec 100644 --- a/Plugin/unraid/api/run.php +++ b/Plugin/unraid/api/run.php @@ -77,7 +77,10 @@ if (!$id || !preg_match('/^[a-zA-Z0-9_.\/\-]+\.sh$/', $id) || str_contains($id, exit; } -$script = SCRIPTS_DIR . '/' . $id; +// Custom scripts live outside the repo (CUSTOM_SCRIPTS_DIR) — everything else resolves under SCRIPTS_DIR. +$script = str_starts_with($id, 'Custom/') + ? CUSTOM_SCRIPTS_DIR . '/' . substr($id, strlen('Custom/')) + : SCRIPTS_DIR . '/' . $id; if (!file_exists($script)) { echo json_encode(['ok' => false, 'error' => 'Script not found: ' . $id]); exit; diff --git a/Plugin/unraid/event/disks_mounted/array_start_jobs b/Plugin/unraid/event/disks_mounted/array_start_jobs index 2b0107b..cc0976d 100755 --- a/Plugin/unraid/event/disks_mounted/array_start_jobs +++ b/Plugin/unraid/event/disks_mounted/array_start_jobs @@ -8,7 +8,9 @@ foreach (\$s as \$id => \$e) { if (strncmp(\$id, '__', 2) === 0) continue; if ((\$e['cron'] ?? '') !== 'array_start') continue; if (empty(\$e['enabled'])) continue; - \$script = SCRIPTS_DIR . '/' . \$id; + \$script = strncmp(\$id, 'Custom/', 7) === 0 + ? CUSTOM_SCRIPTS_DIR . '/' . substr(\$id, 7) + : SCRIPTS_DIR . '/' . \$id; if (!file_exists(\$script)) continue; \$flags = !empty(\$e['log_enabled']) ? ' --log' : ''; exec('nohup bash ' . escapeshellarg(\$runner) . ' ' . escapeshellarg(\$id) . ' ' . escapeshellarg(\$script) . \$flags . ' > /dev/null 2>&1 &');