From 2dbf6ba102204b39bbde8c42662e490d88af9641 Mon Sep 17 00:00:00 2001 From: Jonathan Russ Date: Sat, 22 Feb 2025 17:21:42 +0100 Subject: [PATCH 1/8] feat(domains): add wildcard domains --- domains/*.app.is-cool.dev.json | 16 ++++++++++++++++ domains/*.app.is-local.org.json | 16 ++++++++++++++++ domains/*.jonathan.is-a-fullstack.dev.json | 16 ++++++++++++++++ domains/*.jonathan.is-cool.dev.json | 16 ++++++++++++++++ domains/*.project.is-cool.dev.json | 16 ++++++++++++++++ domains/*.project.is-local.org.json | 16 ++++++++++++++++ domains/*.site.is-cool.dev.json | 16 ++++++++++++++++ domains/*.site.is-local.org.json | 16 ++++++++++++++++ 8 files changed, 128 insertions(+) create mode 100644 domains/*.app.is-cool.dev.json create mode 100644 domains/*.app.is-local.org.json create mode 100644 domains/*.jonathan.is-a-fullstack.dev.json create mode 100644 domains/*.jonathan.is-cool.dev.json create mode 100644 domains/*.project.is-cool.dev.json create mode 100644 domains/*.project.is-local.org.json create mode 100644 domains/*.site.is-cool.dev.json create mode 100644 domains/*.site.is-local.org.json diff --git a/domains/*.app.is-cool.dev.json b/domains/*.app.is-cool.dev.json new file mode 100644 index 00000000..8f2daab3 --- /dev/null +++ b/domains/*.app.is-cool.dev.json @@ -0,0 +1,16 @@ +{ + "description": "Wildcard subdomain for hosting multiple apps", + "domain": "is-cool.dev", + "subdomain": "*.app", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": [ + "ns1.vercel-dns.com", + "ns2.vercel-dns.com" + ] + }, + "proxied": false +} \ No newline at end of file diff --git a/domains/*.app.is-local.org.json b/domains/*.app.is-local.org.json new file mode 100644 index 00000000..b6296532 --- /dev/null +++ b/domains/*.app.is-local.org.json @@ -0,0 +1,16 @@ +{ + "description": "Wildcard subdomain for hosting multiple apps", + "domain": "is-local.org", + "subdomain": "*.app", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": [ + "ns1.vercel-dns.com", + "ns2.vercel-dns.com" + ] + }, + "proxied": false +} \ No newline at end of file diff --git a/domains/*.jonathan.is-a-fullstack.dev.json b/domains/*.jonathan.is-a-fullstack.dev.json new file mode 100644 index 00000000..0f0dbf4a --- /dev/null +++ b/domains/*.jonathan.is-a-fullstack.dev.json @@ -0,0 +1,16 @@ +{ + "description": "Wildcard subdomain for hosting multiple projects, apps or sites related to JonathanXDR", + "domain": "is-a-fullstack.dev", + "subdomain": "*.jonathan", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": [ + "ns1.vercel-dns.com", + "ns2.vercel-dns.com" + ] + }, + "proxied": false +} \ No newline at end of file diff --git a/domains/*.jonathan.is-cool.dev.json b/domains/*.jonathan.is-cool.dev.json new file mode 100644 index 00000000..42f4fbb2 --- /dev/null +++ b/domains/*.jonathan.is-cool.dev.json @@ -0,0 +1,16 @@ +{ + "description": "Wildcard subdomain for hosting multiple projects, apps or sites related to JonathanXDR", + "domain": "is-cool.dev", + "subdomain": "*.jonathan", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": [ + "ns1.vercel-dns.com", + "ns2.vercel-dns.com" + ] + }, + "proxied": false +} \ No newline at end of file diff --git a/domains/*.project.is-cool.dev.json b/domains/*.project.is-cool.dev.json new file mode 100644 index 00000000..2405ba51 --- /dev/null +++ b/domains/*.project.is-cool.dev.json @@ -0,0 +1,16 @@ +{ + "description": "Wildcard subdomain for hosting multiple projects", + "domain": "is-cool.dev", + "subdomain": "*.project", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": [ + "ns1.vercel-dns.com", + "ns2.vercel-dns.com" + ] + }, + "proxied": false +} \ No newline at end of file diff --git a/domains/*.project.is-local.org.json b/domains/*.project.is-local.org.json new file mode 100644 index 00000000..bd664be5 --- /dev/null +++ b/domains/*.project.is-local.org.json @@ -0,0 +1,16 @@ +{ + "description": "Wildcard subdomain for hosting multiple projects", + "domain": "is-local.org", + "subdomain": "*.project", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": [ + "ns1.vercel-dns.com", + "ns2.vercel-dns.com" + ] + }, + "proxied": false +} \ No newline at end of file diff --git a/domains/*.site.is-cool.dev.json b/domains/*.site.is-cool.dev.json new file mode 100644 index 00000000..562cee73 --- /dev/null +++ b/domains/*.site.is-cool.dev.json @@ -0,0 +1,16 @@ +{ + "description": "Wildcard subdomain for hosting multiple sites", + "domain": "is-cool.dev", + "subdomain": "*.site", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": [ + "ns1.vercel-dns.com", + "ns2.vercel-dns.com" + ] + }, + "proxied": false +} \ No newline at end of file diff --git a/domains/*.site.is-local.org.json b/domains/*.site.is-local.org.json new file mode 100644 index 00000000..38ebcf46 --- /dev/null +++ b/domains/*.site.is-local.org.json @@ -0,0 +1,16 @@ +{ + "description": "Wildcard subdomain for hosting multiple sites", + "domain": "is-local.org", + "subdomain": "*.site", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": [ + "ns1.vercel-dns.com", + "ns2.vercel-dns.com" + ] + }, + "proxied": false +} \ No newline at end of file From d8c41fe6345faf502863914915b2b2f2140c1442 Mon Sep 17 00:00:00 2001 From: Jonathan Russ Date: Sun, 23 Feb 2025 18:09:25 +0100 Subject: [PATCH 2/8] chore(formatting): fix indents & arrays --- domains/*.app.is-cool.dev.json | 25 ++++++++++------------ domains/*.app.is-local.org.json | 5 +---- domains/*.jonathan.is-a-fullstack.dev.json | 5 +---- domains/*.jonathan.is-cool.dev.json | 25 ++++++++++------------ domains/*.project.is-cool.dev.json | 25 ++++++++++------------ domains/*.project.is-local.org.json | 5 +---- domains/*.site.is-cool.dev.json | 25 ++++++++++------------ domains/*.site.is-local.org.json | 5 +---- 8 files changed, 48 insertions(+), 72 deletions(-) diff --git a/domains/*.app.is-cool.dev.json b/domains/*.app.is-cool.dev.json index 8f2daab3..ff8d838c 100644 --- a/domains/*.app.is-cool.dev.json +++ b/domains/*.app.is-cool.dev.json @@ -1,16 +1,13 @@ { - "description": "Wildcard subdomain for hosting multiple apps", - "domain": "is-cool.dev", - "subdomain": "*.app", - "owner": { - "username": "JonathanXDR", - "email": "jonathan.russ@bluewin.ch" - }, - "record": { - "NS": [ - "ns1.vercel-dns.com", - "ns2.vercel-dns.com" - ] - }, - "proxied": false + "description": "Wildcard subdomain for hosting multiple apps", + "domain": "is-cool.dev", + "subdomain": "*.app", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] + }, + "proxied": false } \ No newline at end of file diff --git a/domains/*.app.is-local.org.json b/domains/*.app.is-local.org.json index b6296532..3d38a30f 100644 --- a/domains/*.app.is-local.org.json +++ b/domains/*.app.is-local.org.json @@ -7,10 +7,7 @@ "email": "jonathan.russ@bluewin.ch" }, "record": { - "NS": [ - "ns1.vercel-dns.com", - "ns2.vercel-dns.com" - ] + "NS": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] }, "proxied": false } \ No newline at end of file diff --git a/domains/*.jonathan.is-a-fullstack.dev.json b/domains/*.jonathan.is-a-fullstack.dev.json index 0f0dbf4a..82696480 100644 --- a/domains/*.jonathan.is-a-fullstack.dev.json +++ b/domains/*.jonathan.is-a-fullstack.dev.json @@ -7,10 +7,7 @@ "email": "jonathan.russ@bluewin.ch" }, "record": { - "NS": [ - "ns1.vercel-dns.com", - "ns2.vercel-dns.com" - ] + "NS": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] }, "proxied": false } \ No newline at end of file diff --git a/domains/*.jonathan.is-cool.dev.json b/domains/*.jonathan.is-cool.dev.json index 42f4fbb2..3a047b06 100644 --- a/domains/*.jonathan.is-cool.dev.json +++ b/domains/*.jonathan.is-cool.dev.json @@ -1,16 +1,13 @@ { - "description": "Wildcard subdomain for hosting multiple projects, apps or sites related to JonathanXDR", - "domain": "is-cool.dev", - "subdomain": "*.jonathan", - "owner": { - "username": "JonathanXDR", - "email": "jonathan.russ@bluewin.ch" - }, - "record": { - "NS": [ - "ns1.vercel-dns.com", - "ns2.vercel-dns.com" - ] - }, - "proxied": false + "description": "Wildcard subdomain for hosting multiple projects, apps or sites related to JonathanXDR", + "domain": "is-cool.dev", + "subdomain": "*.jonathan", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] + }, + "proxied": false } \ No newline at end of file diff --git a/domains/*.project.is-cool.dev.json b/domains/*.project.is-cool.dev.json index 2405ba51..7e3fb396 100644 --- a/domains/*.project.is-cool.dev.json +++ b/domains/*.project.is-cool.dev.json @@ -1,16 +1,13 @@ { - "description": "Wildcard subdomain for hosting multiple projects", - "domain": "is-cool.dev", - "subdomain": "*.project", - "owner": { - "username": "JonathanXDR", - "email": "jonathan.russ@bluewin.ch" - }, - "record": { - "NS": [ - "ns1.vercel-dns.com", - "ns2.vercel-dns.com" - ] - }, - "proxied": false + "description": "Wildcard subdomain for hosting multiple projects", + "domain": "is-cool.dev", + "subdomain": "*.project", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] + }, + "proxied": false } \ No newline at end of file diff --git a/domains/*.project.is-local.org.json b/domains/*.project.is-local.org.json index bd664be5..33952f53 100644 --- a/domains/*.project.is-local.org.json +++ b/domains/*.project.is-local.org.json @@ -7,10 +7,7 @@ "email": "jonathan.russ@bluewin.ch" }, "record": { - "NS": [ - "ns1.vercel-dns.com", - "ns2.vercel-dns.com" - ] + "NS": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] }, "proxied": false } \ No newline at end of file diff --git a/domains/*.site.is-cool.dev.json b/domains/*.site.is-cool.dev.json index 562cee73..57e0e299 100644 --- a/domains/*.site.is-cool.dev.json +++ b/domains/*.site.is-cool.dev.json @@ -1,16 +1,13 @@ { - "description": "Wildcard subdomain for hosting multiple sites", - "domain": "is-cool.dev", - "subdomain": "*.site", - "owner": { - "username": "JonathanXDR", - "email": "jonathan.russ@bluewin.ch" - }, - "record": { - "NS": [ - "ns1.vercel-dns.com", - "ns2.vercel-dns.com" - ] - }, - "proxied": false + "description": "Wildcard subdomain for hosting multiple sites", + "domain": "is-cool.dev", + "subdomain": "*.site", + "owner": { + "username": "JonathanXDR", + "email": "jonathan.russ@bluewin.ch" + }, + "record": { + "NS": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] + }, + "proxied": false } \ No newline at end of file diff --git a/domains/*.site.is-local.org.json b/domains/*.site.is-local.org.json index 38ebcf46..5cf55b5f 100644 --- a/domains/*.site.is-local.org.json +++ b/domains/*.site.is-local.org.json @@ -7,10 +7,7 @@ "email": "jonathan.russ@bluewin.ch" }, "record": { - "NS": [ - "ns1.vercel-dns.com", - "ns2.vercel-dns.com" - ] + "NS": ["ns1.vercel-dns.com", "ns2.vercel-dns.com"] }, "proxied": false } \ No newline at end of file From a3f4d3bd29432cc0e3b26d40fed09a0eefe385e7 Mon Sep 17 00:00:00 2001 From: Jonathan Russ Date: Mon, 24 Feb 2025 06:10:37 +0100 Subject: [PATCH 3/8] chore(domains): remove wildcard --- domains/{*.app.is-cool.dev.json => app.is-cool.dev.json} | 4 ++-- domains/{*.app.is-local.org.json => app.is-local.org.json} | 4 ++-- ...-a-fullstack.dev.json => jonathan.is-a-fullstack.dev.json} | 4 ++-- ...{*.jonathan.is-cool.dev.json => jonathan.is-cool.dev.json} | 4 ++-- domains/{*.site.is-cool.dev.json => project.is-cool.dev.json} | 4 ++-- .../{*.site.is-local.org.json => project.is-local.org.json} | 4 ++-- domains/{*.project.is-cool.dev.json => site.is-cool.dev.json} | 4 ++-- .../{*.project.is-local.org.json => site.is-local.org.json} | 4 ++-- 8 files changed, 16 insertions(+), 16 deletions(-) rename domains/{*.app.is-cool.dev.json => app.is-cool.dev.json} (71%) rename domains/{*.app.is-local.org.json => app.is-local.org.json} (71%) rename domains/{*.jonathan.is-a-fullstack.dev.json => jonathan.is-a-fullstack.dev.json} (63%) rename domains/{*.jonathan.is-cool.dev.json => jonathan.is-cool.dev.json} (62%) rename domains/{*.site.is-cool.dev.json => project.is-cool.dev.json} (71%) rename domains/{*.site.is-local.org.json => project.is-local.org.json} (71%) rename domains/{*.project.is-cool.dev.json => site.is-cool.dev.json} (70%) rename domains/{*.project.is-local.org.json => site.is-local.org.json} (70%) diff --git a/domains/*.app.is-cool.dev.json b/domains/app.is-cool.dev.json similarity index 71% rename from domains/*.app.is-cool.dev.json rename to domains/app.is-cool.dev.json index ff8d838c..5859125f 100644 --- a/domains/*.app.is-cool.dev.json +++ b/domains/app.is-cool.dev.json @@ -1,7 +1,7 @@ { - "description": "Wildcard subdomain for hosting multiple apps", + "description": "Subdomain for hosting multiple apps", "domain": "is-cool.dev", - "subdomain": "*.app", + "subdomain": "app", "owner": { "username": "JonathanXDR", "email": "jonathan.russ@bluewin.ch" diff --git a/domains/*.app.is-local.org.json b/domains/app.is-local.org.json similarity index 71% rename from domains/*.app.is-local.org.json rename to domains/app.is-local.org.json index 3d38a30f..321dfa3e 100644 --- a/domains/*.app.is-local.org.json +++ b/domains/app.is-local.org.json @@ -1,7 +1,7 @@ { - "description": "Wildcard subdomain for hosting multiple apps", + "description": "Subdomain for hosting multiple apps", "domain": "is-local.org", - "subdomain": "*.app", + "subdomain": "app", "owner": { "username": "JonathanXDR", "email": "jonathan.russ@bluewin.ch" diff --git a/domains/*.jonathan.is-a-fullstack.dev.json b/domains/jonathan.is-a-fullstack.dev.json similarity index 63% rename from domains/*.jonathan.is-a-fullstack.dev.json rename to domains/jonathan.is-a-fullstack.dev.json index 82696480..9ac4e748 100644 --- a/domains/*.jonathan.is-a-fullstack.dev.json +++ b/domains/jonathan.is-a-fullstack.dev.json @@ -1,7 +1,7 @@ { - "description": "Wildcard subdomain for hosting multiple projects, apps or sites related to JonathanXDR", + "description": "Subdomain for hosting multiple projects, apps or sites related to JonathanXDR", "domain": "is-a-fullstack.dev", - "subdomain": "*.jonathan", + "subdomain": "jonathan", "owner": { "username": "JonathanXDR", "email": "jonathan.russ@bluewin.ch" diff --git a/domains/*.jonathan.is-cool.dev.json b/domains/jonathan.is-cool.dev.json similarity index 62% rename from domains/*.jonathan.is-cool.dev.json rename to domains/jonathan.is-cool.dev.json index 3a047b06..d3b59fbf 100644 --- a/domains/*.jonathan.is-cool.dev.json +++ b/domains/jonathan.is-cool.dev.json @@ -1,7 +1,7 @@ { - "description": "Wildcard subdomain for hosting multiple projects, apps or sites related to JonathanXDR", + "description": "Subdomain for hosting multiple projects, apps or sites related to JonathanXDR", "domain": "is-cool.dev", - "subdomain": "*.jonathan", + "subdomain": "jonathan", "owner": { "username": "JonathanXDR", "email": "jonathan.russ@bluewin.ch" diff --git a/domains/*.site.is-cool.dev.json b/domains/project.is-cool.dev.json similarity index 71% rename from domains/*.site.is-cool.dev.json rename to domains/project.is-cool.dev.json index 57e0e299..5ea14427 100644 --- a/domains/*.site.is-cool.dev.json +++ b/domains/project.is-cool.dev.json @@ -1,7 +1,7 @@ { - "description": "Wildcard subdomain for hosting multiple sites", + "description": "Subdomain for hosting multiple projects", "domain": "is-cool.dev", - "subdomain": "*.site", + "subdomain": "project", "owner": { "username": "JonathanXDR", "email": "jonathan.russ@bluewin.ch" diff --git a/domains/*.site.is-local.org.json b/domains/project.is-local.org.json similarity index 71% rename from domains/*.site.is-local.org.json rename to domains/project.is-local.org.json index 5cf55b5f..776ba140 100644 --- a/domains/*.site.is-local.org.json +++ b/domains/project.is-local.org.json @@ -1,7 +1,7 @@ { - "description": "Wildcard subdomain for hosting multiple sites", + "description": "Subdomain for hosting multiple projects", "domain": "is-local.org", - "subdomain": "*.site", + "subdomain": "project", "owner": { "username": "JonathanXDR", "email": "jonathan.russ@bluewin.ch" diff --git a/domains/*.project.is-cool.dev.json b/domains/site.is-cool.dev.json similarity index 70% rename from domains/*.project.is-cool.dev.json rename to domains/site.is-cool.dev.json index 7e3fb396..395abd9b 100644 --- a/domains/*.project.is-cool.dev.json +++ b/domains/site.is-cool.dev.json @@ -1,7 +1,7 @@ { - "description": "Wildcard subdomain for hosting multiple projects", + "description": "Subdomain for hosting multiple sites", "domain": "is-cool.dev", - "subdomain": "*.project", + "subdomain": "site", "owner": { "username": "JonathanXDR", "email": "jonathan.russ@bluewin.ch" diff --git a/domains/*.project.is-local.org.json b/domains/site.is-local.org.json similarity index 70% rename from domains/*.project.is-local.org.json rename to domains/site.is-local.org.json index 33952f53..cf306295 100644 --- a/domains/*.project.is-local.org.json +++ b/domains/site.is-local.org.json @@ -1,7 +1,7 @@ { - "description": "Wildcard subdomain for hosting multiple projects", + "description": "Subdomain for hosting multiple sites", "domain": "is-local.org", - "subdomain": "*.project", + "subdomain": "site", "owner": { "username": "JonathanXDR", "email": "jonathan.russ@bluewin.ch" From b45fdf9088c428e75d3eb95f03df53a6b5e7959a Mon Sep 17 00:00:00 2001 From: Jess Date: Mon, 24 Mar 2025 12:24:41 -0400 Subject: [PATCH 4/8] Fix anonymous function syntax in forEach calls Added parens to arguments of anonymous functions in `forEach()` calls --- dnsconfig.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/dnsconfig.js b/dnsconfig.js index 91edf7fe..1bc65392 100644 --- a/dnsconfig.js +++ b/dnsconfig.js @@ -12,7 +12,7 @@ function getDomainsList(filesPath) { var result = []; var files = glob.apply(null, [filesPath, true, '.json']); - files.forEach(file => { + files.forEach((file) => { try { const basename = file.split('/').pop(); const name = basename.split('.')[0]; @@ -45,7 +45,7 @@ function addRecord(domain, record) { } // Process each domain -domains.forEach(domainEntry => { +domains.forEach((domainEntry) => { const domainData = domainEntry.data; let proxyState = proxy.on; // Default to enabled @@ -58,14 +58,14 @@ domains.forEach(domainEntry => { // Handle A records if (domainData.record.A) { - domainData.record.A.forEach(ipAddress => { + domainData.record.A.forEach((ipAddress) => { addRecord(domainData.domain, A(domainData.subdomain, IP(ipAddress), proxyState)); }); } // Handle AAAA records if (domainData.record.AAAA) { - domainData.record.AAAA.forEach(ipv6 => { + domainData.record.AAAA.forEach((ipv6) => { addRecord(domainData.domain, AAAA(domainData.subdomain, ipv6, proxyState)); }); } @@ -77,48 +77,48 @@ domains.forEach(domainEntry => { // Handle MX records if (domainData.record.MX) { - domainData.record.MX.forEach(mx => { + domainData.record.MX.forEach((mx) => { addRecord(domainData.domain, MX(domainData.subdomain, 10, mx + ".")); }); } // Handle NS records if (domainData.record.NS) { - domainData.record.NS.forEach(ns => { + domainData.record.NS.forEach((ns) => { addRecord(domainData.domain, NS(domainData.subdomain, ns + ".")); }); } // Handle TXT records if (domainData.record.TXT) { - domainData.record.TXT.forEach(txt => { + domainData.record.TXT.forEach((txt) => { addRecord(domainData.domain, TXT(domainData.subdomain, txt)); }); } // Handle CAA records if (domainData.record.CAA) { - domainData.record.CAA.forEach(caaRecord => { + domainData.record.CAA.forEach((caaRecord) => { addRecord(domainData.domain, CAA(domainData.subdomain, caaRecord.flags, caaRecord.tag, caaRecord.value)); }); } // Handle SRV records if (domainData.record.SRV) { - domainData.record.SRV.forEach(srvRecord => { + domainData.record.SRV.forEach((srvRecord) => { addRecord(domainData.domain, SRV(domainData.subdomain, srvRecord.priority, srvRecord.weight, srvRecord.port, srvRecord.target + ".")); }); } // Handle PTR records if (domainData.record.PTR) { - domainData.record.PTR.forEach(ptr => { + domainData.record.PTR.forEach((ptr) => { addRecord(domainData.domain, PTR(domainData.subdomain, ptr + ".")); }); } }); // Commit all DNS records for each domain -Object.keys(recordsByDomain).forEach(domainName => { +Object.keys(recordsByDomain).forEach((domainName) => { D(domainName, regNone, providerCf, recordsByDomain[domainName]); }); From 33cb69f10da13eea45e62d07471d626a068ecb90 Mon Sep 17 00:00:00 2001 From: andrewstech Date: Mon, 31 Mar 2025 08:25:59 +0100 Subject: [PATCH 5/8] Update dnsconfig.js --- dnsconfig.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/dnsconfig.js b/dnsconfig.js index 1bc65392..91edf7fe 100644 --- a/dnsconfig.js +++ b/dnsconfig.js @@ -12,7 +12,7 @@ function getDomainsList(filesPath) { var result = []; var files = glob.apply(null, [filesPath, true, '.json']); - files.forEach((file) => { + files.forEach(file => { try { const basename = file.split('/').pop(); const name = basename.split('.')[0]; @@ -45,7 +45,7 @@ function addRecord(domain, record) { } // Process each domain -domains.forEach((domainEntry) => { +domains.forEach(domainEntry => { const domainData = domainEntry.data; let proxyState = proxy.on; // Default to enabled @@ -58,14 +58,14 @@ domains.forEach((domainEntry) => { // Handle A records if (domainData.record.A) { - domainData.record.A.forEach((ipAddress) => { + domainData.record.A.forEach(ipAddress => { addRecord(domainData.domain, A(domainData.subdomain, IP(ipAddress), proxyState)); }); } // Handle AAAA records if (domainData.record.AAAA) { - domainData.record.AAAA.forEach((ipv6) => { + domainData.record.AAAA.forEach(ipv6 => { addRecord(domainData.domain, AAAA(domainData.subdomain, ipv6, proxyState)); }); } @@ -77,48 +77,48 @@ domains.forEach((domainEntry) => { // Handle MX records if (domainData.record.MX) { - domainData.record.MX.forEach((mx) => { + domainData.record.MX.forEach(mx => { addRecord(domainData.domain, MX(domainData.subdomain, 10, mx + ".")); }); } // Handle NS records if (domainData.record.NS) { - domainData.record.NS.forEach((ns) => { + domainData.record.NS.forEach(ns => { addRecord(domainData.domain, NS(domainData.subdomain, ns + ".")); }); } // Handle TXT records if (domainData.record.TXT) { - domainData.record.TXT.forEach((txt) => { + domainData.record.TXT.forEach(txt => { addRecord(domainData.domain, TXT(domainData.subdomain, txt)); }); } // Handle CAA records if (domainData.record.CAA) { - domainData.record.CAA.forEach((caaRecord) => { + domainData.record.CAA.forEach(caaRecord => { addRecord(domainData.domain, CAA(domainData.subdomain, caaRecord.flags, caaRecord.tag, caaRecord.value)); }); } // Handle SRV records if (domainData.record.SRV) { - domainData.record.SRV.forEach((srvRecord) => { + domainData.record.SRV.forEach(srvRecord => { addRecord(domainData.domain, SRV(domainData.subdomain, srvRecord.priority, srvRecord.weight, srvRecord.port, srvRecord.target + ".")); }); } // Handle PTR records if (domainData.record.PTR) { - domainData.record.PTR.forEach((ptr) => { + domainData.record.PTR.forEach(ptr => { addRecord(domainData.domain, PTR(domainData.subdomain, ptr + ".")); }); } }); // Commit all DNS records for each domain -Object.keys(recordsByDomain).forEach((domainName) => { +Object.keys(recordsByDomain).forEach(domainName => { D(domainName, regNone, providerCf, recordsByDomain[domainName]); }); From 567ee7f9a96b0771b48511790f643788d58da2ff Mon Sep 17 00:00:00 2001 From: andrewstech Date: Mon, 31 Mar 2025 08:30:36 +0100 Subject: [PATCH 6/8] Update dnsconfig.js --- dnsconfig.js | 188 +++++++++++++++++++++++---------------------------- 1 file changed, 86 insertions(+), 102 deletions(-) diff --git a/dnsconfig.js b/dnsconfig.js index 91edf7fe..c993b1b4 100644 --- a/dnsconfig.js +++ b/dnsconfig.js @@ -1,124 +1,108 @@ -// Setup registrar and DNS provider var regNone = NewRegistrar("none"); var providerCf = DnsProvider(NewDnsProvider("cloudflare")); var proxy = { - on: { "cloudflare_proxy": "on" }, - off: { "cloudflare_proxy": "off" } + off: { cloudflare_proxy: "off" }, + on: { cloudflare_proxy: "on" } }; -// Load all domain configurations from JSON files function getDomainsList(filesPath) { - var result = []; - var files = glob.apply(null, [filesPath, true, '.json']); + var result = []; + var files = glob.apply(null, [filesPath, true, ".json"]); - files.forEach(file => { - try { - const basename = file.split('/').pop(); - const name = basename.split('.')[0]; - const data = require(file); - - // Validate required fields - if (!data.domain || !data.record) { - console.error(`Missing required fields in ${file}`); - return; - } - - result.push({ name, data }); - } catch (error) { - console.error(`Error loading ${file}:`, error); + for (var i = 0; i < files.length; i++) { + var basename = files[i].split("/").reverse()[0]; + var name = basename.split(".")[0]; + + result.push({ name: name, data: require(files[i]) }); } - }); - return result; + return result; } -var domains = getDomainsList('./domains'); -var recordsByDomain = {}; +var domains = getDomainsList("./domains"); -// Helper to add records to a domain entry -function addRecord(domain, record) { - if (!recordsByDomain[domain]) { - recordsByDomain[domain] = []; - } - recordsByDomain[domain].push(record); -} +var commit = {}; -// Process each domain -domains.forEach(domainEntry => { - const domainData = domainEntry.data; - let proxyState = proxy.on; // Default to enabled +for (var idx in domains) { + var domainData = domains[idx].data; + var proxyState = domainData.proxied ? proxy.on : proxy.off; - if (domainData.proxied === false) { - proxyState = proxy.off; + if (!commit[domainData.domain]) commit[domainData.domain] = []; + + var owner = domainData.owner; + var ownerInfo = owner ? (owner.username ? owner.username : '') + ' ' + (owner.email ? '<' + owner.email + '>' : '') : ''; + + console.log("Configuring domain: " + domainData.subdomain + "." + domainData.domain + ", Owner: " + ownerInfo); + + if (domainData.records.A) { + for (var a in domainData.records.A) { + commit[domainData.domain].push(A(domainData.subdomain, IP(domainData.records.A[a]), proxyState)); + } + } + + if (domainData.records.AAAA) { + for (var aaaa in domainData.records.AAAA) { + commit[domainData.domain].push(AAAA(domainData.subdomain, domainData.records.AAAA[aaaa], proxyState)); + } + } + + if (domainData.records.CNAME) { + commit[domainData.domain].push(CNAME(domainData.subdomain, domainData.records.CNAME + ".", proxyState)); + } + + if (domainData.records.MX) { + for (var mx in domainData.records.MX) { + commit[domainData.domain].push(MX(domainData.subdomain, domainData.records.MX[mx].priority, domainData.records.MX[mx].value + ".")); + } + } + + if (domainData.records.NS) { + for (var ns in domainData.records.NS) { + commit[domainData.domain].push(NS(domainData.subdomain, domainData.records.NS[ns] + ".")); + } + } + + if (domainData.records.TXT) { + for (var txt in domainData.records.TXT) { + if (domainData.records.TXT[txt].name === "@") { + commit[domainData.domain].push(TXT(domainData.subdomain, domainData.records.TXT[txt].value)); + } else if (domainData.subdomain === "@") { + commit[domainData.domain].push(TXT(domainData.records.TXT[txt].name, domainData.records.TXT[txt].value)); + } else { + commit[domainData.domain].push(TXT(domainData.records.TXT[txt].name + "." + domainData.subdomain, domainData.records.TXT[txt].value)); + } + } + } + + if (domainData.records.CAA) { + for (var caa in domainData.records.CAA) { + var caaRecord = domainData.records.CAA[caa]; + commit[domainData.domain].push( + CAA(domainData.subdomain, caaRecord.flags, caaRecord.tag, caaRecord.value) + ); + } } - // Initialize records array for this domain - recordsByDomain[domainData.domain] = recordsByDomain[domainData.domain] || []; - - // Handle A records - if (domainData.record.A) { - domainData.record.A.forEach(ipAddress => { - addRecord(domainData.domain, A(domainData.subdomain, IP(ipAddress), proxyState)); - }); - } - - // Handle AAAA records - if (domainData.record.AAAA) { - domainData.record.AAAA.forEach(ipv6 => { - addRecord(domainData.domain, AAAA(domainData.subdomain, ipv6, proxyState)); - }); - } - - // Handle CNAME records - if (domainData.record.CNAME) { - addRecord(domainData.domain, CNAME(domainData.subdomain, domainData.record.CNAME + ".", proxyState)); - } - - // Handle MX records - if (domainData.record.MX) { - domainData.record.MX.forEach(mx => { - addRecord(domainData.domain, MX(domainData.subdomain, 10, mx + ".")); - }); - } - - // Handle NS records - if (domainData.record.NS) { - domainData.record.NS.forEach(ns => { - addRecord(domainData.domain, NS(domainData.subdomain, ns + ".")); - }); - } - - // Handle TXT records - if (domainData.record.TXT) { - domainData.record.TXT.forEach(txt => { - addRecord(domainData.domain, TXT(domainData.subdomain, txt)); - }); - } - - // Handle CAA records - if (domainData.record.CAA) { - domainData.record.CAA.forEach(caaRecord => { - addRecord(domainData.domain, CAA(domainData.subdomain, caaRecord.flags, caaRecord.tag, caaRecord.value)); - }); - } - - // Handle SRV records - if (domainData.record.SRV) { - domainData.record.SRV.forEach(srvRecord => { - addRecord(domainData.domain, SRV(domainData.subdomain, srvRecord.priority, srvRecord.weight, srvRecord.port, srvRecord.target + ".")); - }); + if (domainData.records.SRV) { + for (var srv in domainData.records.SRV) { + var srvRecord = domainData.records.SRV[srv]; + commit[domainData.domain].push( + SRV(domainData.subdomain, srvRecord.priority, srvRecord.weight, srvRecord.port, srvRecord.target + ".") + ); + } } // Handle PTR records - if (domainData.record.PTR) { - domainData.record.PTR.forEach(ptr => { - addRecord(domainData.domain, PTR(domainData.subdomain, ptr + ".")); - }); + if (domainData.records.PTR) { + for (var ptr in domainData.records.PTR) { + commit[domainData.domain].push( + PTR(domainData.subdomain, domainData.records.PTR[ptr] + ".") + ); + } } -}); +} -// Commit all DNS records for each domain -Object.keys(recordsByDomain).forEach(domainName => { - D(domainName, regNone, providerCf, recordsByDomain[domainName]); -}); +for (var domainName in commit) { + D(domainName, regNone, providerCf, commit[domainName]); + } From 012c5aed79a718c0f9501c281080b60b0fd9436b Mon Sep 17 00:00:00 2001 From: andrewstech Date: Sat, 12 Apr 2025 17:46:18 +0100 Subject: [PATCH 7/8] Update dnsconfig.js --- dnsconfig.js | 188 ++++++++++++++++++++++++++++----------------------- 1 file changed, 102 insertions(+), 86 deletions(-) diff --git a/dnsconfig.js b/dnsconfig.js index c993b1b4..91edf7fe 100644 --- a/dnsconfig.js +++ b/dnsconfig.js @@ -1,108 +1,124 @@ +// Setup registrar and DNS provider var regNone = NewRegistrar("none"); var providerCf = DnsProvider(NewDnsProvider("cloudflare")); var proxy = { - off: { cloudflare_proxy: "off" }, - on: { cloudflare_proxy: "on" } + on: { "cloudflare_proxy": "on" }, + off: { "cloudflare_proxy": "off" } }; +// Load all domain configurations from JSON files function getDomainsList(filesPath) { - var result = []; - var files = glob.apply(null, [filesPath, true, ".json"]); + var result = []; + var files = glob.apply(null, [filesPath, true, '.json']); - for (var i = 0; i < files.length; i++) { - var basename = files[i].split("/").reverse()[0]; - var name = basename.split(".")[0]; - - result.push({ name: name, data: require(files[i]) }); + files.forEach(file => { + try { + const basename = file.split('/').pop(); + const name = basename.split('.')[0]; + const data = require(file); + + // Validate required fields + if (!data.domain || !data.record) { + console.error(`Missing required fields in ${file}`); + return; + } + + result.push({ name, data }); + } catch (error) { + console.error(`Error loading ${file}:`, error); } + }); - return result; + return result; } -var domains = getDomainsList("./domains"); +var domains = getDomainsList('./domains'); +var recordsByDomain = {}; -var commit = {}; +// Helper to add records to a domain entry +function addRecord(domain, record) { + if (!recordsByDomain[domain]) { + recordsByDomain[domain] = []; + } + recordsByDomain[domain].push(record); +} -for (var idx in domains) { - var domainData = domains[idx].data; - var proxyState = domainData.proxied ? proxy.on : proxy.off; +// Process each domain +domains.forEach(domainEntry => { + const domainData = domainEntry.data; + let proxyState = proxy.on; // Default to enabled - if (!commit[domainData.domain]) commit[domainData.domain] = []; - - var owner = domainData.owner; - var ownerInfo = owner ? (owner.username ? owner.username : '') + ' ' + (owner.email ? '<' + owner.email + '>' : '') : ''; - - console.log("Configuring domain: " + domainData.subdomain + "." + domainData.domain + ", Owner: " + ownerInfo); - - if (domainData.records.A) { - for (var a in domainData.records.A) { - commit[domainData.domain].push(A(domainData.subdomain, IP(domainData.records.A[a]), proxyState)); - } - } - - if (domainData.records.AAAA) { - for (var aaaa in domainData.records.AAAA) { - commit[domainData.domain].push(AAAA(domainData.subdomain, domainData.records.AAAA[aaaa], proxyState)); - } - } - - if (domainData.records.CNAME) { - commit[domainData.domain].push(CNAME(domainData.subdomain, domainData.records.CNAME + ".", proxyState)); - } - - if (domainData.records.MX) { - for (var mx in domainData.records.MX) { - commit[domainData.domain].push(MX(domainData.subdomain, domainData.records.MX[mx].priority, domainData.records.MX[mx].value + ".")); - } - } - - if (domainData.records.NS) { - for (var ns in domainData.records.NS) { - commit[domainData.domain].push(NS(domainData.subdomain, domainData.records.NS[ns] + ".")); - } - } - - if (domainData.records.TXT) { - for (var txt in domainData.records.TXT) { - if (domainData.records.TXT[txt].name === "@") { - commit[domainData.domain].push(TXT(domainData.subdomain, domainData.records.TXT[txt].value)); - } else if (domainData.subdomain === "@") { - commit[domainData.domain].push(TXT(domainData.records.TXT[txt].name, domainData.records.TXT[txt].value)); - } else { - commit[domainData.domain].push(TXT(domainData.records.TXT[txt].name + "." + domainData.subdomain, domainData.records.TXT[txt].value)); - } - } - } - - if (domainData.records.CAA) { - for (var caa in domainData.records.CAA) { - var caaRecord = domainData.records.CAA[caa]; - commit[domainData.domain].push( - CAA(domainData.subdomain, caaRecord.flags, caaRecord.tag, caaRecord.value) - ); - } + if (domainData.proxied === false) { + proxyState = proxy.off; } - if (domainData.records.SRV) { - for (var srv in domainData.records.SRV) { - var srvRecord = domainData.records.SRV[srv]; - commit[domainData.domain].push( - SRV(domainData.subdomain, srvRecord.priority, srvRecord.weight, srvRecord.port, srvRecord.target + ".") - ); - } + // Initialize records array for this domain + recordsByDomain[domainData.domain] = recordsByDomain[domainData.domain] || []; + + // Handle A records + if (domainData.record.A) { + domainData.record.A.forEach(ipAddress => { + addRecord(domainData.domain, A(domainData.subdomain, IP(ipAddress), proxyState)); + }); + } + + // Handle AAAA records + if (domainData.record.AAAA) { + domainData.record.AAAA.forEach(ipv6 => { + addRecord(domainData.domain, AAAA(domainData.subdomain, ipv6, proxyState)); + }); + } + + // Handle CNAME records + if (domainData.record.CNAME) { + addRecord(domainData.domain, CNAME(domainData.subdomain, domainData.record.CNAME + ".", proxyState)); + } + + // Handle MX records + if (domainData.record.MX) { + domainData.record.MX.forEach(mx => { + addRecord(domainData.domain, MX(domainData.subdomain, 10, mx + ".")); + }); + } + + // Handle NS records + if (domainData.record.NS) { + domainData.record.NS.forEach(ns => { + addRecord(domainData.domain, NS(domainData.subdomain, ns + ".")); + }); + } + + // Handle TXT records + if (domainData.record.TXT) { + domainData.record.TXT.forEach(txt => { + addRecord(domainData.domain, TXT(domainData.subdomain, txt)); + }); + } + + // Handle CAA records + if (domainData.record.CAA) { + domainData.record.CAA.forEach(caaRecord => { + addRecord(domainData.domain, CAA(domainData.subdomain, caaRecord.flags, caaRecord.tag, caaRecord.value)); + }); + } + + // Handle SRV records + if (domainData.record.SRV) { + domainData.record.SRV.forEach(srvRecord => { + addRecord(domainData.domain, SRV(domainData.subdomain, srvRecord.priority, srvRecord.weight, srvRecord.port, srvRecord.target + ".")); + }); } // Handle PTR records - if (domainData.records.PTR) { - for (var ptr in domainData.records.PTR) { - commit[domainData.domain].push( - PTR(domainData.subdomain, domainData.records.PTR[ptr] + ".") - ); - } + if (domainData.record.PTR) { + domainData.record.PTR.forEach(ptr => { + addRecord(domainData.domain, PTR(domainData.subdomain, ptr + ".")); + }); } -} +}); -for (var domainName in commit) { - D(domainName, regNone, providerCf, commit[domainName]); - } +// Commit all DNS records for each domain +Object.keys(recordsByDomain).forEach(domainName => { + D(domainName, regNone, providerCf, recordsByDomain[domainName]); +}); From 9228b6e50d920a4d2444c1acf96dc1f1739c19b8 Mon Sep 17 00:00:00 2001 From: andrewstech Date: Sat, 12 Apr 2025 17:51:29 +0100 Subject: [PATCH 8/8] Potental Bug fix --- dnsconfig.js | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/dnsconfig.js b/dnsconfig.js index 91edf7fe..73c11366 100644 --- a/dnsconfig.js +++ b/dnsconfig.js @@ -12,21 +12,21 @@ function getDomainsList(filesPath) { var result = []; var files = glob.apply(null, [filesPath, true, '.json']); - files.forEach(file => { + files.forEach(function(file) { try { - const basename = file.split('/').pop(); - const name = basename.split('.')[0]; - const data = require(file); + var basename = file.split('/').pop(); + var name = basename.split('.')[0]; + var data = require(file); // Validate required fields if (!data.domain || !data.record) { - console.error(`Missing required fields in ${file}`); + console.error("Missing required fields in " + file); return; } - result.push({ name, data }); + result.push({ name: name, data: data }); } catch (error) { - console.error(`Error loading ${file}:`, error); + console.error("Error loading " + file + ":", error); } }); @@ -45,9 +45,9 @@ function addRecord(domain, record) { } // Process each domain -domains.forEach(domainEntry => { - const domainData = domainEntry.data; - let proxyState = proxy.on; // Default to enabled +domains.forEach(function(domainEntry) { + var domainData = domainEntry.data; + var proxyState = proxy.on; // Default to enabled if (domainData.proxied === false) { proxyState = proxy.off; @@ -58,14 +58,14 @@ domains.forEach(domainEntry => { // Handle A records if (domainData.record.A) { - domainData.record.A.forEach(ipAddress => { + domainData.record.A.forEach(function(ipAddress) { addRecord(domainData.domain, A(domainData.subdomain, IP(ipAddress), proxyState)); }); } // Handle AAAA records if (domainData.record.AAAA) { - domainData.record.AAAA.forEach(ipv6 => { + domainData.record.AAAA.forEach(function(ipv6) { addRecord(domainData.domain, AAAA(domainData.subdomain, ipv6, proxyState)); }); } @@ -77,48 +77,48 @@ domains.forEach(domainEntry => { // Handle MX records if (domainData.record.MX) { - domainData.record.MX.forEach(mx => { + domainData.record.MX.forEach(function(mx) { addRecord(domainData.domain, MX(domainData.subdomain, 10, mx + ".")); }); } // Handle NS records if (domainData.record.NS) { - domainData.record.NS.forEach(ns => { + domainData.record.NS.forEach(function(ns) { addRecord(domainData.domain, NS(domainData.subdomain, ns + ".")); }); } // Handle TXT records if (domainData.record.TXT) { - domainData.record.TXT.forEach(txt => { + domainData.record.TXT.forEach(function(txt) { addRecord(domainData.domain, TXT(domainData.subdomain, txt)); }); } // Handle CAA records if (domainData.record.CAA) { - domainData.record.CAA.forEach(caaRecord => { + domainData.record.CAA.forEach(function(caaRecord) { addRecord(domainData.domain, CAA(domainData.subdomain, caaRecord.flags, caaRecord.tag, caaRecord.value)); }); } // Handle SRV records if (domainData.record.SRV) { - domainData.record.SRV.forEach(srvRecord => { + domainData.record.SRV.forEach(function(srvRecord) { addRecord(domainData.domain, SRV(domainData.subdomain, srvRecord.priority, srvRecord.weight, srvRecord.port, srvRecord.target + ".")); }); } // Handle PTR records if (domainData.record.PTR) { - domainData.record.PTR.forEach(ptr => { + domainData.record.PTR.forEach(function(ptr) { addRecord(domainData.domain, PTR(domainData.subdomain, ptr + ".")); }); } }); // Commit all DNS records for each domain -Object.keys(recordsByDomain).forEach(domainName => { +Object.keys(recordsByDomain).forEach(function(domainName) { D(domainName, regNone, providerCf, recordsByDomain[domainName]); });