first commit
This commit is contained in:
60
calcom/packages/lib/domainManager/organization.ts
Normal file
60
calcom/packages/lib/domainManager/organization.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import { subdomainSuffix } from "@calcom/ee/organizations/lib/orgDomains";
|
||||
import logger from "@calcom/lib/logger";
|
||||
|
||||
import { deleteDnsRecord, addDnsRecord } from "./deploymentServices/cloudflare";
|
||||
import {
|
||||
deleteDomain as deleteVercelDomain,
|
||||
createDomain as createVercelDomain,
|
||||
} from "./deploymentServices/vercel";
|
||||
|
||||
const log = logger.getSubLogger({ prefix: ["domainManager/organization"] });
|
||||
export const deleteDomain = async (slug: string) => {
|
||||
const domain = `${slug}.${subdomainSuffix()}`;
|
||||
// We must have some domain deleted
|
||||
let isDomainDeleted = false;
|
||||
|
||||
// TODO: Ideally we should start storing the DNS and domain entries in DB for each organization
|
||||
// A separate DNS record is optional but if we have it, we must have it deleted
|
||||
let isDnsRecordDeleted = true;
|
||||
if (process.env.VERCEL_URL) {
|
||||
isDomainDeleted = await deleteVercelDomain(domain);
|
||||
}
|
||||
|
||||
if (process.env.CLOUDFLARE_DNS) {
|
||||
isDnsRecordDeleted = await deleteDnsRecord(domain);
|
||||
}
|
||||
return isDomainDeleted && isDnsRecordDeleted;
|
||||
return false;
|
||||
};
|
||||
|
||||
export const createDomain = async (slug: string) => {
|
||||
const domain = `${slug}.${subdomainSuffix()}`;
|
||||
|
||||
// We must have some domain configured
|
||||
let domainConfigured = false;
|
||||
|
||||
// A separate DNS record is optional but if we have it, we must have it configured
|
||||
let dnsConfigured = true;
|
||||
|
||||
if (process.env.VERCEL_URL) {
|
||||
domainConfigured = await createVercelDomain(domain);
|
||||
}
|
||||
|
||||
if (process.env.CLOUDFLARE_DNS) {
|
||||
dnsConfigured = await addDnsRecord(domain);
|
||||
}
|
||||
|
||||
return domainConfigured && dnsConfigured;
|
||||
};
|
||||
|
||||
export const renameDomain = async (oldSlug: string | null, newSlug: string) => {
|
||||
// First create new domain so that if it fails we still have the old domain
|
||||
await createDomain(newSlug);
|
||||
if (oldSlug) {
|
||||
try {
|
||||
await deleteDomain(oldSlug);
|
||||
} catch (e) {
|
||||
log.error(`renameDomain: Failed to delete old domain ${oldSlug}. Do a manual deletion if needed`);
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user