/
server.js
42 lines (32 loc) · 1.05 KB
/
server.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
// Generated by CoffeeScript 1.9.1
var common, crypto, dgram, dnsServer, dnsServerPort, queue, s, serverPort;
dgram = require('dgram');
common = require('./common');
crypto = require('crypto');
dnsServer = common.parseConfig('dns_server_addr');
dnsServerPort = parseInt(common.parseConfig('dns_server_port'));
serverPort = parseInt(common.parseConfig('server_port'));
queue = new common.queue();
s = dgram.createSocket('udp4');
s.bind(serverPort);
s.on('message', function(msg, rinfo) {
console.log(rinfo);
if (rinfo.address !== dnsServer) {
msg = common.decrypt(msg);
queue.enqueue({
id: common.getID(msg),
rinfo: rinfo
});
return s.send(msg, 0, msg.length, dnsServerPort, dnsServer);
} else {
rinfo = queue.find(common.getID(msg), function(r1, dft) {
return r1.id === dft;
});
if ((rinfo != null)) {
msg = common.encrypt(msg);
return s.send(msg, 0, msg.length, rinfo.rinfo.port, rinfo.rinfo.address);
} else {
return console.log('Warning: DNS request response match failed');
}
}
});