From 37f0bba43f1aef8001bf9f4f00723b8eea234627 Mon Sep 17 00:00:00 2001 From: Mauricio Siu Date: Wed, 12 Aug 2026 03:35:11 -0600 Subject: [PATCH] fix: resolve @ to the zone's apex domain before sending it to the provider Route53 rejects the literal "@" (RRSet with DNS name @. is not permitted); Cloudflare happens to accept it, but relying on provider-specific handling of that shorthand isn't safe. Resolve it client-side to the zone's actual domain name before building the create/update payload. --- .../dashboard/settings/dns/handle-dns-record.tsx | 11 +++++++++-- .../settings/dns/show-dns-provider-zones.tsx | 11 +++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/apps/dokploy/components/dashboard/settings/dns/handle-dns-record.tsx b/apps/dokploy/components/dashboard/settings/dns/handle-dns-record.tsx index efb648b58..00ab06074 100644 --- a/apps/dokploy/components/dashboard/settings/dns/handle-dns-record.tsx +++ b/apps/dokploy/components/dashboard/settings/dns/handle-dns-record.tsx @@ -54,10 +54,16 @@ interface DnsRecordValue { interface Props { dnsProviderId: string; zoneId: string; + zoneName: string; record?: DnsRecordValue; } -export const HandleDnsRecord = ({ dnsProviderId, zoneId, record }: Props) => { +export const HandleDnsRecord = ({ + dnsProviderId, + zoneId, + zoneName, + record, +}: Props) => { const utils = api.useUtils(); const [isOpen, setIsOpen] = useState(false); @@ -102,11 +108,12 @@ export const HandleDnsRecord = ({ dnsProviderId, zoneId, record }: Props) => { const type = form.watch("type"); const onSubmit = async (data: DnsRecordForm) => { + const name = data.name.trim() === "@" ? zoneName : data.name; const payload = { dnsProviderId, zoneId, type: data.type, - name: data.name, + name, content: data.content, ttl: data.ttl ? Number(data.ttl) : undefined, ...(record && { recordId: record.id }), diff --git a/apps/dokploy/components/dashboard/settings/dns/show-dns-provider-zones.tsx b/apps/dokploy/components/dashboard/settings/dns/show-dns-provider-zones.tsx index f5527a50f..2ca61abfa 100644 --- a/apps/dokploy/components/dashboard/settings/dns/show-dns-provider-zones.tsx +++ b/apps/dokploy/components/dashboard/settings/dns/show-dns-provider-zones.tsx @@ -24,9 +24,10 @@ import { HandleDnsRecord } from "./handle-dns-record"; interface ZoneRecordsProps { dnsProviderId: string; zoneId: string; + zoneName: string; } -const ZoneRecords = ({ dnsProviderId, zoneId }: ZoneRecordsProps) => { +const ZoneRecords = ({ dnsProviderId, zoneId, zoneName }: ZoneRecordsProps) => { const utils = api.useUtils(); const { data, isLoading, isError, error } = api.dnsProvider.listRecords.useQuery({ dnsProviderId, zoneId }); @@ -71,6 +72,7 @@ const ZoneRecords = ({ dnsProviderId, zoneId }: ZoneRecordsProps) => { )} @@ -112,7 +114,11 @@ const ZoneRecords = ({ dnsProviderId, zoneId }: ZoneRecordsProps) => { })} {canWrite && (
- +
)} @@ -198,6 +204,7 @@ export const ShowDnsProviderZones = ({ )}