37 lines
1.4 KiB
TypeScript
37 lines
1.4 KiB
TypeScript
/**
|
|
* Where a domain came from / how it is managed.
|
|
*
|
|
* - 'dcrouter' → dcrouter is the authoritative DNS server for this domain;
|
|
* records are served by the embedded smartdns.DnsServer.
|
|
* Operators delegate the domain's NS records to make this
|
|
* effective.
|
|
* - 'provider' → domain was imported from an external DNS provider
|
|
* (e.g. Cloudflare). The provider stays authoritative;
|
|
* dcrouter only reads/writes records via the provider API.
|
|
*/
|
|
export type TDomainSource = 'dcrouter' | 'provider';
|
|
|
|
/**
|
|
* A domain under management by dcrouter.
|
|
*/
|
|
export interface IDomain {
|
|
id: string;
|
|
/** Fully qualified domain name (e.g. 'example.com'). */
|
|
name: string;
|
|
source: TDomainSource;
|
|
/** ID of the DnsProvider that owns this domain — only set when source === 'provider'. */
|
|
providerId?: string;
|
|
/** True when dcrouter is the authoritative DNS server for this domain (source === 'dcrouter'). */
|
|
authoritative: boolean;
|
|
/** Authoritative nameservers (display only — populated from provider for imported domains). */
|
|
nameservers?: string[];
|
|
/** Provider's internal zone identifier — only set when source === 'provider'. */
|
|
externalZoneId?: string;
|
|
/** Last time records were synced from the provider — only set when source === 'provider'. */
|
|
lastSyncedAt?: number;
|
|
description?: string;
|
|
createdAt: number;
|
|
updatedAt: number;
|
|
createdBy: string;
|
|
}
|