mirror of
https://github.com/ershisan99/coolify.git
synced 2026-01-22 05:02:11 +00:00
64 lines
1.9 KiB
TypeScript
64 lines
1.9 KiB
TypeScript
import { asyncExecShell, getDomain, getEngine, getUserDetails } from '$lib/common';
|
|
import * as db from '$lib/database';
|
|
import { ErrorHandler } from '$lib/database';
|
|
import { t } from '$lib/translations';
|
|
import type { RequestHandler } from '@sveltejs/kit';
|
|
import getPort from 'get-port';
|
|
|
|
export const post: RequestHandler = async (event) => {
|
|
const { status, body } = await getUserDetails(event);
|
|
if (status === 401) return { status, body };
|
|
|
|
const { id } = event.params;
|
|
let { fqdn, exposePort, otherFqdns } = await event.request.json();
|
|
|
|
if (fqdn) fqdn = fqdn.toLowerCase();
|
|
if (otherFqdns && otherFqdns.length > 0) otherFqdns = otherFqdns.map((f) => f.toLowerCase());
|
|
if (exposePort) exposePort = Number(exposePort);
|
|
|
|
try {
|
|
let found = await db.isDomainConfigured({ id, fqdn });
|
|
if (found) {
|
|
throw {
|
|
message: t.get('application.domain_already_in_use', {
|
|
domain: getDomain(fqdn).replace('www.', '')
|
|
})
|
|
};
|
|
}
|
|
if (otherFqdns && otherFqdns.length > 0) {
|
|
for (const ofqdn of otherFqdns) {
|
|
const domain = getDomain(ofqdn);
|
|
const nakedDomain = domain.replace('www.', '');
|
|
found = await db.isDomainConfigured({ id, fqdn: ofqdn, checkOwn: true });
|
|
if (found) {
|
|
throw {
|
|
message: t.get('application.domain_already_in_use', {
|
|
domain: nakedDomain
|
|
})
|
|
};
|
|
}
|
|
}
|
|
}
|
|
if (exposePort) {
|
|
exposePort = Number(exposePort);
|
|
|
|
if (exposePort < 1024 || exposePort > 65535) {
|
|
throw { message: `Exposed Port needs to be between 1024 and 65535.` };
|
|
}
|
|
|
|
const publicPort = await getPort({ port: exposePort });
|
|
if (publicPort !== exposePort) {
|
|
throw { message: `Port ${exposePort} is already in use.` };
|
|
}
|
|
}
|
|
return {
|
|
status: found ? 500 : 200,
|
|
body: {
|
|
error: found && `Domain ${getDomain(fqdn).replace('www.', '')} is already used.`
|
|
}
|
|
};
|
|
} catch (error) {
|
|
return ErrorHandler(error);
|
|
}
|
|
};
|