-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheck_mxptr.js
135 lines (100 loc) · 3.34 KB
/
check_mxptr.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
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
133
134
135
var dns = require('native-dns');
var utils=require('./utils.js');
function validate_ptr(ptr,address,mx,domain,customer,onmatch,ondiffer,ontimeout){
// get the IP of the PTR and check it is the same as address
console.log('validate_ptr',ptr,address,mx,domain,customer);
var question = dns.Question({
name: ptr,
type: 'A',
});
var req = dns.Request({
question: question,
server: { address: '8.8.8.8', port: 53, type: 'udp' },
timeout: 8000,
});
req.on('timeout', function () {
console.log('Timeout in making request');
ontimeout(address,mx,domain,customer);
});
req.on('message', function (err, answer) {
answer.answer.forEach(function (a) {
//console.log(a.promote().address);
console.log('ProcessVALIDATE PTR',ptr,address,mx,domain,customer)
console.log('Pname='+a.name);
console.log('Paddress='+a.address);
console.log('CCCCCCECK',a.address,'==',address);
console.log('Ptype='+a.type);
console.log('Pttl='+a.ttl);
// comparefct(a.address,address,customer);
if (a.address == address) {
onmatch(a.address,address,customer)
} else {
ondiffer(a.address,address,customer)
}
//get_ptr(a.address,mx,domain);
// console.log('priority='+a.priority);
// console.log('exchange='+a.exchange);
// console.log(a);
//process_mx(a.name,domain);
});
});
req.on('end', function () {
console.log('Finished processing request');
});
req.send();
}
function check_mxipptr(address,mx,domain,customer,onnoptr,onmatch,ondiffer,ontimeout){
// get the reverse name (PTR record) of an IP address
console.log('check_mxipptr',address,mx,domain,customer);
addressr=utils.reverse(address);
var question = dns.Question({
name: addressr+'.in-addr.arpa',
type: 'PTR',
});
var req = dns.Request({
question: question,
server: { address: '8.8.8.8', port: 53, type: 'udp' },
timeout: 8000,
});
req.on('timeout', function () {
console.log('Timeout in making request');
ontimeout(address,mx,domain,customer);
});
req.on('message', function (err, answer) {
if (answer.answer.length>0){
answer.answer.forEach(function (a) {
console.log('PTRrocess',mx,domain)
console.log('PTRname='+a.name);
console.log('PTRtype='+a.type);
console.log('PTRttl='+a.ttl);
console.log('PTRdata='+a.data);
validate_ptr(a.data,address,mx,domain,customer,onmatch,ondiffer,ontimeout);
});
} else {
onnoptr(address,mx,domain,customer);
}
});
req.on('end', function () {
console.log('Finished processing request');
});
req.send();
}
/*
function check_mxipptr_short(address,mx,domain,customer){
function amycheck(address1,address2){
console.log('COMPPPARE',address1,address2);
}
var mycheck=amycheck;
check_mxipptr(address,mx,domain,customer,mycheck);
}
var aprocess_ip=check_mxipptr_short; // should be a fct of (address,mx,domain)
// var aprocess_ip=myprocess_ip;
function my_onnomx(domain,customer){console.log('NOMX111111');};
function my_onnoip(mx,domain,customer){console.log('NOIP11111');};
function my_ontimeout(domain,customer){console.log('TIMEOUT11111');};
var onnomx=my_onnomx;
var onnoip=my_onnoip;
var ontimeout=my_ontimeout;
// get_mx(domain,customer,aprocess_ip,onnomx,onnoip,ontimeout);
*/
exports.check_mxipptr=check_mxipptr;