diff --git a/domains/_github-pages-challenge-qavv.qavv.json b/domains/_github-pages-challenge-qavv.qavv.json index af2da0937..e6eeacdf2 100644 --- a/domains/_github-pages-challenge-qavv.qavv.json +++ b/domains/_github-pages-challenge-qavv.qavv.json @@ -3,6 +3,6 @@ "username": "qavv" }, "record": { - "TXT": "6598155c8cf0929e826409fb38fc02" + "TXT": "88d0603bf399dde4dd55cd7313e1b2" } } diff --git a/domains/lungustefan.json b/domains/lungustefan.json index 63394de20..7d2552a45 100644 --- a/domains/lungustefan.json +++ b/domains/lungustefan.json @@ -4,10 +4,40 @@ "email": "hi@lungustefan.ro", "discord": "753179409682399332", "phone": "+40770618625", - "mobile": "+40756450998", - "OWL": "eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWxnIjoiUlNBLU9BRVAiLCJraWQiOiJaa1VsRmRqVThiUEstLXVVM2JJR09PVHFYYVFFS1ZINFVXOW53MTR6WTJnIn0.ZerVkVuk5RE7iT8ymXVcKhUkihyAdAbufacrfxq1u7NKQ4Hd0_PbY5FYDAR5uuVd-sCe7fOztiSKV7f9q1OI4HNGDqQxiaWqzom_lQsrIMW-gWUDsBG4Vo8gsq0wrw2th797i-JfsXy2crWaeXlX7X1kROV5KZhGwlSusnUrMp3jlN-uUM3b4hxUyEs3grbh4BiZ9CWShm-kLUs572OBpMigXh3aO0DcUl-BdYdlpSEdRQe8zwylJbFnetxG3qBaMcciGwImixY6V4qaqFwH18isGjDknsHB2WvXM8ekMZmSxgMyRtv1VRSbC22grzMeBazgWoj3x65KU3Z8C7KNmw.w-d8n6WalLAvFcWHqlRkcw.W7GJTwpNRB9pUehhfBXVlkOR1knSNSjvJWeDViV6u2h6AyBdwyaAyILEQzC5ishw0f209VgdyaCqocC7nJp_ZjWjAfcyw0ICLiUXM37Sn3Q.xQOo4RjPMh6dBbWiF1Polw" + "mobile": "+40756450998" }, "record": { - "NS": ["teagan.ns.cloudflare.com", "yevgen.ns.cloudflare.com"] + "NS": [ + "ns.lungustefan.ro", + "ns2.lungustefan.ro", + "ns3.lungustefan.ro", + "ns4.lungustefan.ro" + ], + "DS": [ + { + "key_tag": 10684, + "algorithm": 13, + "digest_type": 1, + "digest": "A9933E9513FDD9F4999ED3DC10F1DF1319C34875" + }, + { + "key_tag": 10684, + "algorithm": 13, + "digest_type": 2, + "digest": "2857597715A85AD42B38D3468235022891809B5701763E6EE4792A3A010A3806" + }, + { + "key_tag": 8282, + "algorithm": 13, + "digest_type": 1, + "digest": "19AA7AE3C1857CE964E98E59244D7ABEE07ED490" + }, + { + "key_tag": 8282, + "algorithm": 13, + "digest_type": 2, + "digest": "9A1A6E8F54F85A40009C0C3A31C8815CDB294244FD0E1EB4DBBAF3695D000800" + } + ] } } diff --git a/domains/register-bot.json b/domains/register-bot.json deleted file mode 100644 index c1ee8caa7..000000000 --- a/domains/register-bot.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "owner": { - "username": "is-a-dev", - "email": "admin@is-a.dev" - }, - "record": { - "CNAME": "wdh.app" - }, - "proxied": true -} diff --git a/tests/json.test.js b/tests/json.test.js index 1b40b75d5..4da5b896f 100644 --- a/tests/json.test.js +++ b/tests/json.test.js @@ -36,20 +36,46 @@ const domainsPath = path.resolve("domains"); const files = fs.readdirSync(domainsPath); function findDuplicateKeys(jsonString) { - const keyPattern = /"([^"]+)"(?=\s*:)/g; - const keys = []; - let match; + const duplicateKeys = new Set(); + const keyStack = []; - while ((match = keyPattern.exec(jsonString)) !== null) { - keys.push(match[1]); + const keyRegex = /"(.*?)"\s*:/g; + + let i = 0; + while (i < jsonString.length) { + const char = jsonString[i]; + + if (char === "{") { + keyStack.push({}); + i++; + continue; + } + + if (char === "}") { + keyStack.pop(); + i++; + continue; + } + + keyRegex.lastIndex = i; + const match = keyRegex.exec(jsonString); + if (match && match.index === i && keyStack.length > 0) { + const key = match[1]; + const currentScope = keyStack[keyStack.length - 1]; + + if (currentScope[key]) { + duplicateKeys.add(key); + } else { + currentScope[key] = true; + } + + i = keyRegex.lastIndex; + } else { + i++; + } } - const keyCount = {}; - keys.forEach((key) => { - keyCount[key] = (keyCount[key] || 0) + 1; - }); - - return Object.keys(keyCount).filter((key) => keyCount[key] > 1); + return [...duplicateKeys]; } async function validateFields(t, obj, fields, file, prefix = "") {