102 lines
2.6 KiB
JavaScript
102 lines
2.6 KiB
JavaScript
|
var fs = require('fs');
|
||
|
var url = require('url');
|
||
|
var http = require('http');
|
||
|
var domains = {};
|
||
|
|
||
|
/*
|
||
|
Problem with PublicSuffix:
|
||
|
The list not only contains TLDs/SLDs, but also domains like "dyndns.org".
|
||
|
While this may be useful for Cookie-Origin-Policy, these domains are possibly
|
||
|
being handled by URI.js, considering URI("//dyndns.org").tld("com").
|
||
|
The list does not distinguish "official" TLDs from such domains.
|
||
|
(At least I have problems with treating "cc.ga.us" as a SLD)
|
||
|
*/
|
||
|
|
||
|
http.get("http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1", function(res) {
|
||
|
res.on('data', function(data) {
|
||
|
data.toString().replace(/\r/g, "").split("\n").forEach(function(line) {
|
||
|
// skip empty lines, comments and TLDs
|
||
|
if (!line || (line[0] === "/" && line[1] === "/") || line.indexOf('.') === -1) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
var parts = line.split('.');
|
||
|
var sld = parts.slice(0, -1).join('.');
|
||
|
var tld = parts.slice(-1);
|
||
|
|
||
|
if (parts.length < 2) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (!domains[tld]) {
|
||
|
domains[tld] = [];
|
||
|
}
|
||
|
|
||
|
domains[tld].push(sld);
|
||
|
});
|
||
|
}).on('end', function() {
|
||
|
//file.end();
|
||
|
for (var tld in domains) {
|
||
|
domains[tld].sort();
|
||
|
|
||
|
// ! and * are sorted to the top
|
||
|
if (domains[tld][0][0] == '!') {
|
||
|
// we have wildcards and exclusions
|
||
|
} else if (domains[tld][0][0] == '*') {
|
||
|
// we have wildcards
|
||
|
} else {
|
||
|
// simple list
|
||
|
}
|
||
|
}
|
||
|
|
||
|
console.log(JSON.stringify(domains, null, 2));
|
||
|
//console.log(domains.jp);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
/*
|
||
|
|
||
|
|
||
|
// https://github.com/oncletom/tld.js
|
||
|
// generates a 430KB file, which is inacceptible for the web
|
||
|
|
||
|
build a regex pattern from this -- http://publicsuffix.org/list/
|
||
|
"!exclusion"
|
||
|
"*" wildcard
|
||
|
|
||
|
uk: [ '!bl',
|
||
|
'!british-library',
|
||
|
'!jet',
|
||
|
'!mod',
|
||
|
'!national-library-scotland',
|
||
|
'!nel',
|
||
|
'!nic',
|
||
|
'!nls',
|
||
|
'!parliament',
|
||
|
'*',
|
||
|
'*.nhs',
|
||
|
'*.police',
|
||
|
'*.sch',
|
||
|
'blogspot.co' ]
|
||
|
|
||
|
jp: [ '!city.kawasaki',
|
||
|
'!city.kitakyushu',
|
||
|
'!city.kobe',
|
||
|
'!city.nagoya',
|
||
|
'!city.sapporo',
|
||
|
'!city.sendai',
|
||
|
'!city.yokohama',
|
||
|
'*.kawasaki',
|
||
|
'*.kitakyushu',
|
||
|
'*.kobe',
|
||
|
'*.nagoya',
|
||
|
'*.sapporo',
|
||
|
'*.sendai',
|
||
|
'*.yokohama',
|
||
|
'abashiri.hokkaido',
|
||
|
'abeno.osaka',
|
||
|
'abiko.chiba',
|
||
|
… ]
|
||
|
|
||
|
*/
|