P7 Private Network (DC-140..DC-154 + judge fixes) #1

Merged
sami7777 merged 56 commits from p7-wave1 into main 2026-10-04 11:04:25 +02:00
Showing only changes of commit 88f7600693 - Show all commits
+26
View File
@@ -89,6 +89,7 @@ const networkLifecycleRoutes = require('../routes/network-lifecycle');
const networkGroupsRoutes = require('../routes/network-groups');
const networkResourcesRoutes = require('../routes/network-resources');
const networkWizardRoutes = require('../routes/network-wizard');
const networkWgRedeemRoutes = require('../routes/network-wg-redeem');
const sitesRoutes = require('../routes/sites');
const credentialsRoutes = require('../routes/credentials');
const arrRoutes = require('../routes/arr');
@@ -782,6 +783,31 @@ async function createApp() {
asyncHandler: ctx.asyncHandler,
log: ctx.log,
}));
// Public WG invite redemption (DC-150). Lazy provider resolution: the
// factory requires a provider at construction; get one only when the
// WireGuard provider is registered, else mount a 503 stub.
const p7WgProviderFactory = () => {
const prov = getActiveProvider();
return prov && prov.id && prov.id() === 'wireguard' ? prov : null;
};
let p7WgRedeemRouter = null;
const p7WgRedeemLazy = (req, res, next) => {
if (!p7WgRedeemRouter) {
const prov = p7WgProviderFactory();
if (!prov) {
return res.status(503).json({ error: 'network provider not active' });
}
p7WgRedeemRouter = networkWgRedeemRoutes({
provider: prov,
endpoint: ctx.networkWgEndpoint,
asyncHandler: ctx.asyncHandler,
log: ctx.log,
});
}
return p7WgRedeemRouter(req, res, next);
};
apiRouter.use('/network/wg', p7WgRedeemLazy);
// ── end P7 mounts ───────────────────────────────────────────────────────
apiRouter.use(sitesRoutes({
asyncHandler: ctx.asyncHandler,