[grade=B] DC-106: Caddyfile-as-code — visual reverse proxy builder API
CI / Test & Lint (push) Canceled after 0s
CI / Security audit (push) Canceled after 0s

3 endpoints:
- POST /api/v1/caddycode/generate — generate Caddyfile block from JSON config
  (supports: TLS, auth gate, CORS, headers, WebSocket, compression, strip prefix)
- POST /api/v1/caddycode/validate — validate Caddyfile syntax (brace balance,
  domain check, reverse_proxy presence)
- GET  /api/v1/caddycode/templates — 5 preset configs (simple, WebSocket,
  auth-gated, CORS API, subdirectory)

Frontend can present a visual form, send JSON, get back Caddyfile snippet.
1633 tests pass.
This commit is contained in:
Hermes
2026-08-12 12:54:17 -07:00
parent 2966a19aef
commit 7f831510bd
2 changed files with 233 additions and 0 deletions
+6
View File
@@ -66,6 +66,7 @@ const discoverAdoptRoutes = require('../routes/discover-adopt');
const catalogRoutes = require('../routes/catalog');
const wizardRoutes = require('../routes/wizard');
const disasterRoutes = require('../routes/disaster-recovery');
const caddycodeRoutes = require('../routes/caddycode');
const configRoutes = require('../routes/config');
const dnsRoutes = require('../routes/dns');
const notificationRoutes = require('../routes/notifications');
@@ -641,6 +642,11 @@ async function createApp() {
log: ctx.log,
asyncHandler: ctx.asyncHandler,
}));
// DC-106: Caddyfile-as-code — visual reverse proxy builder
apiRouter.use(caddycodeRoutes({
asyncHandler: ctx.asyncHandler,
}));
apiRouter.use(updatesRoutes({
updateManager: ctx.updateManager,
selfUpdater: ctx.selfUpdater,