|
|
|
var events = require('events');
|
|
|
|
|
|
|
|
function callback (promise) {
|
|
|
|
return function () {
|
|
|
|
if (arguments[0] instanceof Error) {
|
|
|
|
promise.emitError.apply(promise, arguments);
|
|
|
|
} else {
|
|
|
|
promise.emitSuccess.apply(promise, arguments);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
exports.resolve = function (domain, type) {
|
|
|
|
type = (type || 'a').toUpperCase();
|
|
|
|
|
|
|
|
var resolveFunc = resolveMap[type];
|
|
|
|
|
|
|
|
if (typeof(resolveFunc) == 'function') {
|
|
|
|
return resolveFunc(domain);
|
|
|
|
} else {
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
exports.resolve4 = function (domain) {
|
|
|
|
var promise = new events.Promise();
|
|
|
|
process.dns.resolve4(domain, callback(promise));
|
|
|
|
return promise;
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.resolve6 = function (domain) {
|
|
|
|
var promise = new events.Promise();
|
|
|
|
process.dns.resolve6(domain, callback(promise));
|
|
|
|
return promise;
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.resolveMx = function (domain) {
|
|
|
|
var promise = new process.Promise();
|
|
|
|
process.dns.resolveMx(domain, callback(promise));
|
|
|
|
return promise;
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.resolveTxt = function (domain) {
|
|
|
|
var promise = new process.Promise();
|
|
|
|
process.dns.resolveTxt(domain, callback(promise));
|
|
|
|
return promise;
|
|
|
|
};
|
|
|
|
|
|
|
|
exports.resolveSrv = function (domain) {
|
|
|
|
var promise = new process.Promise();
|
|
|
|
process.dns.resolveSrv(domain, callback(promise));
|
|
|
|
return promise;
|
|
|
|
}
|
|
|
|
|
|
|
|
exports.reverse = function (ip) {
|
|
|
|
var promise = new events.Promise();
|
|
|
|
process.dns.reverse(ip, callback(promise));
|
|
|
|
return promise;
|
|
|
|
};
|
|
|
|
|
|
|
|
// ERROR CODES
|
|
|
|
|
|
|
|
// timeout, SERVFAIL or similar.
|
|
|
|
exports.TEMPFAIL = process.dns.TEMPFAIL;
|
|
|
|
|
|
|
|
// got garbled reply.
|
|
|
|
exports.PROTOCOL = process.dns.PROTOCOL;
|
|
|
|
|
|
|
|
// domain does not exists.
|
|
|
|
exports.NXDOMAIN = process.dns.NXDOMAIN;
|
|
|
|
|
|
|
|
// domain exists but no data of reqd type.
|
|
|
|
exports.NODATA = process.dns.NODATA;
|
|
|
|
|
|
|
|
// out of memory while processing.
|
|
|
|
exports.NOMEM = process.dns.NOMEM;
|
|
|
|
|
|
|
|
// the query is malformed.
|
|
|
|
exports.BADQUERY = process.dns.BADQUERY;
|
|
|
|
|
|
|
|
resolveMap = {
|
|
|
|
'A': exports.resolve4,
|
|
|
|
'AAAA': exports.resolve6,
|
|
|
|
'MX': exports.resolveMx,
|
|
|
|
'TXT': exports.resolveTxt,
|
|
|
|
'SRV': exports.resolveSrv,
|
|
|
|
'PTR': exports.reverse,
|
|
|
|
};
|