Allow add/edit domain to upsert tenant DNS on Cloudflare or Arvan.
Update DNS writes @, www, business, customer, and api records on the chosen provider instead of Arvan only. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
d1f60b5313
commit
f42e6fe2a4
@@ -719,8 +719,10 @@ export class DomainAdminService {
|
||||
},
|
||||
});
|
||||
|
||||
// Same Arvan helper as business-admin domain add/edit (`ensureTenantRecords`).
|
||||
const dnsError = dto.updateDns ? await this.applyArvanDns(host) : null;
|
||||
// Same DNS helper as business-admin domain add/edit (`ensureTenantRecords`).
|
||||
const dnsError = dto.updateDns
|
||||
? await this.applyTenantDns(host, dto.dnsProvider === 'cloudflare' ? 'cloudflare' : 'arvan')
|
||||
: null;
|
||||
|
||||
return {
|
||||
...updated,
|
||||
@@ -936,12 +938,22 @@ export class DomainAdminService {
|
||||
}
|
||||
}
|
||||
|
||||
private async applyArvanDns(host: string): Promise<string | null> {
|
||||
private async applyTenantDns(
|
||||
host: string,
|
||||
provider: ParkedDnsProvider,
|
||||
): Promise<string | null> {
|
||||
try {
|
||||
await this.arvanDns.ensureTenantRecords(host);
|
||||
if (provider === 'cloudflare') {
|
||||
await this.cloudflareDns.ensureTenantRecords(host);
|
||||
} else {
|
||||
await this.arvanDns.ensureTenantRecords(host);
|
||||
}
|
||||
return null;
|
||||
} catch (err) {
|
||||
return this.httpErrorMessage(err, 'Arvan DNS update failed');
|
||||
return this.httpErrorMessage(
|
||||
err,
|
||||
provider === 'cloudflare' ? 'Cloudflare DNS update failed' : 'Arvan DNS update failed',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { IsBoolean, IsDateString, IsOptional, IsString, Matches, MinLength } from 'class-validator';
|
||||
import { IsBoolean, IsDateString, IsIn, IsOptional, IsString, Matches, MinLength } from 'class-validator';
|
||||
import { GIT_REPO_URL_RE } from '../../website-deploy/website-deploy.util';
|
||||
|
||||
export class UpdateDomainAdminDto {
|
||||
@@ -11,11 +11,16 @@ export class UpdateDomainAdminDto {
|
||||
@IsDateString()
|
||||
expiresAt?: string;
|
||||
|
||||
/** When true, upsert Meshkee tenant records in Arvan DNS. */
|
||||
/** When true, upsert Meshkee tenant records (@, www, business, customer, api). */
|
||||
@IsOptional()
|
||||
@IsBoolean()
|
||||
updateDns?: boolean;
|
||||
|
||||
/** DNS host for tenant records. Ignored unless updateDns is true. Default arvan. */
|
||||
@IsOptional()
|
||||
@IsIn(['arvan', 'cloudflare'])
|
||||
dnsProvider?: 'arvan' | 'cloudflare';
|
||||
|
||||
/** HTTPS or SSH git URL — when set, provisions storefront deploy on the websites VM. */
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
|
||||
Reference in New Issue
Block a user