Add parked alias domains with Arvan or Cloudflare DNS and websites SSL.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-08-31 18:09:09 +03:30
co-authored by Cursor
parent 5813e9fc53
commit d1f60b5313
18 changed files with 1007 additions and 29 deletions
+68
View File
@@ -265,6 +265,74 @@ const server = http.createServer(async (req, res) => {
}
}
if (req.method === 'POST' && req.url === '/park') {
if (!assertAuth(req, res)) return;
let body;
try {
body = await readJson(req);
} catch {
return send(res, 400, { error: 'invalid json' });
}
const host = String(body.host || '').trim().toLowerCase();
const canonicalHost = String(body.canonicalHost || body.canonical_host || '')
.trim()
.toLowerCase();
if (!host || !/^[a-z0-9.-]+$/.test(host)) {
return send(res, 400, { error: 'valid host is required' });
}
if (!canonicalHost || !/^[a-z0-9.-]+$/.test(canonicalHost)) {
return send(res, 400, { error: 'valid canonicalHost is required' });
}
try {
const result = await runScript('/opt/websites-agent/park.sh', [host, canonicalHost]);
return send(res, 200, {
status: 'parked',
host,
canonicalHost,
log: (result.stdout || '').slice(-2000),
});
} catch (err) {
return send(res, 500, {
error: 'park failed',
detail: err instanceof Error ? err.message.slice(0, 2000) : String(err),
});
}
}
if (req.method === 'POST' && req.url === '/unpark') {
if (!assertAuth(req, res)) return;
let body;
try {
body = await readJson(req);
} catch {
return send(res, 400, { error: 'invalid json' });
}
const host = String(body.host || '').trim().toLowerCase();
if (!host || !/^[a-z0-9.-]+$/.test(host)) {
return send(res, 400, { error: 'valid host is required' });
}
try {
const result = await runScript('/opt/websites-agent/unpark.sh', [host]);
return send(res, 200, {
status: 'unparked',
host,
log: (result.stdout || '').slice(-2000),
});
} catch (err) {
return send(res, 500, {
error: 'unpark failed',
detail: err instanceof Error ? err.message.slice(0, 2000) : String(err),
});
}
}
return send(res, 404, { error: 'not found' });
});