fix(startup): correct broken .// require paths in app.js to proper subdir paths

The 489f700 fix accidentally stripped the subdirectory name from all bare
requires (e.g. managers/state-manager → .//state-manager instead of
./managers/state-manager). Fixed all 39 occurrences with correct subdir
prefixes (managers/, security/, monitoring/, docker/, utilities/, recipes/).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Sami
2026-06-29 03:22:11 -07:00
co-authored by Claude Sonnet 4.6
parent 588af0dffe
commit 15dee0fe18
+39 -39
View File
@@ -17,41 +17,41 @@ const { errorResponse, ok } = require('./utils/responses');
const { asyncHandler } = require('./utils/async-handler'); const { asyncHandler } = require('./utils/async-handler');
// Managers and utilities // Managers and utilities
const StateManager = require('.//state-manager'); const StateManager = require('./managers/state-manager');
const platformPaths = require('../platform-paths'); const platformPaths = require('../platform-paths');
const { LicenseManager } = require('.//license-manager'); const { LicenseManager } = require('./managers/license-manager');
const credentialManager = require('.//credential-manager'); const credentialManager = require('./managers/credential-manager');
const authManager = require('.//auth-manager'); const authManager = require('./managers/auth-manager');
const dockerSecurity = require('.//docker-security'); const dockerSecurity = require('./security/docker-security');
const auditLogger = require('.//audit-logger'); const auditLogger = require('./security/audit-logger');
const portLockManager = require('.//port-lock-manager'); const portLockManager = require('./managers/port-lock-manager');
const resourceMonitor = require('.//resource-monitor'); const resourceMonitor = require('./managers/resource-monitor');
const backupManager = require('.//backup-manager'); const backupManager = require('./utilities/backup-manager');
const healthChecker = require('.//health-checker'); const healthChecker = require('./monitoring/health-checker');
const updateManager = require('.//update-manager'); const updateManager = require('./managers/update-manager');
const selfUpdater = require('.//self-updater'); const selfUpdater = require('./docker/self-updater');
const configureMiddleware = require('.//middleware'); const configureMiddleware = require('./utilities/middleware');
const { validateStartupConfig: _validateStartupConfig, syncHealthCheckerServices } = require('.//startup-validator'); const { validateStartupConfig: _validateStartupConfig, syncHealthCheckerServices } = require('./utilities/startup-validator');
const { CSRF_HEADER_NAME } = require('.//csrf-protection'); const { CSRF_HEADER_NAME } = require('./security/csrf-protection');
const { resolveServiceUrl } = require('.//url-resolver'); const { resolveServiceUrl } = require('./utilities/url-resolver');
const metrics = require('.//metrics'); const metrics = require('./monitoring/metrics');
const { validateURL } = require('.//input-validator'); const { validateURL } = require('./security/input-validator');
// Optional modules // Optional modules
let dockerMaintenance, logDigest; let dockerMaintenance, logDigest;
try { dockerMaintenance = require('.//docker-maintenance'); } catch (_) { /* optional module */ } try { dockerMaintenance = require('./docker/docker-maintenance'); } catch (_) { /* optional module */ }
try { logDigest = require('.//log-digest'); } catch (_) { /* optional module */ } try { logDigest = require('./security/log-digest'); } catch (_) { /* optional module */ }
// Workflow engine (bundled workflows) // Workflow engine (bundled workflows)
let bundledWorkflowsModule; let bundledWorkflowsModule;
let workflowEngine = null; let workflowEngine = null;
try { try {
bundledWorkflowsModule = require('.//bundled-workflows'); bundledWorkflowsModule = require('./recipes/bundled-workflows');
} catch (_) { /* optional module */ } } catch (_) { /* optional module */ }
// Templates // Templates
const { APP_TEMPLATES, TEMPLATE_CATEGORIES, DIFFICULTY_LEVELS } = require('.//app-templates'); const { APP_TEMPLATES, TEMPLATE_CATEGORIES, DIFFICULTY_LEVELS } = require('./docker/app-templates');
const { RECIPE_TEMPLATES, RECIPE_CATEGORIES } = require('.//recipe-templates'); const { RECIPE_TEMPLATES, RECIPE_CATEGORIES } = require('./recipes/recipe-templates');
// Route modules // Route modules
const healthRoutes = require('../routes/health'); const healthRoutes = require('../routes/health');
@@ -81,17 +81,17 @@ const dockerResourcesRoutes = require('../routes/docker-resources');
const eventsRoutes = require('../routes/events'); const eventsRoutes = require('../routes/events');
const workflowsRoutes = require('../routes/workflows'); const workflowsRoutes = require('../routes/workflows');
const dependenciesRoutes = require('../routes/dependencies'); const dependenciesRoutes = require('../routes/dependencies');
const DependencyManager = require('.//dependency-manager'); const DependencyManager = require('./managers/dependency-manager');
const autoRestartRoutes = require('../routes/auto-restart'); const autoRestartRoutes = require('../routes/auto-restart');
const configDriftRoutes = require('../routes/config-drift'); const configDriftRoutes = require('../routes/config-drift');
const sslMonitorRoutes = require('../routes/ssl-monitor'); const sslMonitorRoutes = require('../routes/ssl-monitor');
const { AutoRestartManager } = require('.//auto-restart-manager'); const { AutoRestartManager } = require('./managers/auto-restart-manager');
const { ConfigDriftDetector } = require('.//config-drift-detector'); const { ConfigDriftDetector } = require('./managers/config-drift-detector');
const SSLMonitor = require('.//ssl-monitor'); const SSLMonitor = require('./monitoring/ssl-monitor');
const DNSPropagationChecker = require('./dns/dns-propagation'); const DNSPropagationChecker = require('./dns/dns-propagation');
// Constants // Constants
const { APP } = require('.//constants'); const { APP } = require('./utilities/constants');
/** /**
* Create and configure the Express application * Create and configure the Express application
@@ -233,15 +233,15 @@ async function createApp() {
auditLogger, auditLogger,
authManager, authManager,
log, log,
cryptoUtils: require('.//crypto-utils'), cryptoUtils: require('./security/crypto-utils'),
isValidContainerId, isValidContainerId,
isTailscaleIP, isTailscaleIP,
getTailscaleStatus, getTailscaleStatus,
RATE_LIMITS: require('.//constants').RATE_LIMITS, RATE_LIMITS: require('./utilities/constants').RATE_LIMITS,
LIMITS: require('.//constants').LIMITS, LIMITS: require('./utilities/constants').LIMITS,
APP: require('.//constants').APP, APP: require('./utilities/constants').APP,
CACHE_CONFIGS: require('.//cache-config').CACHE_CONFIGS, CACHE_CONFIGS: require('./utilities/cache-config').CACHE_CONFIGS,
createCache: require('.//cache-config').createCache, createCache: require('./utilities/cache-config').createCache,
}); });
const { strictLimiter } = middlewareResult; const { strictLimiter } = middlewareResult;
@@ -254,7 +254,7 @@ async function createApp() {
// eslint-disable-next-line require-await -- may grow awaits as config loading evolves // eslint-disable-next-line require-await -- may grow awaits as config loading evolves
async function readConfig() { async function readConfig() {
const { readJsonFile } = require('.//fs-helpers'); const { readJsonFile } = require('./utilities/fs-helpers');
return readJsonFile(config.CONFIG_FILE, {}); return readJsonFile(config.CONFIG_FILE, {});
} }
@@ -277,7 +277,7 @@ async function createApp() {
async function saveTotpConfig() { async function saveTotpConfig() {
try { try {
const { writeJsonFile } = require('.//fs-helpers'); const { writeJsonFile } = require('./utilities/fs-helpers');
await writeJsonFile(config.TOTP_CONFIG_FILE, totpConfig); await writeJsonFile(config.TOTP_CONFIG_FILE, totpConfig);
} catch (e) { } catch (e) {
log.error('config', 'Could not save TOTP config', { error: e.message }); log.error('config', 'Could not save TOTP config', { error: e.message });
@@ -776,7 +776,7 @@ async function createApp() {
// Lightweight probe endpoint // Lightweight probe endpoint
app.get('/probe/:id', boundAsyncHandler(async (req, res) => { app.get('/probe/:id', boundAsyncHandler(async (req, res) => {
const id = req.params.id; const id = req.params.id;
const { exists } = require('.//fs-helpers'); const { exists } = require('./utilities/fs-helpers');
let service = null; let service = null;
if (id !== 'internet' && await exists(config.SERVICES_FILE)) { if (id !== 'internet' && await exists(config.SERVICES_FILE)) {
@@ -939,7 +939,7 @@ async function createApp() {
app.get('/api/v1/docs/spec', boundAsyncHandler(async (req, res) => { app.get('/api/v1/docs/spec', boundAsyncHandler(async (req, res) => {
const path = require('path'); const path = require('path');
const { exists } = require('.//fs-helpers'); const { exists } = require('./utilities/fs-helpers');
const fsp = require('fs').promises; const fsp = require('fs').promises;
const specPath = path.join(__dirname, '../openapi.yaml'); const specPath = path.join(__dirname, '../openapi.yaml');
@@ -952,7 +952,7 @@ async function createApp() {
}, 'api-docs-spec')); }, 'api-docs-spec'));
// Error handlers (MUST be last) // Error handlers (MUST be last)
const { notFoundHandler, errorMiddleware } = require('.//error-handler'); const { notFoundHandler, errorMiddleware } = require('./utilities/error-handler');
app.use('/api', notFoundHandler); app.use('/api', notFoundHandler);
app.use(errorMiddleware); app.use(errorMiddleware);