From ce25ebc80410981f081f37ea16fcb7f0600a9044 Mon Sep 17 00:00:00 2001 From: ale Date: Mon, 27 Oct 2025 16:14:35 +0100 Subject: [PATCH] SPF registry Signed-off-by: ale --- components/DNSManager.js | 4 ++++ lib/ovh-service.js | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/components/DNSManager.js b/components/DNSManager.js index da4b6fd..be8f3d2 100644 --- a/components/DNSManager.js +++ b/components/DNSManager.js @@ -309,6 +309,7 @@ const DNSManager = () => { 'CNAME': 'bg-green-500 text-white', 'MX': 'bg-orange-500 text-white', 'TXT': 'bg-gray-500 text-white', + 'SPF': 'bg-cyan-500 text-white', 'SRV': 'bg-pink-500 text-white', 'NS': 'bg-yellow-500 text-white' }; @@ -420,6 +421,7 @@ const DNSManager = () => { + @@ -470,6 +472,7 @@ const DNSManager = () => { + @@ -627,6 +630,7 @@ const DNSManager = () => { + diff --git a/lib/ovh-service.js b/lib/ovh-service.js index 575eefb..bd371c6 100644 --- a/lib/ovh-service.js +++ b/lib/ovh-service.js @@ -191,7 +191,7 @@ export class OVHService { // Sort records by type for better readability const sortedRecords = [...records].sort((a, b) => { - const typeOrder = { SOA: 0, NS: 1, A: 2, AAAA: 3, CNAME: 4, MX: 5, TXT: 6, SRV: 7 }; + const typeOrder = { SOA: 0, NS: 1, A: 2, AAAA: 3, CNAME: 4, MX: 5, TXT: 6, SPF: 7, SRV: 8 }; return (typeOrder[a.fieldType] || 99) - (typeOrder[b.fieldType] || 99); }); @@ -219,6 +219,12 @@ export class OVHService { : record.target; line = `${subdomain}\t${ttl}\tIN\tTXT\t${txtValue}`; break; + case 'SPF': + const spfValue = record.target.includes(' ') && !record.target.startsWith('"') + ? `"${record.target}"` + : record.target; + line = `${subdomain}\t${ttl}\tIN\tSPF\t${spfValue}`; + break; case 'SRV': const priority_srv = record.priority || 0; const weight = record.weight || 0; @@ -333,6 +339,11 @@ export class OVHService { const txtValue = parts.slice(idx).join(' '); recordData.target = txtValue.replace(/^"|"$/g, ''); break; + case 'SPF': + // Join remaining parts and remove quotes + const spfValue = parts.slice(idx).join(' '); + recordData.target = spfValue.replace(/^"|"$/g, ''); + break; case 'SRV': recordData.priority = parseInt(parts[idx++]); recordData.weight = parseInt(parts[idx++]);