diff --git a/dashcaddy-api/routes/config/backup.js b/dashcaddy-api/routes/config/backup.js index f3edbd2..46dbe2c 100644 --- a/dashcaddy-api/routes/config/backup.js +++ b/dashcaddy-api/routes/config/backup.js @@ -5,20 +5,29 @@ const { CADDY } = require('../../constants'); const { exists } = require('../../fs-helpers'); const { ValidationError, AuthenticationError } = require('../../errors'); -module.exports = function({ configStateManager, servicesStateManager, asyncHandler, log }) { - const express = require('express'); /** * Config backup routes factory * @param {Object} deps - Explicit dependencies - * @param {Object} deps.configStateManager - Config state manager - * @param {Object} deps.servicesStateManager - Services state manager - * @param {Function} deps.asyncHandler - Async route handler wrapper - * @param {Object} deps.log - Logger instance * @returns {express.Router} */ +module.exports = function(deps) { + const express = require('express'); const router = express.Router(); - const THEMES_DIR = process.env.THEMES_DIR || path.join(path.dirname(ctx.SERVICES_FILE), 'themes'); + // Extract dependencies + const { + configStateManager, servicesStateManager, asyncHandler, log, + SERVICES_FILE, CONFIG_FILE, TOTP_CONFIG_FILE, TAILSCALE_CONFIG_FILE, NOTIFICATIONS_FILE, + caddy, dns, fetchT, totpConfig, credentialManager, loadSiteConfig, loadNotificationConfig, session, saveTotpConfig + } = deps; + + // Create ctx-like object for compatibility with existing code + const ctx = { + SERVICES_FILE, CONFIG_FILE, TOTP_CONFIG_FILE, TAILSCALE_CONFIG_FILE, NOTIFICATIONS_FILE, + caddy, dns, fetchT, totpConfig, credentialManager, loadSiteConfig, loadNotificationConfig + }; + + const THEMES_DIR = process.env.THEMES_DIR || path.join(path.dirname(SERVICES_FILE), 'themes'); function readAllThemes() { const themes = {}; diff --git a/dashcaddy-api/routes/config/index.js b/dashcaddy-api/routes/config/index.js index 7bf0a56..3f350bd 100644 --- a/dashcaddy-api/routes/config/index.js +++ b/dashcaddy-api/routes/config/index.js @@ -8,15 +8,35 @@ const express = require('express'); module.exports = function(ctx) { const router = express.Router(); - const deps = { + // Common deps for all config routes + const baseDeps = { configStateManager: ctx.configStateManager, servicesStateManager: ctx.servicesStateManager, asyncHandler: ctx.asyncHandler, log: ctx.log }; - router.use(require('./settings')(deps)); - router.use(require('./assets')(deps)); - router.use(require('./backup')(deps)); + // Additional deps for backup route + const backupDeps = { + ...baseDeps, + SERVICES_FILE: ctx.SERVICES_FILE, + CONFIG_FILE: ctx.CONFIG_FILE, + TOTP_CONFIG_FILE: ctx.TOTP_CONFIG_FILE, + TAILSCALE_CONFIG_FILE: ctx.TAILSCALE_CONFIG_FILE, + NOTIFICATIONS_FILE: ctx.NOTIFICATIONS_FILE, + caddy: ctx.caddy, + dns: ctx.dns, + fetchT: ctx.fetchT, + totpConfig: ctx.totpConfig, + credentialManager: ctx.credentialManager, + loadSiteConfig: ctx.loadSiteConfig, + loadNotificationConfig: ctx.loadNotificationConfig, + session: ctx.session, + saveTotpConfig: ctx.saveTotpConfig + }; + + router.use(require('./settings')(baseDeps)); + router.use(require('./assets')({ ...baseDeps, CONFIG_FILE: ctx.CONFIG_FILE, readConfig: ctx.readConfig, saveConfig: ctx.saveConfig, errorResponse: ctx.errorResponse })); + router.use(require('./backup')(backupDeps)); return router; };