From eceacebb3ba0f711846213c9c13d53a070107539 Mon Sep 17 00:00:00 2001 From: alphaeusmote <41258468-alphaeusmote@users.noreply.replit.com> Date: Fri, 11 Apr 2025 03:16:44 +0000 Subject: [PATCH] Improve DNS record synchronization with providers. Replit-Commit-Author: Agent Replit-Commit-Session-Id: 9111ef36-26c8-4085-84ca-a35dc1fec1b5 Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/7083d608-d6d3-4a6a-9a27-6286c5109627/f7fa905d-72e6-4805-8324-0dbaae1462ea.jpg --- server/routes.ts | 50 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/server/routes.ts b/server/routes.ts index 10ea3e2..1f765b7 100644 --- a/server/routes.ts +++ b/server/routes.ts @@ -239,6 +239,21 @@ export async function registerRoutes(app: Express): Promise { req.user?.id ); + // Sync with provider if applicable + try { + const providerRecordId = await syncDnsRecordWithProvider('create', record.domainId, record); + if (providerRecordId) { + console.log(`Record synced with provider, got provider record ID: ${providerRecordId}`); + // Update the record with the provider record ID + await storage.updateDnsRecord(record.id, { + providerRecordId + }); + } + } catch (providerError) { + console.error("Error syncing with provider (continuing):", providerError); + // We don't fail the request if provider sync fails + } + // Trigger webhooks await triggerDnsWebhooks("create", record.domainId, record, null, req.user?.id); @@ -318,6 +333,27 @@ export async function registerRoutes(app: Express): Promise { req.user?.id ); + // Sync with provider if applicable + try { + const providerRecordId = await syncDnsRecordWithProvider( + 'update', + record.domainId, + record, + record.providerRecordId || undefined + ); + + if (providerRecordId && providerRecordId !== record.providerRecordId) { + console.log(`Record synced with provider, updating provider record ID: ${providerRecordId}`); + // Update the record with the provider record ID + await storage.updateDnsRecord(record.id, { + providerRecordId + }); + } + } catch (providerError) { + console.error("Error syncing with provider (continuing):", providerError); + // We don't fail the request if provider sync fails + } + // Trigger webhooks await triggerDnsWebhooks("update", record.domainId, record, currentRecord, req.user?.id); } catch (historyError) { @@ -374,6 +410,20 @@ export async function registerRoutes(app: Express): Promise { req.user?.id ); + // Sync with provider if applicable + try { + if (currentRecord.providerRecordId) { + console.log(`Deleting record with provider record ID: ${currentRecord.providerRecordId}`); + await syncDnsRecordWithProvider('delete', currentRecord.domainId, null, currentRecord.providerRecordId); + console.log(`Record deleted from provider successfully`); + } else { + console.log(`No provider record ID found for record ${recordId}, skipping provider sync`); + } + } catch (providerError) { + console.error("Error syncing with provider (continuing):", providerError); + // We don't fail the request if provider sync fails + } + // Trigger webhooks await triggerDnsWebhooks("delete", currentRecord.domainId, null, currentRecord, req.user?.id);