forked from serverless-dns/blocklists
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.js
74 lines (66 loc) · 2.25 KB
/
build.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
const fs = require('fs')
const path = require('path')
const trie = require("./trie.js")
async function getBlocklistFiles(bldir) {
let blocklists = []
let dirs = []
dirs.push(bldir)
// all files from bldir, incl sub-directories
while (d = dirs.shift()) {
const dir = await fs.promises.opendir(d)
for await (const entry of dir) {
const x = path.join(d, entry.name)
if (entry.isDirectory()) {
dirs.push(x)
} else {
blocklists.push(x)
}
}
}
return blocklists
}
function loadConfig(blocklistConfigPath, unameVnameMapPath) {
try {
const tags = {}
const fileData = fs.readFileSync(blocklistConfigPath, 'utf8')
const mapData = fs.readFileSync(unameVnameMapPath, "utf8")
const blocklistobj = JSON.parse(fileData);
const unameVnameMap = JSON.parse(mapData)
for (let index in blocklistobj.conf) {
let uname = unameVnameMap[index]
if (typeof uname == "undefined") {
uname = index + ""
}
tags[uname] = {}
tags[uname].value = parseInt(index)
tags[uname].uname = uname
tags[uname].vname = blocklistobj.conf[index].vname
tags[uname].group = blocklistobj.conf[index].group
tags[uname].subg = blocklistobj.conf[index].subg
tags[uname].url = blocklistobj.conf[index].url
tags[uname].show = 0
tags[uname].entries = 0
console.log("btag for " + uname + " index: " + index, tags[uname])
}
return tags
} catch (e) {
console.log(e)
throw e
}
}
async function main() {
const outdir = path.normalize("./result/")
const bldir = path.normalize("./blocklistfiles/")
const blconfig = path.normalize("./blocklistConfig.json")
const unamemap = path.normalize("./valueUnameMap.json")
try {
const tags = loadConfig(blconfig, unamemap)
const bl = await getBlocklistFiles(bldir);
console.log("build, out: " + outdir + ", in: " + bl + ", tags: " + tags)
await trie.build(bl, fs, outdir, tags)
} catch (e) {
console.log(e.stack)
process.exitCode = 1
}
}
main()