-
Notifications
You must be signed in to change notification settings - Fork 1
/
config.sample.json
132 lines (132 loc) · 4.25 KB
/
config.sample.json
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// This is a sample of DNSProxy config file
// You can use this sample to create your config file
{
// DNSProxy server configuration
"settings": {
// should DNSProxy support TCP lookup from client?
"tcp": true,
// should DNSProxy support UDP lookup from client?
"udp": true,
// which IP to bind the DNSProxy server?
"host": "::",
// which port to listen the client request?
"port": 53,
// when to close upstream lookup if no data response?
"timeout": 5000 // ms
},
// available name server list
"servers": {
// set name server with a name
// you don't need to set name servers here
// but at least a `default` one is required
"default": {
// name server host
"host": "127.0.0.1",
// name server port
// if you emit port, it'll be `53`
"port": "53",
// name server protocol, `tcp`, `udp` or `tls`
// if you emit protocol, it'll be based on your request,
// if you request the server with UDP, then it'll be UDP,
// if you request the server with TCP, then it'll be TCP
"type": "udp"
},
// another name server
"tcp": {
// you can combine host and port as host
"host": "127.0.0.1:53",
// don't set port again, or it'll overwrite the previous one
"type": "tcp"
},
"ipv6": {
// if you're using IPv6 server, quote IP address with []
// or it'll be parsed as combined host and port
"host": "[::1]:53"
},
"tls": {
// DNS-over-TLS lookup is supported
"host": "127.0.0.1",
// if you emit port, it'll be `853` for `tls`
"port": "853",
"type": "tls"
},
// you can use a plain string instead of an object
// scheme is `<ip>[:<port = 53>][@<protocol>]`
"google-tcp": "8.8.8.8:443@tcp",
"google-ipv6": "[2001:4860:4860::8888]",
"cloudflare-tls": "1.1.1.1@tls",
// you can also use domain for TLS lookup,
// but please be aware that looking up the server IP is not
// controlled by DNSProxy but by libuv's operating system API,
// so the IP is probably not what you want (you know what I mean)
"quad9-tls": "dns.quad9.net@tls"
},
// extend rule parsers
// you can import some other parsers written by you or some other guy
// then you can use them in `rules`
// note if you're using Windows, use slash (/) or two backslashes (\\)
"extend-parsers": [
"path/to/parser.js",
"path\\to\\another\\parser.js",
// you can use vertical bar (|) after path to rename it, it's useful
// if you don't know its name or another parser uses the same name
// the original name of parser will be replaced by your new name
"path/to/renamed/parser.js|new-name",
// you can use `npm:` before path to import from a npm package
// you can use its original name to use the parser
// or use `npm:<package-name>` to use the parser
"npm:dnsproxy-npm-parser",
// you can also rename a npm package to overwrite its original name
// e.g. you can use either `npm:dnsproxy-npm-another-parser` or
// `another-parser` to use the parser
"npm:dnsproxy-npm-another-parser|another-parser"
],
// look up rules
// which rule defines first, which rule has a higher priority
// if no rule matches, it'll use the default one
"rules": [{
// rule input file
"file": "rules/common.txt",
// rule type
"type": "list",
// rule lookup server
// if you defined it at `servers`, you can use it he
"server": "tcp"
}, {
"file": "rules/extend.txt",
"type": "list",
// you can also define a custom name server here
"server": {
"host": "127.0.0.2",
"port": "53",
"type": "tcp"
}
}, {
// TODO: PAC file, thought it's a JavaScript file
"file": "rules/proxy.pac",
// TODO: support pac is coming soom
"type": "pac",
// also you can use a plain string
"server": "10.0.0.1"
}, {
// TODO: URL, support URL maybe coming soom
"url": "https://example.com/proxy.txt",
// TODO: support autoproxy is coming soom
"type": "autoproxy",
"server": "[::1]:5353@tcp"
}, {
// TODO: advance, advance is a custom rule
// you can specify any rules with any name server
"file": "rules/advance.json",
"type": "advance"
}, {
// use the parser defined in `extend-parser`
"file": "rules/foo.txt",
"type": "new-name"
}, {
// use the npm package defined in `extend-parser`
"file": "rules/bar.txt",
"type": "npm:dnsproxy-npm-another-parser",
"config": "some other fields required by custom parser"
}]
}