/** * Base DNS Provider Adapter * All DNS provider adapters must extend this class and implement the required methods. * * Each adapter handles the specifics of talking to a particular DNS provider's API. * The routes layer calls these methods generically — no provider-specific logic in routes. */ class BaseDNSProvider { constructor(config, ctx) { this.config = config; // Provider-specific config (api token, server url, etc.) this.ctx = ctx; // Shared app context (log, credentialManager, fetchT, etc.) this.providerId = 'base'; this.displayName = 'Base DNS Provider'; } /** Check if this provider supports a given capability */ supportsCapability(cap) { // Capabilities: 'create-record', 'delete-record', 'resolve', 'list-records', // 'logs', 'restart', 'update-check', 'credentials', 'zones' return false; } /** Authenticate and return a token/session */ async authenticate() { throw new Error('Not implemented'); } /** Create a DNS record */ async createRecord({ domain, zone, type, value, ttl, overwrite }) { throw new Error('Not implemented'); } /** Delete a DNS record */ async deleteRecord({ domain, type, value }) { throw new Error('Not implemented'); } /** Resolve/query existing records for a domain */ async resolveRecords({ domain, zone, type }) { throw new Error('Not implemented'); } /** List all records in a zone */ async listRecords({ zone }) { throw new Error('Not implemented'); } /** Get DNS query logs */ async getLogs({ limit, server }) { throw new Error('Not implemented'); } /** Restart the DNS server */ async restartServer({ server }) { throw new Error('Not implemented'); } /** Check for DNS server updates */ async checkUpdate({ server }) { throw new Error('Not implemented'); } /** Get provider status info */ async getStatus() { return { providerId: this.providerId, displayName: this.displayName, capabilities: this.getCapabilities(), authenticated: false }; } /** Get list of supported capabilities */ getCapabilities() { return []; } /** Validate provider-specific config */ validateConfig() { return { valid: true, errors: [] }; } /** Clean up resources on shutdown */ async shutdown() {} } module.exports = BaseDNSProvider;