From 8b6037b7ff2ef6329105a79592e4e3699dcb42c0 Mon Sep 17 00:00:00 2001 From: LukeGus Date: Thu, 16 Jul 2026 04:29:26 -0500 Subject: [PATCH] refactor(backend): reorganize top-level layout - ssh/ renamed to hosts/ (it covers SSH, RDP, VNC, Telnet, Docker, metrics) - serial/serial.ts and guacamole/ moved inside hosts/ - dashboard.ts and homepage.ts moved to services/ - swagger.ts moved to utils/ with adjusted scan globs Import paths and the generate:openapi script updated; ports and endpoints unchanged. --- package.json | 2 +- src/backend/database/database.ts | 2 +- .../database/routes/host-opkssh-routes.ts | 6 ++--- src/backend/database/routes/host.ts | 4 ++-- src/backend/database/routes/open-tabs.ts | 2 +- src/backend/database/routes/proxmox.ts | 4 ++-- .../database/routes/user-settings-routes.ts | 2 +- src/backend/database/routes/vault.ts | 2 +- src/backend/{ssh => hosts}/alert-engine.ts | 0 src/backend/{ssh => hosts}/auth-manager.ts | 0 src/backend/{ssh => hosts}/connection-log.ts | 0 .../{ssh => hosts}/container-runtime.ts | 0 .../credential-username.test.ts | 0 .../{ssh => hosts}/credential-username.ts | 0 src/backend/{ssh => hosts}/docker/console.ts | 0 .../{ssh => hosts}/docker/container-routes.ts | 0 src/backend/{ssh => hosts}/docker/index.ts | 0 src/backend/{ssh => hosts}/docker/routes.ts | 0 .../{ssh => hosts}/docker/session-manager.ts | 0 .../file-manager-action-routes.ts | 0 .../file-manager-content-routes.ts | 0 .../file-manager-download-routes.ts | 0 .../file-manager-list-routes.ts | 0 .../file-manager-operation-commands.test.ts | 0 .../file-manager-operation-commands.ts | 0 .../file-manager-operation-routes.ts | 0 .../{ssh => hosts}/file-manager-session.ts | 0 .../{ssh => hosts}/file-manager-utils.test.ts | 0 .../{ssh => hosts}/file-manager-utils.ts | 0 src/backend/{ssh => hosts}/file-manager.ts | 0 .../{ => hosts}/guacamole/guacamole-server.ts | 8 +++---- src/backend/{ => hosts}/guacamole/routes.ts | 14 ++++++------ .../guacamole/token-service.test.ts | 2 +- .../{ => hosts}/guacamole/token-service.ts | 2 +- .../{ssh => hosts}/host-key-verifier.ts | 0 .../host-metrics-helpers.test.ts | 0 .../{ssh => hosts}/host-metrics-helpers.ts | 0 .../host-metrics-history-routes.ts | 0 .../host-metrics-preferences-routes.ts | 0 .../host-metrics-preferences.test.ts | 0 .../{ssh => hosts}/host-metrics-sessions.ts | 0 .../host-metrics-settings-routes.ts | 0 .../{ssh => hosts}/host-metrics-state.test.ts | 0 .../{ssh => hosts}/host-metrics-state.ts | 0 .../host-metrics-viewer-routes.ts | 0 src/backend/{ssh => hosts}/host-metrics.ts | 0 src/backend/{ssh => hosts}/host-resolver.ts | 0 src/backend/{ssh => hosts}/host-transfer.ts | 0 src/backend/{ssh => hosts}/jump-host-chain.ts | 0 src/backend/{ssh => hosts}/jump-host-proxy.ts | 0 src/backend/{ssh => hosts}/managers/cron.ts | 0 .../managers/exec-elevated.test.ts | 0 .../{ssh => hosts}/managers/exec-elevated.ts | 0 .../{ssh => hosts}/managers/firewall.ts | 0 src/backend/{ssh => hosts}/managers/health.ts | 0 src/backend/{ssh => hosts}/managers/index.ts | 0 src/backend/{ssh => hosts}/managers/logs.ts | 0 .../{ssh => hosts}/managers/managers.test.ts | 0 .../{ssh => hosts}/managers/packages.ts | 0 .../{ssh => hosts}/managers/platform.ts | 0 .../{ssh => hosts}/managers/processes.ts | 0 .../{ssh => hosts}/managers/route-helpers.ts | 0 .../{ssh => hosts}/managers/services.ts | 0 .../{ssh => hosts}/managers/simple-reads.ts | 0 src/backend/{ssh => hosts}/managers/ssl.ts | 0 .../{ssh => hosts}/managers/tailscale.ts | 0 src/backend/{ssh => hosts}/managers/types.ts | 0 src/backend/{ssh => hosts}/managers/users.ts | 0 .../{ssh => hosts}/managers/validation.ts | 0 .../{ssh => hosts}/managers/wireguard.ts | 0 src/backend/{ssh => hosts}/opkssh-auth.ts | 0 .../{ssh => hosts}/opkssh-cert-auth.ts | 0 src/backend/{serial => hosts}/serial.ts | 0 .../{ssh => hosts}/ssh-connection-pool.ts | 0 src/backend/{ssh => hosts}/ssh-dns.test.ts | 0 src/backend/{ssh => hosts}/ssh-dns.ts | 0 .../terminal-agent-auth.test.ts | 0 .../{ssh => hosts}/terminal-auth-helpers.ts | 0 .../terminal-port-knocking.test.ts | 0 .../terminal-session-manager.test.ts | 0 .../terminal-session-manager.ts | 0 src/backend/{ssh => hosts}/terminal.ts | 0 .../{ssh => hosts}/tmux-helper.test.ts | 0 src/backend/{ssh => hosts}/tmux-helper.ts | 0 .../tmux-monitor-helpers.test.ts | 0 .../{ssh => hosts}/tmux-monitor-helpers.ts | 0 src/backend/{ssh => hosts}/tmux-monitor.ts | 0 src/backend/{ssh => hosts}/transfer-paths.ts | 0 .../{ssh => hosts}/transfer-routing.ts | 0 .../{ssh => hosts}/tunnel-c2s-relay-utils.ts | 0 .../{ssh => hosts}/tunnel-c2s-relay.ts | 0 .../{ssh => hosts}/tunnel-socks5-relay.ts | 0 .../{ssh => hosts}/tunnel-ssh-primitives.ts | 0 src/backend/{ssh => hosts}/tunnel-utils.ts | 0 src/backend/{ssh => hosts}/tunnel/index.ts | 0 src/backend/{ssh => hosts}/tunnel/manager.ts | 0 src/backend/{ssh => hosts}/tunnel/routes.ts | 0 src/backend/{ssh => hosts}/vault-oidc-auth.ts | 0 .../{ssh => hosts}/vault-signer-auth.ts | 0 .../{ssh => hosts}/vault-signer-core.test.ts | 0 .../{ssh => hosts}/vault-signer-core.ts | 0 .../{ssh => hosts}/vault-ssh-connect.ts | 0 .../widgets/common-utils.test.ts | 0 .../{ssh => hosts}/widgets/common-utils.ts | 0 .../widgets/cpu-collector.test.ts | 0 .../{ssh => hosts}/widgets/cpu-collector.ts | 0 .../{ssh => hosts}/widgets/disk-collector.ts | 0 .../widgets/firewall-collector.ts | 0 .../widgets/login-stats-collector.ts | 0 .../widgets/memory-collector.ts | 0 .../widgets/network-collector.ts | 0 .../{ssh => hosts}/widgets/ports-collector.ts | 0 .../widgets/processes-collector.ts | 0 .../widgets/system-collector.ts | 0 .../widgets/temperature-collector.test.ts | 0 .../widgets/temperature-collector.ts | 0 .../widgets/uptime-collector.ts | 0 src/backend/{ => services}/dashboard.ts | 14 ++++++------ src/backend/{ => services}/homepage.ts | 16 +++++++------- src/backend/starter.ts | 22 +++++++++---------- src/backend/{ => utils}/swagger.ts | 22 +++++++++++++------ 121 files changed, 66 insertions(+), 58 deletions(-) rename src/backend/{ssh => hosts}/alert-engine.ts (100%) rename src/backend/{ssh => hosts}/auth-manager.ts (100%) rename src/backend/{ssh => hosts}/connection-log.ts (100%) rename src/backend/{ssh => hosts}/container-runtime.ts (100%) rename src/backend/{ssh => hosts}/credential-username.test.ts (100%) rename src/backend/{ssh => hosts}/credential-username.ts (100%) rename src/backend/{ssh => hosts}/docker/console.ts (100%) rename src/backend/{ssh => hosts}/docker/container-routes.ts (100%) rename src/backend/{ssh => hosts}/docker/index.ts (100%) rename src/backend/{ssh => hosts}/docker/routes.ts (100%) rename src/backend/{ssh => hosts}/docker/session-manager.ts (100%) rename src/backend/{ssh => hosts}/file-manager-action-routes.ts (100%) rename src/backend/{ssh => hosts}/file-manager-content-routes.ts (100%) rename src/backend/{ssh => hosts}/file-manager-download-routes.ts (100%) rename src/backend/{ssh => hosts}/file-manager-list-routes.ts (100%) rename src/backend/{ssh => hosts}/file-manager-operation-commands.test.ts (100%) rename src/backend/{ssh => hosts}/file-manager-operation-commands.ts (100%) rename src/backend/{ssh => hosts}/file-manager-operation-routes.ts (100%) rename src/backend/{ssh => hosts}/file-manager-session.ts (100%) rename src/backend/{ssh => hosts}/file-manager-utils.test.ts (100%) rename src/backend/{ssh => hosts}/file-manager-utils.ts (100%) rename src/backend/{ssh => hosts}/file-manager.ts (100%) rename src/backend/{ => hosts}/guacamole/guacamole-server.ts (94%) rename src/backend/{ => hosts}/guacamole/routes.ts (97%) rename src/backend/{ => hosts}/guacamole/token-service.test.ts (97%) rename src/backend/{ => hosts}/guacamole/token-service.ts (99%) rename src/backend/{ssh => hosts}/host-key-verifier.ts (100%) rename src/backend/{ssh => hosts}/host-metrics-helpers.test.ts (100%) rename src/backend/{ssh => hosts}/host-metrics-helpers.ts (100%) rename src/backend/{ssh => hosts}/host-metrics-history-routes.ts (100%) rename src/backend/{ssh => hosts}/host-metrics-preferences-routes.ts (100%) rename src/backend/{ssh => hosts}/host-metrics-preferences.test.ts (100%) rename src/backend/{ssh => hosts}/host-metrics-sessions.ts (100%) rename src/backend/{ssh => hosts}/host-metrics-settings-routes.ts (100%) rename src/backend/{ssh => hosts}/host-metrics-state.test.ts (100%) rename src/backend/{ssh => hosts}/host-metrics-state.ts (100%) rename src/backend/{ssh => hosts}/host-metrics-viewer-routes.ts (100%) rename src/backend/{ssh => hosts}/host-metrics.ts (100%) rename src/backend/{ssh => hosts}/host-resolver.ts (100%) rename src/backend/{ssh => hosts}/host-transfer.ts (100%) rename src/backend/{ssh => hosts}/jump-host-chain.ts (100%) rename src/backend/{ssh => hosts}/jump-host-proxy.ts (100%) rename src/backend/{ssh => hosts}/managers/cron.ts (100%) rename src/backend/{ssh => hosts}/managers/exec-elevated.test.ts (100%) rename src/backend/{ssh => hosts}/managers/exec-elevated.ts (100%) rename src/backend/{ssh => hosts}/managers/firewall.ts (100%) rename src/backend/{ssh => hosts}/managers/health.ts (100%) rename src/backend/{ssh => hosts}/managers/index.ts (100%) rename src/backend/{ssh => hosts}/managers/logs.ts (100%) rename src/backend/{ssh => hosts}/managers/managers.test.ts (100%) rename src/backend/{ssh => hosts}/managers/packages.ts (100%) rename src/backend/{ssh => hosts}/managers/platform.ts (100%) rename src/backend/{ssh => hosts}/managers/processes.ts (100%) rename src/backend/{ssh => hosts}/managers/route-helpers.ts (100%) rename src/backend/{ssh => hosts}/managers/services.ts (100%) rename src/backend/{ssh => hosts}/managers/simple-reads.ts (100%) rename src/backend/{ssh => hosts}/managers/ssl.ts (100%) rename src/backend/{ssh => hosts}/managers/tailscale.ts (100%) rename src/backend/{ssh => hosts}/managers/types.ts (100%) rename src/backend/{ssh => hosts}/managers/users.ts (100%) rename src/backend/{ssh => hosts}/managers/validation.ts (100%) rename src/backend/{ssh => hosts}/managers/wireguard.ts (100%) rename src/backend/{ssh => hosts}/opkssh-auth.ts (100%) rename src/backend/{ssh => hosts}/opkssh-cert-auth.ts (100%) rename src/backend/{serial => hosts}/serial.ts (100%) rename src/backend/{ssh => hosts}/ssh-connection-pool.ts (100%) rename src/backend/{ssh => hosts}/ssh-dns.test.ts (100%) rename src/backend/{ssh => hosts}/ssh-dns.ts (100%) rename src/backend/{ssh => hosts}/terminal-agent-auth.test.ts (100%) rename src/backend/{ssh => hosts}/terminal-auth-helpers.ts (100%) rename src/backend/{ssh => hosts}/terminal-port-knocking.test.ts (100%) rename src/backend/{ssh => hosts}/terminal-session-manager.test.ts (100%) rename src/backend/{ssh => hosts}/terminal-session-manager.ts (100%) rename src/backend/{ssh => hosts}/terminal.ts (100%) rename src/backend/{ssh => hosts}/tmux-helper.test.ts (100%) rename src/backend/{ssh => hosts}/tmux-helper.ts (100%) rename src/backend/{ssh => hosts}/tmux-monitor-helpers.test.ts (100%) rename src/backend/{ssh => hosts}/tmux-monitor-helpers.ts (100%) rename src/backend/{ssh => hosts}/tmux-monitor.ts (100%) rename src/backend/{ssh => hosts}/transfer-paths.ts (100%) rename src/backend/{ssh => hosts}/transfer-routing.ts (100%) rename src/backend/{ssh => hosts}/tunnel-c2s-relay-utils.ts (100%) rename src/backend/{ssh => hosts}/tunnel-c2s-relay.ts (100%) rename src/backend/{ssh => hosts}/tunnel-socks5-relay.ts (100%) rename src/backend/{ssh => hosts}/tunnel-ssh-primitives.ts (100%) rename src/backend/{ssh => hosts}/tunnel-utils.ts (100%) rename src/backend/{ssh => hosts}/tunnel/index.ts (100%) rename src/backend/{ssh => hosts}/tunnel/manager.ts (100%) rename src/backend/{ssh => hosts}/tunnel/routes.ts (100%) rename src/backend/{ssh => hosts}/vault-oidc-auth.ts (100%) rename src/backend/{ssh => hosts}/vault-signer-auth.ts (100%) rename src/backend/{ssh => hosts}/vault-signer-core.test.ts (100%) rename src/backend/{ssh => hosts}/vault-signer-core.ts (100%) rename src/backend/{ssh => hosts}/vault-ssh-connect.ts (100%) rename src/backend/{ssh => hosts}/widgets/common-utils.test.ts (100%) rename src/backend/{ssh => hosts}/widgets/common-utils.ts (100%) rename src/backend/{ssh => hosts}/widgets/cpu-collector.test.ts (100%) rename src/backend/{ssh => hosts}/widgets/cpu-collector.ts (100%) rename src/backend/{ssh => hosts}/widgets/disk-collector.ts (100%) rename src/backend/{ssh => hosts}/widgets/firewall-collector.ts (100%) rename src/backend/{ssh => hosts}/widgets/login-stats-collector.ts (100%) rename src/backend/{ssh => hosts}/widgets/memory-collector.ts (100%) rename src/backend/{ssh => hosts}/widgets/network-collector.ts (100%) rename src/backend/{ssh => hosts}/widgets/ports-collector.ts (100%) rename src/backend/{ssh => hosts}/widgets/processes-collector.ts (100%) rename src/backend/{ssh => hosts}/widgets/system-collector.ts (100%) rename src/backend/{ssh => hosts}/widgets/temperature-collector.test.ts (100%) rename src/backend/{ssh => hosts}/widgets/temperature-collector.ts (100%) rename src/backend/{ssh => hosts}/widgets/uptime-collector.ts (100%) rename src/backend/{ => services}/dashboard.ts (95%) rename src/backend/{ => services}/homepage.ts (55%) rename src/backend/{ => utils}/swagger.ts (88%) diff --git a/package.json b/package.json index 45b8ad3a..594277e7 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "dev:backend": "tsc -p tsconfig.node.json && node -e \"require('fs').copyFileSync('src/backend/package.json','dist/backend/package.json')\" && node ./dist/backend/backend/starter.js", "dev:docker": "docker stop termix-dev 2>nul & docker rm termix-dev 2>nul & docker build -f docker/Dockerfile -t termix:dev --no-cache . && docker run -d --name termix-dev -p 3000:3000 -p 8080:8080 -p 30001-30006:30001-30006 -v \"%cd%\\db\\data:/app/data\" termix:dev", "dev:docker:restart": "docker stop termix-dev 2>nul & docker rm termix-dev 2>nul & docker run -d --name termix-dev -p 8080:8080 -p 30001-30006:30001-30006 -v \"%cd%\\db\\data:/app/data\" termix:dev", - "generate:openapi": "tsc -p tsconfig.node.json && node -e \"require('fs').copyFileSync('src/backend/package.json','dist/backend/package.json')\" && node ./dist/backend/backend/swagger.js", + "generate:openapi": "tsc -p tsconfig.node.json && node -e \"require('fs').copyFileSync('src/backend/package.json','dist/backend/package.json')\" && node ./dist/backend/backend/utils/swagger.js", "preview": "vite preview", "electron:dev": "concurrently \"npm run dev\" \"powershell -c \\\"Start-Sleep -Seconds 5\\\" && electron .\"", "electron:patch-builder": "node scripts/patch-app-builder-lib.cjs", diff --git a/src/backend/database/database.ts b/src/backend/database/database.ts index 186c2fd8..66914a15 100644 --- a/src/backend/database/database.ts +++ b/src/backend/database/database.ts @@ -11,7 +11,7 @@ import snippetsRoutes from "./routes/snippets.js"; import c2sTunnelPresetRoutes from "./routes/c2s-tunnel-presets.js"; import terminalRoutes from "./routes/terminal.js"; import sessionLogRoutes from "./routes/session-log-routes.js"; -import guacamoleRoutes from "../guacamole/routes.js"; +import guacamoleRoutes from "../hosts/guacamole/routes.js"; import networkTopologyRoutes from "./routes/network-topology.js"; import rbacRoutes from "./routes/rbac.js"; import openTabsRoutes from "./routes/open-tabs.js"; diff --git a/src/backend/database/routes/host-opkssh-routes.ts b/src/backend/database/routes/host-opkssh-routes.ts index 75ab5346..8ad2b4f2 100644 --- a/src/backend/database/routes/host-opkssh-routes.ts +++ b/src/backend/database/routes/host-opkssh-routes.ts @@ -52,7 +52,7 @@ export function registerHostOpksshRoutes(router: Router): void { try { const { getActiveAuthSession, registerOAuthState } = - await import("../../ssh/opkssh-auth.js"); + await import("../../hosts/opkssh-auth.js"); const session = getActiveAuthSession(requestId); if (!session) { @@ -562,7 +562,7 @@ export function registerHostOpksshRoutes(router: Router): void { getActiveAuthSession, getRequestIdByOAuthState, clearOAuthState, - } = await import("../../ssh/opkssh-auth.js"); + } = await import("../../hosts/opkssh-auth.js"); const userId = await getUserIdFromRequest({ cookies: req.cookies, @@ -729,7 +729,7 @@ export function registerHostOpksshRoutes(router: Router): void { try { const { getActiveAuthSession } = - await import("../../ssh/opkssh-auth.js"); + await import("../../hosts/opkssh-auth.js"); const session = getActiveAuthSession(requestId); if (!session) { diff --git a/src/backend/database/routes/host.ts b/src/backend/database/routes/host.ts index c1bfc133..5e15d11d 100644 --- a/src/backend/database/routes/host.ts +++ b/src/backend/database/routes/host.ts @@ -11,7 +11,7 @@ import { parseSSHKey } from "../../utils/ssh-key-utils.js"; import { pickResolvedPassword, pickResolvedUsername, -} from "../../ssh/credential-username.js"; +} from "../../hosts/credential-username.js"; import { createCurrentCommandHistoryRepository, createCurrentFileManagerBookmarkRepository, @@ -2252,7 +2252,7 @@ router.delete( } try { - const { deleteOPKSSHToken } = await import("../../ssh/opkssh-auth.js"); + const { deleteOPKSSHToken } = await import("../../hosts/opkssh-auth.js"); await deleteOPKSSHToken(userId, hostId); res.json({ success: true }); } catch (error) { diff --git a/src/backend/database/routes/open-tabs.ts b/src/backend/database/routes/open-tabs.ts index 18577c5c..a101c160 100644 --- a/src/backend/database/routes/open-tabs.ts +++ b/src/backend/database/routes/open-tabs.ts @@ -3,7 +3,7 @@ import express from "express"; import type { Request, Response } from "express"; import { databaseLogger } from "../../utils/logger.js"; import { AuthManager } from "../../utils/auth-manager.js"; -import { sessionManager } from "../../ssh/terminal-session-manager.js"; +import { sessionManager } from "../../hosts/terminal-session-manager.js"; import { getCurrentSettingValue, createCurrentOpenTabRepository, diff --git a/src/backend/database/routes/proxmox.ts b/src/backend/database/routes/proxmox.ts index 8f4618e6..b9aca14b 100644 --- a/src/backend/database/routes/proxmox.ts +++ b/src/backend/database/routes/proxmox.ts @@ -9,7 +9,7 @@ import { import { AuthManager } from "../../utils/auth-manager.js"; import type { AuthenticatedRequest } from "../../../types/index.js"; import type { SSHHost } from "../../../types/index.js"; -import { SSHHostKeyVerifier } from "../../ssh/host-key-verifier.js"; +import { SSHHostKeyVerifier } from "../../hosts/host-key-verifier.js"; const router = express.Router(); const proxmoxLogger = logger; @@ -402,7 +402,7 @@ async function discoverProxmoxGuestsForHost( sshConfig.passphrase = resolvedCredentials.keyPassword; } else if (authType === "agent") { const { applyAgentAuth } = - await import("../../ssh/terminal-auth-helpers.js"); + await import("../../hosts/terminal-auth-helpers.js"); const result = await applyAgentAuth( sshConfig, host.terminalConfig as unknown as Record | undefined, diff --git a/src/backend/database/routes/user-settings-routes.ts b/src/backend/database/routes/user-settings-routes.ts index a3589563..2c23c107 100644 --- a/src/backend/database/routes/user-settings-routes.ts +++ b/src/backend/database/routes/user-settings-routes.ts @@ -1,6 +1,6 @@ import type { AuthenticatedRequest } from "../../../types/index.js"; import type { RequestHandler, Router } from "express"; -import { restartGuacServer } from "../../guacamole/guacamole-server.js"; +import { restartGuacServer } from "../../hosts/guacamole/guacamole-server.js"; import { authLogger, getGlobalLogLevel, diff --git a/src/backend/database/routes/vault.ts b/src/backend/database/routes/vault.ts index e4d22cd8..d70b3050 100644 --- a/src/backend/database/routes/vault.ts +++ b/src/backend/database/routes/vault.ts @@ -8,7 +8,7 @@ import type { VaultProfileUpdateInput } from "../repositories/vault-profile-repo import type { AuthenticatedRequest } from "../../../types/index.js"; import { authLogger } from "../../utils/logger.js"; import { AuthManager } from "../../utils/auth-manager.js"; -import { completeVaultAuth } from "../../ssh/vault-oidc-auth.js"; +import { completeVaultAuth } from "../../hosts/vault-oidc-auth.js"; const router = express.Router(); diff --git a/src/backend/ssh/alert-engine.ts b/src/backend/hosts/alert-engine.ts similarity index 100% rename from src/backend/ssh/alert-engine.ts rename to src/backend/hosts/alert-engine.ts diff --git a/src/backend/ssh/auth-manager.ts b/src/backend/hosts/auth-manager.ts similarity index 100% rename from src/backend/ssh/auth-manager.ts rename to src/backend/hosts/auth-manager.ts diff --git a/src/backend/ssh/connection-log.ts b/src/backend/hosts/connection-log.ts similarity index 100% rename from src/backend/ssh/connection-log.ts rename to src/backend/hosts/connection-log.ts diff --git a/src/backend/ssh/container-runtime.ts b/src/backend/hosts/container-runtime.ts similarity index 100% rename from src/backend/ssh/container-runtime.ts rename to src/backend/hosts/container-runtime.ts diff --git a/src/backend/ssh/credential-username.test.ts b/src/backend/hosts/credential-username.test.ts similarity index 100% rename from src/backend/ssh/credential-username.test.ts rename to src/backend/hosts/credential-username.test.ts diff --git a/src/backend/ssh/credential-username.ts b/src/backend/hosts/credential-username.ts similarity index 100% rename from src/backend/ssh/credential-username.ts rename to src/backend/hosts/credential-username.ts diff --git a/src/backend/ssh/docker/console.ts b/src/backend/hosts/docker/console.ts similarity index 100% rename from src/backend/ssh/docker/console.ts rename to src/backend/hosts/docker/console.ts diff --git a/src/backend/ssh/docker/container-routes.ts b/src/backend/hosts/docker/container-routes.ts similarity index 100% rename from src/backend/ssh/docker/container-routes.ts rename to src/backend/hosts/docker/container-routes.ts diff --git a/src/backend/ssh/docker/index.ts b/src/backend/hosts/docker/index.ts similarity index 100% rename from src/backend/ssh/docker/index.ts rename to src/backend/hosts/docker/index.ts diff --git a/src/backend/ssh/docker/routes.ts b/src/backend/hosts/docker/routes.ts similarity index 100% rename from src/backend/ssh/docker/routes.ts rename to src/backend/hosts/docker/routes.ts diff --git a/src/backend/ssh/docker/session-manager.ts b/src/backend/hosts/docker/session-manager.ts similarity index 100% rename from src/backend/ssh/docker/session-manager.ts rename to src/backend/hosts/docker/session-manager.ts diff --git a/src/backend/ssh/file-manager-action-routes.ts b/src/backend/hosts/file-manager-action-routes.ts similarity index 100% rename from src/backend/ssh/file-manager-action-routes.ts rename to src/backend/hosts/file-manager-action-routes.ts diff --git a/src/backend/ssh/file-manager-content-routes.ts b/src/backend/hosts/file-manager-content-routes.ts similarity index 100% rename from src/backend/ssh/file-manager-content-routes.ts rename to src/backend/hosts/file-manager-content-routes.ts diff --git a/src/backend/ssh/file-manager-download-routes.ts b/src/backend/hosts/file-manager-download-routes.ts similarity index 100% rename from src/backend/ssh/file-manager-download-routes.ts rename to src/backend/hosts/file-manager-download-routes.ts diff --git a/src/backend/ssh/file-manager-list-routes.ts b/src/backend/hosts/file-manager-list-routes.ts similarity index 100% rename from src/backend/ssh/file-manager-list-routes.ts rename to src/backend/hosts/file-manager-list-routes.ts diff --git a/src/backend/ssh/file-manager-operation-commands.test.ts b/src/backend/hosts/file-manager-operation-commands.test.ts similarity index 100% rename from src/backend/ssh/file-manager-operation-commands.test.ts rename to src/backend/hosts/file-manager-operation-commands.test.ts diff --git a/src/backend/ssh/file-manager-operation-commands.ts b/src/backend/hosts/file-manager-operation-commands.ts similarity index 100% rename from src/backend/ssh/file-manager-operation-commands.ts rename to src/backend/hosts/file-manager-operation-commands.ts diff --git a/src/backend/ssh/file-manager-operation-routes.ts b/src/backend/hosts/file-manager-operation-routes.ts similarity index 100% rename from src/backend/ssh/file-manager-operation-routes.ts rename to src/backend/hosts/file-manager-operation-routes.ts diff --git a/src/backend/ssh/file-manager-session.ts b/src/backend/hosts/file-manager-session.ts similarity index 100% rename from src/backend/ssh/file-manager-session.ts rename to src/backend/hosts/file-manager-session.ts diff --git a/src/backend/ssh/file-manager-utils.test.ts b/src/backend/hosts/file-manager-utils.test.ts similarity index 100% rename from src/backend/ssh/file-manager-utils.test.ts rename to src/backend/hosts/file-manager-utils.test.ts diff --git a/src/backend/ssh/file-manager-utils.ts b/src/backend/hosts/file-manager-utils.ts similarity index 100% rename from src/backend/ssh/file-manager-utils.ts rename to src/backend/hosts/file-manager-utils.ts diff --git a/src/backend/ssh/file-manager.ts b/src/backend/hosts/file-manager.ts similarity index 100% rename from src/backend/ssh/file-manager.ts rename to src/backend/hosts/file-manager.ts diff --git a/src/backend/guacamole/guacamole-server.ts b/src/backend/hosts/guacamole/guacamole-server.ts similarity index 94% rename from src/backend/guacamole/guacamole-server.ts rename to src/backend/hosts/guacamole/guacamole-server.ts index 26dd1b73..1d142e21 100644 --- a/src/backend/guacamole/guacamole-server.ts +++ b/src/backend/hosts/guacamole/guacamole-server.ts @@ -1,11 +1,11 @@ import GuacamoleLite from "guacamole-lite"; -import { guacLogger } from "../utils/logger.js"; +import { guacLogger } from "../../utils/logger.js"; import { GuacamoleTokenService } from "./token-service.js"; -import { getCurrentSettingValue } from "../database/repositories/factory.js"; -import { resolveGuacdOptions } from "../utils/guacd-config.js"; +import { getCurrentSettingValue } from "../../database/repositories/factory.js"; +import { resolveGuacdOptions } from "../../utils/guacd-config.js"; import fs from "fs"; import path from "path"; -import { createCurrentSessionRecordingRepository } from "../database/repositories/factory.js"; +import { createCurrentSessionRecordingRepository } from "../../database/repositories/factory.js"; import type { GuacamoleRecordingMetadata } from "./token-service.js"; const tokenService = GuacamoleTokenService.getInstance(); diff --git a/src/backend/guacamole/routes.ts b/src/backend/hosts/guacamole/routes.ts similarity index 97% rename from src/backend/guacamole/routes.ts rename to src/backend/hosts/guacamole/routes.ts index 77d55121..f02e4658 100644 --- a/src/backend/guacamole/routes.ts +++ b/src/backend/hosts/guacamole/routes.ts @@ -1,18 +1,18 @@ import express from "express"; import { GuacamoleTokenService } from "./token-service.js"; -import { guacLogger } from "../utils/logger.js"; -import { AuthManager } from "../utils/auth-manager.js"; -import { PermissionManager } from "../utils/permission-manager.js"; +import { guacLogger } from "../../utils/logger.js"; +import { AuthManager } from "../../utils/auth-manager.js"; +import { PermissionManager } from "../../utils/permission-manager.js"; import { Client } from "ssh2"; import net from "net"; import crypto from "crypto"; import path from "path"; -import type { AuthenticatedRequest } from "../../types/index.js"; +import type { AuthenticatedRequest } from "../../../types/index.js"; import { createCurrentHostResolutionRepository, createCurrentSettingsRepository, -} from "../database/repositories/factory.js"; -import { resolveGuacdOptions } from "../utils/guacd-config.js"; +} from "../../database/repositories/factory.js"; +import { resolveGuacdOptions } from "../../utils/guacd-config.js"; const router = express.Router(); const tokenService = GuacamoleTokenService.getInstance(); @@ -422,7 +422,7 @@ router.post( if (jumpHosts.length > 0) { try { - const { resolveHostById } = await import("../ssh/host-resolver.js"); + const { resolveHostById } = await import("../host-resolver.js"); const jumpHost = await resolveHostById(jumpHosts[0].hostId, userId); if (jumpHost) { const tunnelPort = await new Promise((resolve, reject) => { diff --git a/src/backend/guacamole/token-service.test.ts b/src/backend/hosts/guacamole/token-service.test.ts similarity index 97% rename from src/backend/guacamole/token-service.test.ts rename to src/backend/hosts/guacamole/token-service.test.ts index 1b764028..f10b6025 100644 --- a/src/backend/guacamole/token-service.test.ts +++ b/src/backend/hosts/guacamole/token-service.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it, vi } from "vitest"; -vi.mock("../utils/logger.js", () => ({ +vi.mock("../../utils/logger.js", () => ({ guacLogger: { debug: vi.fn(), info: vi.fn(), diff --git a/src/backend/guacamole/token-service.ts b/src/backend/hosts/guacamole/token-service.ts similarity index 99% rename from src/backend/guacamole/token-service.ts rename to src/backend/hosts/guacamole/token-service.ts index 7126924a..d2fe23da 100644 --- a/src/backend/guacamole/token-service.ts +++ b/src/backend/hosts/guacamole/token-service.ts @@ -1,5 +1,5 @@ import crypto from "crypto"; -import { guacLogger } from "../utils/logger.js"; +import { guacLogger } from "../../utils/logger.js"; export interface GuacamoleConnectionSettings { type: "rdp" | "vnc" | "telnet"; diff --git a/src/backend/ssh/host-key-verifier.ts b/src/backend/hosts/host-key-verifier.ts similarity index 100% rename from src/backend/ssh/host-key-verifier.ts rename to src/backend/hosts/host-key-verifier.ts diff --git a/src/backend/ssh/host-metrics-helpers.test.ts b/src/backend/hosts/host-metrics-helpers.test.ts similarity index 100% rename from src/backend/ssh/host-metrics-helpers.test.ts rename to src/backend/hosts/host-metrics-helpers.test.ts diff --git a/src/backend/ssh/host-metrics-helpers.ts b/src/backend/hosts/host-metrics-helpers.ts similarity index 100% rename from src/backend/ssh/host-metrics-helpers.ts rename to src/backend/hosts/host-metrics-helpers.ts diff --git a/src/backend/ssh/host-metrics-history-routes.ts b/src/backend/hosts/host-metrics-history-routes.ts similarity index 100% rename from src/backend/ssh/host-metrics-history-routes.ts rename to src/backend/hosts/host-metrics-history-routes.ts diff --git a/src/backend/ssh/host-metrics-preferences-routes.ts b/src/backend/hosts/host-metrics-preferences-routes.ts similarity index 100% rename from src/backend/ssh/host-metrics-preferences-routes.ts rename to src/backend/hosts/host-metrics-preferences-routes.ts diff --git a/src/backend/ssh/host-metrics-preferences.test.ts b/src/backend/hosts/host-metrics-preferences.test.ts similarity index 100% rename from src/backend/ssh/host-metrics-preferences.test.ts rename to src/backend/hosts/host-metrics-preferences.test.ts diff --git a/src/backend/ssh/host-metrics-sessions.ts b/src/backend/hosts/host-metrics-sessions.ts similarity index 100% rename from src/backend/ssh/host-metrics-sessions.ts rename to src/backend/hosts/host-metrics-sessions.ts diff --git a/src/backend/ssh/host-metrics-settings-routes.ts b/src/backend/hosts/host-metrics-settings-routes.ts similarity index 100% rename from src/backend/ssh/host-metrics-settings-routes.ts rename to src/backend/hosts/host-metrics-settings-routes.ts diff --git a/src/backend/ssh/host-metrics-state.test.ts b/src/backend/hosts/host-metrics-state.test.ts similarity index 100% rename from src/backend/ssh/host-metrics-state.test.ts rename to src/backend/hosts/host-metrics-state.test.ts diff --git a/src/backend/ssh/host-metrics-state.ts b/src/backend/hosts/host-metrics-state.ts similarity index 100% rename from src/backend/ssh/host-metrics-state.ts rename to src/backend/hosts/host-metrics-state.ts diff --git a/src/backend/ssh/host-metrics-viewer-routes.ts b/src/backend/hosts/host-metrics-viewer-routes.ts similarity index 100% rename from src/backend/ssh/host-metrics-viewer-routes.ts rename to src/backend/hosts/host-metrics-viewer-routes.ts diff --git a/src/backend/ssh/host-metrics.ts b/src/backend/hosts/host-metrics.ts similarity index 100% rename from src/backend/ssh/host-metrics.ts rename to src/backend/hosts/host-metrics.ts diff --git a/src/backend/ssh/host-resolver.ts b/src/backend/hosts/host-resolver.ts similarity index 100% rename from src/backend/ssh/host-resolver.ts rename to src/backend/hosts/host-resolver.ts diff --git a/src/backend/ssh/host-transfer.ts b/src/backend/hosts/host-transfer.ts similarity index 100% rename from src/backend/ssh/host-transfer.ts rename to src/backend/hosts/host-transfer.ts diff --git a/src/backend/ssh/jump-host-chain.ts b/src/backend/hosts/jump-host-chain.ts similarity index 100% rename from src/backend/ssh/jump-host-chain.ts rename to src/backend/hosts/jump-host-chain.ts diff --git a/src/backend/ssh/jump-host-proxy.ts b/src/backend/hosts/jump-host-proxy.ts similarity index 100% rename from src/backend/ssh/jump-host-proxy.ts rename to src/backend/hosts/jump-host-proxy.ts diff --git a/src/backend/ssh/managers/cron.ts b/src/backend/hosts/managers/cron.ts similarity index 100% rename from src/backend/ssh/managers/cron.ts rename to src/backend/hosts/managers/cron.ts diff --git a/src/backend/ssh/managers/exec-elevated.test.ts b/src/backend/hosts/managers/exec-elevated.test.ts similarity index 100% rename from src/backend/ssh/managers/exec-elevated.test.ts rename to src/backend/hosts/managers/exec-elevated.test.ts diff --git a/src/backend/ssh/managers/exec-elevated.ts b/src/backend/hosts/managers/exec-elevated.ts similarity index 100% rename from src/backend/ssh/managers/exec-elevated.ts rename to src/backend/hosts/managers/exec-elevated.ts diff --git a/src/backend/ssh/managers/firewall.ts b/src/backend/hosts/managers/firewall.ts similarity index 100% rename from src/backend/ssh/managers/firewall.ts rename to src/backend/hosts/managers/firewall.ts diff --git a/src/backend/ssh/managers/health.ts b/src/backend/hosts/managers/health.ts similarity index 100% rename from src/backend/ssh/managers/health.ts rename to src/backend/hosts/managers/health.ts diff --git a/src/backend/ssh/managers/index.ts b/src/backend/hosts/managers/index.ts similarity index 100% rename from src/backend/ssh/managers/index.ts rename to src/backend/hosts/managers/index.ts diff --git a/src/backend/ssh/managers/logs.ts b/src/backend/hosts/managers/logs.ts similarity index 100% rename from src/backend/ssh/managers/logs.ts rename to src/backend/hosts/managers/logs.ts diff --git a/src/backend/ssh/managers/managers.test.ts b/src/backend/hosts/managers/managers.test.ts similarity index 100% rename from src/backend/ssh/managers/managers.test.ts rename to src/backend/hosts/managers/managers.test.ts diff --git a/src/backend/ssh/managers/packages.ts b/src/backend/hosts/managers/packages.ts similarity index 100% rename from src/backend/ssh/managers/packages.ts rename to src/backend/hosts/managers/packages.ts diff --git a/src/backend/ssh/managers/platform.ts b/src/backend/hosts/managers/platform.ts similarity index 100% rename from src/backend/ssh/managers/platform.ts rename to src/backend/hosts/managers/platform.ts diff --git a/src/backend/ssh/managers/processes.ts b/src/backend/hosts/managers/processes.ts similarity index 100% rename from src/backend/ssh/managers/processes.ts rename to src/backend/hosts/managers/processes.ts diff --git a/src/backend/ssh/managers/route-helpers.ts b/src/backend/hosts/managers/route-helpers.ts similarity index 100% rename from src/backend/ssh/managers/route-helpers.ts rename to src/backend/hosts/managers/route-helpers.ts diff --git a/src/backend/ssh/managers/services.ts b/src/backend/hosts/managers/services.ts similarity index 100% rename from src/backend/ssh/managers/services.ts rename to src/backend/hosts/managers/services.ts diff --git a/src/backend/ssh/managers/simple-reads.ts b/src/backend/hosts/managers/simple-reads.ts similarity index 100% rename from src/backend/ssh/managers/simple-reads.ts rename to src/backend/hosts/managers/simple-reads.ts diff --git a/src/backend/ssh/managers/ssl.ts b/src/backend/hosts/managers/ssl.ts similarity index 100% rename from src/backend/ssh/managers/ssl.ts rename to src/backend/hosts/managers/ssl.ts diff --git a/src/backend/ssh/managers/tailscale.ts b/src/backend/hosts/managers/tailscale.ts similarity index 100% rename from src/backend/ssh/managers/tailscale.ts rename to src/backend/hosts/managers/tailscale.ts diff --git a/src/backend/ssh/managers/types.ts b/src/backend/hosts/managers/types.ts similarity index 100% rename from src/backend/ssh/managers/types.ts rename to src/backend/hosts/managers/types.ts diff --git a/src/backend/ssh/managers/users.ts b/src/backend/hosts/managers/users.ts similarity index 100% rename from src/backend/ssh/managers/users.ts rename to src/backend/hosts/managers/users.ts diff --git a/src/backend/ssh/managers/validation.ts b/src/backend/hosts/managers/validation.ts similarity index 100% rename from src/backend/ssh/managers/validation.ts rename to src/backend/hosts/managers/validation.ts diff --git a/src/backend/ssh/managers/wireguard.ts b/src/backend/hosts/managers/wireguard.ts similarity index 100% rename from src/backend/ssh/managers/wireguard.ts rename to src/backend/hosts/managers/wireguard.ts diff --git a/src/backend/ssh/opkssh-auth.ts b/src/backend/hosts/opkssh-auth.ts similarity index 100% rename from src/backend/ssh/opkssh-auth.ts rename to src/backend/hosts/opkssh-auth.ts diff --git a/src/backend/ssh/opkssh-cert-auth.ts b/src/backend/hosts/opkssh-cert-auth.ts similarity index 100% rename from src/backend/ssh/opkssh-cert-auth.ts rename to src/backend/hosts/opkssh-cert-auth.ts diff --git a/src/backend/serial/serial.ts b/src/backend/hosts/serial.ts similarity index 100% rename from src/backend/serial/serial.ts rename to src/backend/hosts/serial.ts diff --git a/src/backend/ssh/ssh-connection-pool.ts b/src/backend/hosts/ssh-connection-pool.ts similarity index 100% rename from src/backend/ssh/ssh-connection-pool.ts rename to src/backend/hosts/ssh-connection-pool.ts diff --git a/src/backend/ssh/ssh-dns.test.ts b/src/backend/hosts/ssh-dns.test.ts similarity index 100% rename from src/backend/ssh/ssh-dns.test.ts rename to src/backend/hosts/ssh-dns.test.ts diff --git a/src/backend/ssh/ssh-dns.ts b/src/backend/hosts/ssh-dns.ts similarity index 100% rename from src/backend/ssh/ssh-dns.ts rename to src/backend/hosts/ssh-dns.ts diff --git a/src/backend/ssh/terminal-agent-auth.test.ts b/src/backend/hosts/terminal-agent-auth.test.ts similarity index 100% rename from src/backend/ssh/terminal-agent-auth.test.ts rename to src/backend/hosts/terminal-agent-auth.test.ts diff --git a/src/backend/ssh/terminal-auth-helpers.ts b/src/backend/hosts/terminal-auth-helpers.ts similarity index 100% rename from src/backend/ssh/terminal-auth-helpers.ts rename to src/backend/hosts/terminal-auth-helpers.ts diff --git a/src/backend/ssh/terminal-port-knocking.test.ts b/src/backend/hosts/terminal-port-knocking.test.ts similarity index 100% rename from src/backend/ssh/terminal-port-knocking.test.ts rename to src/backend/hosts/terminal-port-knocking.test.ts diff --git a/src/backend/ssh/terminal-session-manager.test.ts b/src/backend/hosts/terminal-session-manager.test.ts similarity index 100% rename from src/backend/ssh/terminal-session-manager.test.ts rename to src/backend/hosts/terminal-session-manager.test.ts diff --git a/src/backend/ssh/terminal-session-manager.ts b/src/backend/hosts/terminal-session-manager.ts similarity index 100% rename from src/backend/ssh/terminal-session-manager.ts rename to src/backend/hosts/terminal-session-manager.ts diff --git a/src/backend/ssh/terminal.ts b/src/backend/hosts/terminal.ts similarity index 100% rename from src/backend/ssh/terminal.ts rename to src/backend/hosts/terminal.ts diff --git a/src/backend/ssh/tmux-helper.test.ts b/src/backend/hosts/tmux-helper.test.ts similarity index 100% rename from src/backend/ssh/tmux-helper.test.ts rename to src/backend/hosts/tmux-helper.test.ts diff --git a/src/backend/ssh/tmux-helper.ts b/src/backend/hosts/tmux-helper.ts similarity index 100% rename from src/backend/ssh/tmux-helper.ts rename to src/backend/hosts/tmux-helper.ts diff --git a/src/backend/ssh/tmux-monitor-helpers.test.ts b/src/backend/hosts/tmux-monitor-helpers.test.ts similarity index 100% rename from src/backend/ssh/tmux-monitor-helpers.test.ts rename to src/backend/hosts/tmux-monitor-helpers.test.ts diff --git a/src/backend/ssh/tmux-monitor-helpers.ts b/src/backend/hosts/tmux-monitor-helpers.ts similarity index 100% rename from src/backend/ssh/tmux-monitor-helpers.ts rename to src/backend/hosts/tmux-monitor-helpers.ts diff --git a/src/backend/ssh/tmux-monitor.ts b/src/backend/hosts/tmux-monitor.ts similarity index 100% rename from src/backend/ssh/tmux-monitor.ts rename to src/backend/hosts/tmux-monitor.ts diff --git a/src/backend/ssh/transfer-paths.ts b/src/backend/hosts/transfer-paths.ts similarity index 100% rename from src/backend/ssh/transfer-paths.ts rename to src/backend/hosts/transfer-paths.ts diff --git a/src/backend/ssh/transfer-routing.ts b/src/backend/hosts/transfer-routing.ts similarity index 100% rename from src/backend/ssh/transfer-routing.ts rename to src/backend/hosts/transfer-routing.ts diff --git a/src/backend/ssh/tunnel-c2s-relay-utils.ts b/src/backend/hosts/tunnel-c2s-relay-utils.ts similarity index 100% rename from src/backend/ssh/tunnel-c2s-relay-utils.ts rename to src/backend/hosts/tunnel-c2s-relay-utils.ts diff --git a/src/backend/ssh/tunnel-c2s-relay.ts b/src/backend/hosts/tunnel-c2s-relay.ts similarity index 100% rename from src/backend/ssh/tunnel-c2s-relay.ts rename to src/backend/hosts/tunnel-c2s-relay.ts diff --git a/src/backend/ssh/tunnel-socks5-relay.ts b/src/backend/hosts/tunnel-socks5-relay.ts similarity index 100% rename from src/backend/ssh/tunnel-socks5-relay.ts rename to src/backend/hosts/tunnel-socks5-relay.ts diff --git a/src/backend/ssh/tunnel-ssh-primitives.ts b/src/backend/hosts/tunnel-ssh-primitives.ts similarity index 100% rename from src/backend/ssh/tunnel-ssh-primitives.ts rename to src/backend/hosts/tunnel-ssh-primitives.ts diff --git a/src/backend/ssh/tunnel-utils.ts b/src/backend/hosts/tunnel-utils.ts similarity index 100% rename from src/backend/ssh/tunnel-utils.ts rename to src/backend/hosts/tunnel-utils.ts diff --git a/src/backend/ssh/tunnel/index.ts b/src/backend/hosts/tunnel/index.ts similarity index 100% rename from src/backend/ssh/tunnel/index.ts rename to src/backend/hosts/tunnel/index.ts diff --git a/src/backend/ssh/tunnel/manager.ts b/src/backend/hosts/tunnel/manager.ts similarity index 100% rename from src/backend/ssh/tunnel/manager.ts rename to src/backend/hosts/tunnel/manager.ts diff --git a/src/backend/ssh/tunnel/routes.ts b/src/backend/hosts/tunnel/routes.ts similarity index 100% rename from src/backend/ssh/tunnel/routes.ts rename to src/backend/hosts/tunnel/routes.ts diff --git a/src/backend/ssh/vault-oidc-auth.ts b/src/backend/hosts/vault-oidc-auth.ts similarity index 100% rename from src/backend/ssh/vault-oidc-auth.ts rename to src/backend/hosts/vault-oidc-auth.ts diff --git a/src/backend/ssh/vault-signer-auth.ts b/src/backend/hosts/vault-signer-auth.ts similarity index 100% rename from src/backend/ssh/vault-signer-auth.ts rename to src/backend/hosts/vault-signer-auth.ts diff --git a/src/backend/ssh/vault-signer-core.test.ts b/src/backend/hosts/vault-signer-core.test.ts similarity index 100% rename from src/backend/ssh/vault-signer-core.test.ts rename to src/backend/hosts/vault-signer-core.test.ts diff --git a/src/backend/ssh/vault-signer-core.ts b/src/backend/hosts/vault-signer-core.ts similarity index 100% rename from src/backend/ssh/vault-signer-core.ts rename to src/backend/hosts/vault-signer-core.ts diff --git a/src/backend/ssh/vault-ssh-connect.ts b/src/backend/hosts/vault-ssh-connect.ts similarity index 100% rename from src/backend/ssh/vault-ssh-connect.ts rename to src/backend/hosts/vault-ssh-connect.ts diff --git a/src/backend/ssh/widgets/common-utils.test.ts b/src/backend/hosts/widgets/common-utils.test.ts similarity index 100% rename from src/backend/ssh/widgets/common-utils.test.ts rename to src/backend/hosts/widgets/common-utils.test.ts diff --git a/src/backend/ssh/widgets/common-utils.ts b/src/backend/hosts/widgets/common-utils.ts similarity index 100% rename from src/backend/ssh/widgets/common-utils.ts rename to src/backend/hosts/widgets/common-utils.ts diff --git a/src/backend/ssh/widgets/cpu-collector.test.ts b/src/backend/hosts/widgets/cpu-collector.test.ts similarity index 100% rename from src/backend/ssh/widgets/cpu-collector.test.ts rename to src/backend/hosts/widgets/cpu-collector.test.ts diff --git a/src/backend/ssh/widgets/cpu-collector.ts b/src/backend/hosts/widgets/cpu-collector.ts similarity index 100% rename from src/backend/ssh/widgets/cpu-collector.ts rename to src/backend/hosts/widgets/cpu-collector.ts diff --git a/src/backend/ssh/widgets/disk-collector.ts b/src/backend/hosts/widgets/disk-collector.ts similarity index 100% rename from src/backend/ssh/widgets/disk-collector.ts rename to src/backend/hosts/widgets/disk-collector.ts diff --git a/src/backend/ssh/widgets/firewall-collector.ts b/src/backend/hosts/widgets/firewall-collector.ts similarity index 100% rename from src/backend/ssh/widgets/firewall-collector.ts rename to src/backend/hosts/widgets/firewall-collector.ts diff --git a/src/backend/ssh/widgets/login-stats-collector.ts b/src/backend/hosts/widgets/login-stats-collector.ts similarity index 100% rename from src/backend/ssh/widgets/login-stats-collector.ts rename to src/backend/hosts/widgets/login-stats-collector.ts diff --git a/src/backend/ssh/widgets/memory-collector.ts b/src/backend/hosts/widgets/memory-collector.ts similarity index 100% rename from src/backend/ssh/widgets/memory-collector.ts rename to src/backend/hosts/widgets/memory-collector.ts diff --git a/src/backend/ssh/widgets/network-collector.ts b/src/backend/hosts/widgets/network-collector.ts similarity index 100% rename from src/backend/ssh/widgets/network-collector.ts rename to src/backend/hosts/widgets/network-collector.ts diff --git a/src/backend/ssh/widgets/ports-collector.ts b/src/backend/hosts/widgets/ports-collector.ts similarity index 100% rename from src/backend/ssh/widgets/ports-collector.ts rename to src/backend/hosts/widgets/ports-collector.ts diff --git a/src/backend/ssh/widgets/processes-collector.ts b/src/backend/hosts/widgets/processes-collector.ts similarity index 100% rename from src/backend/ssh/widgets/processes-collector.ts rename to src/backend/hosts/widgets/processes-collector.ts diff --git a/src/backend/ssh/widgets/system-collector.ts b/src/backend/hosts/widgets/system-collector.ts similarity index 100% rename from src/backend/ssh/widgets/system-collector.ts rename to src/backend/hosts/widgets/system-collector.ts diff --git a/src/backend/ssh/widgets/temperature-collector.test.ts b/src/backend/hosts/widgets/temperature-collector.test.ts similarity index 100% rename from src/backend/ssh/widgets/temperature-collector.test.ts rename to src/backend/hosts/widgets/temperature-collector.test.ts diff --git a/src/backend/ssh/widgets/temperature-collector.ts b/src/backend/hosts/widgets/temperature-collector.ts similarity index 100% rename from src/backend/ssh/widgets/temperature-collector.ts rename to src/backend/hosts/widgets/temperature-collector.ts diff --git a/src/backend/ssh/widgets/uptime-collector.ts b/src/backend/hosts/widgets/uptime-collector.ts similarity index 100% rename from src/backend/ssh/widgets/uptime-collector.ts rename to src/backend/hosts/widgets/uptime-collector.ts diff --git a/src/backend/dashboard.ts b/src/backend/services/dashboard.ts similarity index 95% rename from src/backend/dashboard.ts rename to src/backend/services/dashboard.ts index 003f69f9..6c2d903c 100644 --- a/src/backend/dashboard.ts +++ b/src/backend/services/dashboard.ts @@ -1,17 +1,17 @@ import express from "express"; import cookieParser from "cookie-parser"; -import { createCorsMiddleware } from "./utils/cors-config.js"; -import { dashboardLogger } from "./utils/logger.js"; -import { AuthManager } from "./utils/auth-manager.js"; -import type { AuthenticatedRequest } from "../types/index.js"; -import { dashboardServiceLinksRouter } from "./database/routes/dashboard-service-links-routes.js"; +import { createCorsMiddleware } from "../utils/cors-config.js"; +import { dashboardLogger } from "../utils/logger.js"; +import { AuthManager } from "../utils/auth-manager.js"; +import type { AuthenticatedRequest } from "../../types/index.js"; +import { dashboardServiceLinksRouter } from "../database/routes/dashboard-service-links-routes.js"; import { createCurrentHostResolutionRepository, createCurrentRbacAccessRepository, createCurrentRecentActivityRepository, createCurrentRoleRepository, -} from "./database/repositories/factory.js"; -import { DataCrypto } from "./utils/data-crypto.js"; +} from "../database/repositories/factory.js"; +import { DataCrypto } from "../utils/data-crypto.js"; const app = express(); const authManager = AuthManager.getInstance(); diff --git a/src/backend/homepage.ts b/src/backend/services/homepage.ts similarity index 55% rename from src/backend/homepage.ts rename to src/backend/services/homepage.ts index 01afd6c4..12e3b8b3 100644 --- a/src/backend/homepage.ts +++ b/src/backend/services/homepage.ts @@ -1,13 +1,13 @@ import express from "express"; import cookieParser from "cookie-parser"; -import { createCorsMiddleware } from "./utils/cors-config.js"; -import { AuthManager } from "./utils/auth-manager.js"; -import { homepageItemsRouter } from "./database/routes/homepage-items-routes.js"; -import { homepageLayoutRouter } from "./database/routes/homepage-layout-routes.js"; -import { homepageFaviconRouter } from "./database/routes/homepage-favicon-routes.js"; -import { homepageRssRouter } from "./database/routes/homepage-rss-routes.js"; -import { homepagePingRouter } from "./database/routes/homepage-ping-routes.js"; -import { homepageProxyRouter } from "./database/routes/homepage-proxy-routes.js"; +import { createCorsMiddleware } from "../utils/cors-config.js"; +import { AuthManager } from "../utils/auth-manager.js"; +import { homepageItemsRouter } from "../database/routes/homepage-items-routes.js"; +import { homepageLayoutRouter } from "../database/routes/homepage-layout-routes.js"; +import { homepageFaviconRouter } from "../database/routes/homepage-favicon-routes.js"; +import { homepageRssRouter } from "../database/routes/homepage-rss-routes.js"; +import { homepagePingRouter } from "../database/routes/homepage-ping-routes.js"; +import { homepageProxyRouter } from "../database/routes/homepage-proxy-routes.js"; const app = express(); const authManager = AuthManager.getInstance(); diff --git a/src/backend/starter.ts b/src/backend/starter.ts index 77e83ad7..113fb29a 100644 --- a/src/backend/starter.ts +++ b/src/backend/starter.ts @@ -154,16 +154,16 @@ import { const dbServer = await import("./database/database.js"); await (dbServer as unknown as { serverReady: Promise }).serverReady; - await import("./ssh/terminal.js"); - await import("./ssh/tunnel/index.js"); - await import("./ssh/file-manager.js"); - await import("./ssh/host-metrics.js"); - await import("./ssh/docker/index.js"); - await import("./ssh/docker/console.js"); - await import("./ssh/tmux-monitor.js"); // --- tmux-monitor --- - await import("./serial/serial.js"); - await import("./dashboard.js"); - await import("./homepage.js"); + await import("./hosts/terminal.js"); + await import("./hosts/tunnel/index.js"); + await import("./hosts/file-manager.js"); + await import("./hosts/host-metrics.js"); + await import("./hosts/docker/index.js"); + await import("./hosts/docker/console.js"); + await import("./hosts/tmux-monitor.js"); // --- tmux-monitor --- + await import("./hosts/serial.js"); + await import("./services/dashboard.js"); + await import("./services/homepage.js"); // Initialize log level from database settings const { getCurrentSettingValue } = @@ -180,7 +180,7 @@ import { const guacEnabled = getCurrentSettingValue("guac_enabled") !== "false"; if (process.env.ENABLE_GUACAMOLE !== "false" && guacEnabled) { - import("./guacamole/guacamole-server.js") + import("./hosts/guacamole/guacamole-server.js") .then(() => { systemLogger.info("Guacamole server initialized", { operation: "guac_init", diff --git a/src/backend/swagger.ts b/src/backend/utils/swagger.ts similarity index 88% rename from src/backend/swagger.ts rename to src/backend/utils/swagger.ts index 9b33ec11..83a4367a 100644 --- a/src/backend/swagger.ts +++ b/src/backend/utils/swagger.ts @@ -2,7 +2,7 @@ import swaggerJSDoc from "@deadendjs/swagger-jsdoc"; import path from "path"; import { fileURLToPath } from "url"; import { promises as fs } from "fs"; -import { systemLogger } from "./utils/logger.js"; +import { systemLogger } from "./logger.js"; type SwaggerJSDocOptions = Parameters[0]; @@ -122,11 +122,12 @@ const swaggerOptions: SwaggerJSDocOptions = { ], }, apis: [ - path.join(__dirname, "database", "routes", "*.js").replace(/\\/g, "/"), - path.join(__dirname, "dashboard.js").replace(/\\/g, "/"), - path.join(__dirname, "ssh", "*.js").replace(/\\/g, "/"), - path.join(__dirname, "ssh", "**", "*.js").replace(/\\/g, "/"), - path.join(__dirname, "guacamole", "routes.js").replace(/\\/g, "/"), + path + .join(__dirname, "..", "database", "routes", "*.js") + .replace(/\\/g, "/"), + path.join(__dirname, "..", "services", "*.js").replace(/\\/g, "/"), + path.join(__dirname, "..", "hosts", "*.js").replace(/\\/g, "/"), + path.join(__dirname, "..", "hosts", "**", "*.js").replace(/\\/g, "/"), ], }; @@ -138,7 +139,14 @@ async function generateOpenAPISpec() { const swaggerSpec = await swaggerJSDoc(swaggerOptions); - const outputPath = path.join(__dirname, "..", "..", "..", "openapi.json"); + const outputPath = path.join( + __dirname, + "..", + "..", + "..", + "..", + "openapi.json", + ); await fs.writeFile( outputPath,