- Auth stack: fold cert monitor into Auth Stack page as fourth tab (Certs); remove standalone cert page and top-level tab - cert_monitor.sh: write JSON status cache to State_Files/cert_status.json after each run; expose per-domain days/expiry via _CERT_DAYS/_CERT_EXPIRY globals - api/cert.php: new — serves cached cert status; falls back to configured domains as UNKN when no cache exists; POST action=run triggers live check - arrs db fallbacks: vv_arr_cleanup_stats/discovery_stats/recovery_stats now read from data/*.db files when log JSON files don't yet exist - config.php vv_conf_vars(): unescape bash \$ → $ so passwords with dollar signs read correctly from conf files - host1.conf: fill in HOST1_NPM_USER/PASS and HOST1_LLDAP_USER/PASS - Partnership adapter pattern: Unraid-specific container logic extracted to Plugin/unraid/Partnership/; platform-agnostic structure stays in Partnership/ - First-run wizard: uniform multi-step flow for all hosts; HOST2 pull moved to checklist; auto SSH keygen and API key creation on save - api/checklist.php: live setup checklist with pull_master action - Fullscreen toggle: hide Unraid header/menu; state persists via localStorage
25 lines
695 B
PHP
25 lines
695 B
PHP
<?php
|
|
header('Content-Type: application/json');
|
|
require_once dirname(__DIR__) . '/include/config.php';
|
|
|
|
$scriptsDir = trim($_POST['scripts_dir'] ?? '');
|
|
|
|
if (!$scriptsDir) {
|
|
echo json_encode(['ok' => false, 'error' => 'scripts_dir is required']);
|
|
exit;
|
|
}
|
|
|
|
if (!is_dir($scriptsDir)) {
|
|
echo json_encode(['ok' => false, 'error' => 'Directory does not exist']);
|
|
exit;
|
|
}
|
|
|
|
$cfgFile = PLUGIN_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']);
|