dnsconfig.js (4712B)
1 var domainName = "is-a.bot"; 2 var registrar = NewRegistrar("none"); 3 var dnsProvider = DnsProvider(NewDnsProvider("cloudflare")); 4 5 function getDomainsList(filesPath) { 6 var result = []; 7 var files = glob.apply(null, [filesPath, true, ".json"]); 8 9 for (var i = 0; i < files.length; i++) { 10 var name = files[i] 11 .split("/") 12 .pop() 13 .replace(/\.json$/, ""); 14 15 result.push({ name: name, data: require(files[i]) }); 16 } 17 18 return result; 19 } 20 21 var domains = getDomainsList("./domains"); 22 var records = []; 23 24 for (var subdomain in domains) { 25 var subdomainName = domains[subdomain].name; 26 var data = domains[subdomain].data; 27 var proxyState = data.proxied ? CF_PROXY_ON : CF_PROXY_OFF; 28 29 // Handle A records 30 if (data.records.A) { 31 for (var a in data.records.A) { 32 records.push(A(subdomainName, IP(data.records.A[a]), proxyState)); 33 } 34 } 35 36 // Handle AAAA records 37 if (data.records.AAAA) { 38 for (var aaaa in data.records.AAAA) { 39 records.push(AAAA(subdomainName, data.records.AAAA[aaaa], proxyState)); 40 } 41 } 42 43 // Handle CAA records 44 if (data.records.CAA) { 45 for (var caa in data.records.CAA) { 46 var caaRecord = data.records.CAA[caa]; 47 records.push(CAA(subdomainName, caaRecord.tag, caaRecord.value)); 48 } 49 } 50 51 // Handle CNAME records 52 if (data.records.CNAME) { 53 records.push(ALIAS(subdomainName, data.records.CNAME + ".", proxyState)); 54 } 55 56 // Handle DS records 57 if (data.records.DS) { 58 for (var ds in data.records.DS) { 59 var dsRecord = data.records.DS[ds]; 60 records.push( 61 DS(subdomainName, dsRecord.key_tag, dsRecord.algorithm, dsRecord.digest_type, dsRecord.digest) 62 ); 63 } 64 } 65 66 // Handle MX records 67 if (data.records.MX) { 68 for (var mx in data.records.MX) { 69 var mxRecord = data.records.MX[mx]; 70 71 if (typeof mxRecord === "string") { 72 records.push( 73 MX(subdomainName, 10 + parseInt(mx), data.records.MX[mx] + ".") 74 ); 75 } else { 76 records.push( 77 MX( 78 subdomainName, 79 parseInt(mxRecord.priority), 80 mxRecord.target + "." 81 ) 82 ); 83 } 84 } 85 } 86 87 // Handle NS records 88 if (data.records.NS) { 89 for (var ns in data.records.NS) { 90 records.push(NS(subdomainName, data.records.NS[ns] + ".")); 91 } 92 } 93 94 // Handle SRV records 95 if (data.records.SRV) { 96 for (var srv in data.records.SRV) { 97 var srvRecord = data.records.SRV[srv]; 98 records.push( 99 SRV(subdomainName, srvRecord.priority, srvRecord.weight, srvRecord.port, srvRecord.target + ".") 100 ); 101 } 102 } 103 104 // Handle TLSA records 105 if (data.records.TLSA) { 106 for (var tlsa in data.records.TLSA) { 107 var tlsaRecord = data.records.TLSA[tlsa]; 108 109 records.push( 110 TLSA( 111 subdomainName, 112 tlsaRecord.usage, 113 tlsaRecord.selector, 114 tlsaRecord.matching_type, 115 tlsaRecord.certificate 116 ) 117 ); 118 } 119 } 120 121 // Handle TXT records 122 if (data.records.TXT) { 123 if (Array.isArray(data.records.TXT)) { 124 for (var txt in data.records.TXT) { 125 records.push(TXT(subdomainName, data.records.TXT[txt].length <= 255 ? "\"" + data.records.TXT[txt] + "\"" : data.records.TXT[txt])); 126 } 127 } else { 128 records.push(TXT(subdomainName, data.records.TXT.length <= 255 ? "\"" + data.records.TXT + "\"" : data.records.TXT)); 129 } 130 } 131 132 // Handle URL records 133 if (data.records.URL) { 134 records.push(A(subdomainName, IP("192.0.2.1"), CF_PROXY_ON)); 135 } 136 } 137 138 // Zone last updated TXT record 139 records.push(TXT("_zone-updated", "\"" + Date.now().toString() + "\"")); 140 141 var ignored = [ 142 IGNORE("\\*", "A"), 143 IGNORE("*._domainkey", "TXT"), 144 IGNORE("@", "*"), 145 IGNORE("_acme-challenge", "TXT"), 146 IGNORE("_dmarc", "TXT"), 147 IGNORE("_gh-free-domains-o", "TXT"), 148 IGNORE("_gh-free-domains-o.**", "TXT"), 149 IGNORE("_github-pages-challenge-free-domains", "TXT"), 150 IGNORE("_github-pages-challenge-free-domains.**", "TXT"), 151 IGNORE("_psl", "TXT") 152 ]; 153 154 var internal = require("./util/internal.json"); 155 156 internal.forEach(function(subdomain) { 157 ignored.push(IGNORE(subdomain, "*")); 158 }); 159 160 D(domainName, registrar, dnsProvider, records, ignored);