[grade=B] DC-103: One-click adopt — auto-generate Caddy route + DNS + service
POST /api/v1/discover/adopt — takes a discovered container and creates: 1. DashCaddy service entry (with subdomain, domain, URL) 2. Caddyfile reverse_proxy route via admin API 3. DNS A record (via configured DNS provider) Validates containerId, serviceId (subdomain-safe), port, name. Prevents duplicate service IDs. 1633 tests pass.
This commit is contained in:
@@ -62,6 +62,7 @@ const authRoutes = require('../routes/auth');
|
||||
const shareRoutes = require('../routes/share');
|
||||
const i18nRoutes = require('../routes/i18n');
|
||||
const discoverRoutes = require('../routes/discover');
|
||||
const discoverAdoptRoutes = require('../routes/discover-adopt');
|
||||
const configRoutes = require('../routes/config');
|
||||
const dnsRoutes = require('../routes/dns');
|
||||
const notificationRoutes = require('../routes/notifications');
|
||||
@@ -607,6 +608,16 @@ async function createApp() {
|
||||
servicesStateManager: ctx.servicesStateManager,
|
||||
asyncHandler: ctx.asyncHandler,
|
||||
}));
|
||||
|
||||
// DC-103: One-click adopt — auto-generate routes + DNS + service entry
|
||||
apiRouter.use(discoverAdoptRoutes({
|
||||
docker: ctx.docker,
|
||||
servicesStateManager: ctx.servicesStateManager,
|
||||
caddy: ctx.caddy,
|
||||
dns: ctx.dns,
|
||||
siteConfig: ctx.config,
|
||||
asyncHandler: ctx.asyncHandler,
|
||||
}));
|
||||
apiRouter.use(updatesRoutes({
|
||||
updateManager: ctx.updateManager,
|
||||
selfUpdater: ctx.selfUpdater,
|
||||
|
||||
Reference in New Issue
Block a user