From 7b7a3a9e9e11a862a8ff896cd6490c52408fa990 Mon Sep 17 00:00:00 2001 From: Gmer4Lfe Date: Sat, 23 May 2026 16:48:52 -0400 Subject: [PATCH] Fix plugin routing, missing includes, and make SCRIPTS_DIR configurable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename varaverk.page → Varaverk.page: unRAID nginx only routes URLs starting with a capital letter (~^/[A-Z].*), lowercase caused 404 - Add require_once config.php to include/scheduler.php and include/docs.php: both used SCRIPTS_DIR constant without including the file that defines it - Replace hardcoded SCRIPTS_DIR with cfg-file-backed setting: reads from /boot/config/plugins/varaverk/varaverk.cfg, falls back to default on first run - Add Plugin Settings card to Config tab with scripts path field - Add api/settings.php to write the cfg file (validates directory exists) --- .../varaverk/{varaverk.page => Varaverk.page} | 0 .../emhttp/plugins/varaverk/api/settings.php | 24 +++++++++++++++ .../plugins/varaverk/include/config.php | 6 +++- .../emhttp/plugins/varaverk/include/docs.php | 2 ++ .../plugins/varaverk/include/scheduler.php | 2 ++ .../emhttp/plugins/varaverk/pages/config.php | 30 +++++++++++++++++++ 6 files changed, 63 insertions(+), 1 deletion(-) rename Plugin/usr/local/emhttp/plugins/varaverk/{varaverk.page => Varaverk.page} (100%) create mode 100644 Plugin/usr/local/emhttp/plugins/varaverk/api/settings.php diff --git a/Plugin/usr/local/emhttp/plugins/varaverk/varaverk.page b/Plugin/usr/local/emhttp/plugins/varaverk/Varaverk.page similarity index 100% rename from Plugin/usr/local/emhttp/plugins/varaverk/varaverk.page rename to Plugin/usr/local/emhttp/plugins/varaverk/Varaverk.page diff --git a/Plugin/usr/local/emhttp/plugins/varaverk/api/settings.php b/Plugin/usr/local/emhttp/plugins/varaverk/api/settings.php new file mode 100644 index 0000000..36ba32d --- /dev/null +++ b/Plugin/usr/local/emhttp/plugins/varaverk/api/settings.php @@ -0,0 +1,24 @@ + false, 'error' => 'scripts_dir is required']); + exit; +} + +if (!is_dir($scriptsDir)) { + echo json_encode(['ok' => false, 'error' => 'Directory does not exist']); + exit; +} + +$cfgFile = '/boot/config/plugins/varaverk/varaverk.cfg'; +$cfgDir = dirname($cfgFile); +if (!is_dir($cfgDir)) mkdir($cfgDir, 0755, true); + +$content = 'SCRIPTS_DIR="' . addslashes($scriptsDir) . '"' . "\n"; +$ok = file_put_contents($cfgFile, $content) !== false; + +echo json_encode(['ok' => $ok, 'error' => $ok ? null : 'Failed to write cfg file']); diff --git a/Plugin/usr/local/emhttp/plugins/varaverk/include/config.php b/Plugin/usr/local/emhttp/plugins/varaverk/include/config.php index 4cf2995..c10a518 100644 --- a/Plugin/usr/local/emhttp/plugins/varaverk/include/config.php +++ b/Plugin/usr/local/emhttp/plugins/varaverk/include/config.php @@ -2,8 +2,12 @@ // Config file parser and writer. // Reads master.conf and the appropriate host*.conf based on running host. -define('SCRIPTS_DIR', '/mnt/user/appdata/unraid_scripts'); +define('PLUGIN_CFG', '/boot/config/plugins/varaverk/varaverk.cfg'); + +$_vv_cfg = @parse_ini_file(PLUGIN_CFG) ?: []; +define('SCRIPTS_DIR', $_vv_cfg['SCRIPTS_DIR'] ?? '/mnt/user/appdata/unraid_scripts'); define('CONF_DIR', SCRIPTS_DIR . '/Configurations'); +unset($_vv_cfg); function vv_get_hostname(): string { return trim(shell_exec('hostname -s') ?: ''); diff --git a/Plugin/usr/local/emhttp/plugins/varaverk/include/docs.php b/Plugin/usr/local/emhttp/plugins/varaverk/include/docs.php index e2596ef..3b7a869 100644 --- a/Plugin/usr/local/emhttp/plugins/varaverk/include/docs.php +++ b/Plugin/usr/local/emhttp/plugins/varaverk/include/docs.php @@ -2,6 +2,8 @@ // Docs — markdown file discovery, $VAR substitution, and rendering. // Requires parsedown or similar. Falls back to
 if not available.
 
+require_once __DIR__ . '/config.php';
+
 define('PARSEDOWN_PATH', '/usr/local/emhttp/plugins/varaverk/lib/Parsedown.php');
 
 function vv_docs_tree(): array {
diff --git a/Plugin/usr/local/emhttp/plugins/varaverk/include/scheduler.php b/Plugin/usr/local/emhttp/plugins/varaverk/include/scheduler.php
index d057df3..95621f1 100644
--- a/Plugin/usr/local/emhttp/plugins/varaverk/include/scheduler.php
+++ b/Plugin/usr/local/emhttp/plugins/varaverk/include/scheduler.php
@@ -2,6 +2,8 @@
 // Scheduler — manages schedule.json and /etc/cron.d/varaverk.
 // schedule.json is per-host, never synced.
 
+require_once __DIR__ . '/config.php';
+
 define('SCHEDULE_FILE', '/boot/config/plugins/varaverk/schedule.json');
 define('CRON_FILE',     '/etc/cron.d/varaverk');
 define('CRON_USER',     'root');
diff --git a/Plugin/usr/local/emhttp/plugins/varaverk/pages/config.php b/Plugin/usr/local/emhttp/plugins/varaverk/pages/config.php
index a1e31b5..3eda69d 100644
--- a/Plugin/usr/local/emhttp/plugins/varaverk/pages/config.php
+++ b/Plugin/usr/local/emhttp/plugins/varaverk/pages/config.php
@@ -3,10 +3,25 @@ require_once dirname(__DIR__) . '/include/config.php';
 $files = vv_get_conf_files();
 $active = $_GET['conf'] ?? ($files[0] ?? '');
 if (!in_array($active, $files)) $active = $files[0] ?? '';
+$currentScriptsDir = SCRIPTS_DIR;
 ?>
 
 
+ +
+

Plugin Settings

+
+ + + + +
+
+
@@ -35,6 +50,21 @@ if (!in_array($active, $files)) $active = $files[0] ?? '';