[object Object]

← back to Cncp Mcp

migrate GoDaddy auth → Bearer PAT (TK-10 key rotation); sso-key fallback retained

b6135d4d2d71a22f9111b0923c3133e2261a8b80 · 2026-07-27 20:04:55 -0700 · Steve Abrams

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit b6135d4d2d71a22f9111b0923c3133e2261a8b80
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon Jul 27 20:04:55 2026 -0700

    migrate GoDaddy auth → Bearer PAT (TK-10 key rotation); sso-key fallback retained
    
    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
 scripts/cncp-refresh.mjs | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/scripts/cncp-refresh.mjs b/scripts/cncp-refresh.mjs
index cfb3eae..8b2eab8 100755
--- a/scripts/cncp-refresh.mjs
+++ b/scripts/cncp-refresh.mjs
@@ -115,7 +115,8 @@ async function fetchGoDaddyDomains() {
   // Load API creds from secrets manager .env
   let key = process.env.GODADDY_API_KEY;
   let secret = process.env.GODADDY_API_SECRET;
-  if (!key || !secret) {
+  let pat = process.env.GODADDY_PAT;
+  if (!key || !secret || !pat) {
     // Try secrets-manager .env file
     try {
       const envText = await fs.readFile(
@@ -124,19 +125,26 @@ async function fetchGoDaddyDomains() {
       );
       for (const line of envText.split("\n")) {
         const m = line.match(/^GODADDY_API_(KEY|SECRET)=(.+)$/);
-        if (!m) continue;
-        const val = m[2].replace(/^["']|["']$/g, "");
-        if (m[1] === "KEY") key = val;
-        else secret = val;
+        if (m) {
+          const val = m[2].replace(/^["']|["']$/g, "");
+          if (m[1] === "KEY") key = key || val;
+          else secret = secret || val;
+          continue;
+        }
+        const p = line.match(/^GODADDY_PAT=(.+)$/);
+        if (p && !pat) pat = p[1].replace(/^["']|["']$/g, "");
       }
     } catch {}
   }
-  if (!key || !secret) {
+  if (!pat && (!key || !secret)) {
     throw new Error(
-      "GoDaddy API creds not found. Set GODADDY_API_KEY and GODADDY_API_SECRET, " +
+      "GoDaddy API creds not found. Set GODADDY_PAT (preferred) or " +
+      "GODADDY_API_KEY and GODADDY_API_SECRET, " +
       "or place them in ~/Projects/secrets-manager/.env."
     );
   }
+  // Prefer a Bearer PAT when present (TK-10 key rotation); else legacy sso-key.
+  const GD_AUTH = pat ? `Bearer ${pat}` : `sso-key ${key}:${secret}`;
 
   const all = [];
   let marker = null;
@@ -146,7 +154,7 @@ async function fetchGoDaddyDomains() {
     if (marker) url.searchParams.set("marker", marker);
     const res = await fetch(url, {
       headers: {
-        Authorization: `sso-key ${key}:${secret}`,
+        Authorization: GD_AUTH,
         Accept: "application/json",
       },
     });

← 9cc6d6b feat(reconciler): skip stale-flagging for entries marked reg  ·  back to Cncp Mcp  ·  (newest)