diff --git a/dnsconfig.js b/dnsconfig.js index ead89642..91edf7fe 100644 --- a/dnsconfig.js +++ b/dnsconfig.js @@ -1,123 +1,124 @@ +// Setup registrar and DNS provider var regNone = NewRegistrar("none"); var providerCf = DnsProvider(NewDnsProvider("cloudflare")); var proxy = { 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']); - 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; } var domains = getDomainsList('./domains'); -var commit = {}; +var recordsByDomain = {}; -for (var idx in domains) { - var domainData = domains[idx].data; - var proxyState = proxy.on; // enabled by default - - if (!commit[domainData.domain]) { - commit[domainData.domain] = []; +// Helper to add records to a domain entry +function addRecord(domain, record) { + if (!recordsByDomain[domain]) { + recordsByDomain[domain] = []; } + recordsByDomain[domain].push(record); +} + +// Process each domain +domains.forEach(domainEntry => { + const domainData = domainEntry.data; + let proxyState = proxy.on; // Default to enabled if (domainData.proxied === false) { proxyState = proxy.off; } + // Initialize records array for this domain + recordsByDomain[domainData.domain] = recordsByDomain[domainData.domain] || []; + // Handle A records if (domainData.record.A) { - for (var a in domainData.record.A) { - commit[domainData.domain].push( - A(domainData.subdomain, IP(domainData.record.A[a]), proxyState) - ); - } + domainData.record.A.forEach(ipAddress => { + addRecord(domainData.domain, A(domainData.subdomain, IP(ipAddress), proxyState)); + }); } // Handle AAAA records if (domainData.record.AAAA) { - for (var aaaa in domainData.record.AAAA) { - commit[domainData.domain].push( - AAAA(domainData.subdomain, domainData.record.AAAA[aaaa], proxyState) - ); - } + domainData.record.AAAA.forEach(ipv6 => { + addRecord(domainData.domain, AAAA(domainData.subdomain, ipv6, proxyState)); + }); } // Handle CNAME records if (domainData.record.CNAME) { - commit[domainData.domain].push( - CNAME(domainData.subdomain, domainData.record.CNAME + ".", proxyState) - ); + addRecord(domainData.domain, CNAME(domainData.subdomain, domainData.record.CNAME + ".", proxyState)); } // Handle MX records if (domainData.record.MX) { - for (var mx in domainData.record.MX) { - commit[domainData.domain].push( - MX(domainData.subdomain, 10, domainData.record.MX[mx] + ".") - ); - } + domainData.record.MX.forEach(mx => { + addRecord(domainData.domain, MX(domainData.subdomain, 10, mx + ".")); + }); } // Handle NS records if (domainData.record.NS) { - for (var ns in domainData.record.NS) { - commit[domainData.domain].push( - NS(domainData.subdomain, domainData.record.NS[ns] + ".") - ); - } + domainData.record.NS.forEach(ns => { + addRecord(domainData.domain, NS(domainData.subdomain, ns + ".")); + }); } // Handle TXT records if (domainData.record.TXT) { - for (var txt in domainData.record.TXT) { - commit[domainData.domain].push( - TXT(domainData.subdomain, domainData.record.TXT[txt]) - ); - } + domainData.record.TXT.forEach(txt => { + addRecord(domainData.domain, TXT(domainData.subdomain, txt)); + }); } // Handle CAA records if (domainData.record.CAA) { - for (var caa in domainData.record.CAA) { - var caaRecord = domainData.record.CAA[caa]; - commit[domainData.domain].push( - CAA(domainData.subdomain, caaRecord.flags, caaRecord.tag, caaRecord.value) - ); - } + domainData.record.CAA.forEach(caaRecord => { + addRecord(domainData.domain, CAA(domainData.subdomain, caaRecord.flags, caaRecord.tag, caaRecord.value)); + }); } // Handle SRV records if (domainData.record.SRV) { - for (var srv in domainData.record.SRV) { - var srvRecord = domainData.record.SRV[srv]; - commit[domainData.domain].push( - SRV(domainData.subdomain, srvRecord.priority, srvRecord.weight, srvRecord.port, srvRecord.target + ".") - ); - } + 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) { - for (var ptr in domainData.record.PTR) { - commit[domainData.domain].push( - PTR(domainData.subdomain, domainData.record.PTR[ptr] + ".") - ); - } + domainData.record.PTR.forEach(ptr => { + addRecord(domainData.domain, PTR(domainData.subdomain, ptr + ".")); + }); } -} +}); -// Commit all DNS records -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]); +}); diff --git a/domains/biblionest.is-local.org.json b/domains/biblionest.is-local.org.json index b4aa6d5b..2ac64a66 100644 --- a/domains/biblionest.is-local.org.json +++ b/domains/biblionest.is-local.org.json @@ -11,7 +11,11 @@ "record": { "MX": ["emx.mail.ru"], - "TXT": ["mailru-domain: xFZ8hAJWrhSr6PJx", "v=spf1 a mx include:_spf.mail.ru ~all"] + "TXT": [ + "mailru-domain: xFZ8hAJWrhSr6PJx", + "v=spf1 a mx include:_spf.mail.ru ~all", + "atlassian-domain-verification=2w8ldZwTC1/k6xjchySWvmcc7pPXMmaFND6nkFT6qhGrJ4NCr1w/9tq/nzTMzgFS" + ] }, "proxied": false diff --git a/domains/cyiwdio.localplayer.dev.json b/domains/cyiwdio.localplayer.dev.json new file mode 100644 index 00000000..95e63c42 --- /dev/null +++ b/domains/cyiwdio.localplayer.dev.json @@ -0,0 +1,16 @@ +{ + "description": "Radio streaming and blog platform", + "domain": "localplayer.dev", + "subdomain": "cyiwdio", + + "owner": { + "repo": "https://github.com/Cyniez/Cyiwdio", + "email": "syed.sakibul.islam2008@gmail.com" + }, + + "record": { + "CNAME": "cyiwdio.vercel.app" + }, + + "proxied": false +} diff --git a/domains/doge.localplayer.dev.json b/domains/doge.localplayer.dev.json new file mode 100644 index 00000000..331564fd --- /dev/null +++ b/domains/doge.localplayer.dev.json @@ -0,0 +1,15 @@ +{ + "description": "Game unblocker", + "domain": "localplayer.dev", + "subdomain": "doge", + + "owner": { + "email": "Kawrrq@gmail.com" + }, + + "record": { + "A": ["104.243.38.142"] + }, + + "proxied": false +}