From 09e48815d0fb41fe997a099054cfb71a7377d191 Mon Sep 17 00:00:00 2001 From: yzqzss Date: Tue, 12 Nov 2024 23:11:16 +0800 Subject: [PATCH 1/3] fix: missed CFZone.id property --- worker.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/worker.js b/worker.js index 94bde83..bfdd572 100644 --- a/worker.js +++ b/worker.js @@ -779,7 +779,7 @@ class Listener { const tok_parts = authtok.decodeToken(bearertoken[1]); // Get CloudFlare Zone ID try { - zone_id = tok_parts.aud || DNS01CF.config.CF_ZONE_ID || (await CFAPI.getZoneByName(json.fqdn)); + zone_id = tok_parts.aud || DNS01CF.config.CF_ZONE_ID || (await CFAPI.getZoneByName(json.fqdn)).id; } catch (e) { return dns01cfError(`Unable to list zones: ${e.message}`, { status: 500 }); } @@ -848,7 +848,7 @@ class Listener { // Get CloudFlare Zone ID let zone_id; try { - zone_id = tok_parts.aud || DNS01CF.config.CF_ZONE_ID || (await CFAPI.getZoneByName(json.subdomain)); + zone_id = tok_parts.aud || DNS01CF.config.CF_ZONE_ID || ((await CFAPI.getZoneByName(json.subdomain)).id); } catch (e) { return dns01cfError(`Unable to list zones: ${e.message}`, { status: 500 }); } From b99f397ccb39b9744c534eff1fdd3b7374fb8508 Mon Sep 17 00:00:00 2001 From: yzqzss Date: Tue, 12 Nov 2024 23:19:07 +0800 Subject: [PATCH 2/3] fix:acmedns: handle "An identical record already exists" --- worker.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/worker.js b/worker.js index bfdd572..d9f6888 100644 --- a/worker.js +++ b/worker.js @@ -862,12 +862,18 @@ class Listener { try { actres = await CFAPI.setRecord(zone_id, json.subdomain, json.txt); } catch (e) { - return dns01cfError(`Error during DNS update: ${e.message}`, { status: 500 }); + if (e.message.includes("An identical record already exists")) { + // it's a duplicate, so we'll just return success + actres = { message: e.message }; + } else { + return dns01cfError(`Error during DNS update: ${e.message}`, { status: 500 }); + } } return dns01cfResponse( { result: "ok", message: `'${json.subdomain}' set to value '${json.txt}'`, + acmedns_success_msg: `${json.txt}`, response: actres, }, { status: 200 }, From 67ef5a53739429df9726adca912eba2ef8d9e6a0 Mon Sep 17 00:00:00 2001 From: yzqzss Date: Thu, 14 Nov 2024 21:54:06 +0800 Subject: [PATCH 3/3] fix: INCORRECT zone matching logic !!! --- worker.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/worker.js b/worker.js index d9f6888..191c4d2 100644 --- a/worker.js +++ b/worker.js @@ -392,7 +392,7 @@ class CFAPI { static async getZoneByName(name, exactMatch = false) { const zones = await CFAPI.listZones(); for (let zone of zones) { - if ((exactMatch && name === zone.name) || !exactMatch || name.endsWith(zone.name)) + if ((exactMatch && name === zone.name) || (!exactMatch && name.endsWith(zone.name))) return { id: zone.id, name: zone.name }; } return null;