mirror of
https://github.com/abrendan/l00kup.git
synced 2025-08-25 22:12:07 +02:00
Initial commit
This commit is contained in:
159
node_modules/node-whois/index.js
generated
vendored
Normal file
159
node_modules/node-whois/index.js
generated
vendored
Normal file
@@ -0,0 +1,159 @@
|
||||
// Generated by CoffeeScript 1.9.3
|
||||
(function() {
|
||||
var _, net, optimist, punycode, util;
|
||||
|
||||
_ = require('underscore');
|
||||
|
||||
net = require('net');
|
||||
|
||||
punycode = require('punycode');
|
||||
|
||||
util = require('util');
|
||||
|
||||
this.SERVERS = require('./servers.json');
|
||||
|
||||
this.lookup = (function(_this) {
|
||||
return function(addr, options, done) {
|
||||
var data, parts, server, socket, tld;
|
||||
if (typeof done === 'undefined' && typeof options === 'function') {
|
||||
done = options;
|
||||
options = {};
|
||||
}
|
||||
_.defaults(options, {
|
||||
follow: 2
|
||||
});
|
||||
done = _.once(done);
|
||||
server = options.server;
|
||||
if (!server) {
|
||||
switch (true) {
|
||||
case _.contains(addr, ':'):
|
||||
done(new Error('lookup: IPv6 not supported'));
|
||||
return;
|
||||
case _.contains(addr, '@'):
|
||||
done(new Error('lookup: email addresses not supported'));
|
||||
return;
|
||||
case (addr.match(/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/)) != null:
|
||||
server = _this.SERVERS['_']['ipv4'];
|
||||
break;
|
||||
default:
|
||||
tld = punycode.toASCII(addr);
|
||||
while (true) {
|
||||
server = _this.SERVERS[tld];
|
||||
if (!tld || server) {
|
||||
break;
|
||||
}
|
||||
tld = tld.replace(/^.+?(\.|$)/, '');
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!server) {
|
||||
done(new Error('lookup: no whois server is known for this kind of object'));
|
||||
return;
|
||||
}
|
||||
if (typeof server === 'string') {
|
||||
parts = server.split(':');
|
||||
server = {
|
||||
host: parts[0],
|
||||
port: parts[1]
|
||||
};
|
||||
}
|
||||
_.defaults(server, {
|
||||
port: 43,
|
||||
query: "$addr\r\n"
|
||||
});
|
||||
socket = net.connect(server.port, server.host, function() {
|
||||
return socket.write(server.query.replace('$addr', punycode.toASCII(addr)));
|
||||
});
|
||||
socket.setEncoding('utf-8');
|
||||
if (options.timeout != null) {
|
||||
socket.setTimeout(options.timeout);
|
||||
}
|
||||
data = '';
|
||||
socket.on('data', function(chunk) {
|
||||
return data += chunk;
|
||||
});
|
||||
socket.on('timeout', function() {
|
||||
return done(new Error('lookup: timeout'));
|
||||
});
|
||||
socket.on('error', function(err) {
|
||||
return done(err);
|
||||
});
|
||||
return socket.on('close', function(err) {
|
||||
var match;
|
||||
if (options.follow > 0) {
|
||||
match = data.match(/(ReferralServer|Registrar Whois|Whois Server):\s*(r?whois:\/\/)?(.+)/);
|
||||
if (match != null) {
|
||||
options = _.extend({}, options, {
|
||||
follow: options.follow - 1,
|
||||
server: match[3]
|
||||
});
|
||||
_this.lookup(addr, options, function(err, parts) {
|
||||
if (err != null) {
|
||||
return done(err);
|
||||
}
|
||||
if (options.verbose) {
|
||||
return done(null, [
|
||||
{
|
||||
server: server,
|
||||
data: data
|
||||
}
|
||||
].concat(parts));
|
||||
} else {
|
||||
return done(null, parts);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (options.verbose) {
|
||||
return done(null, [
|
||||
{
|
||||
server: server,
|
||||
data: data
|
||||
}
|
||||
]);
|
||||
} else {
|
||||
return done(null, data);
|
||||
}
|
||||
});
|
||||
};
|
||||
})(this);
|
||||
|
||||
if (module === require.main) {
|
||||
optimist = require('optimist').usage('$0 [options] address')["default"]('s', null).alias('s', 'server').describe('s', 'whois server')["default"]('f', 0).alias('f', 'follow').describe('f', 'number of times to follow redirects').boolean('v')["default"]('v', false).alias('v', 'verbose').describe('v', 'show verbose results').boolean('h')["default"]('h', false).alias('h', 'help').describe('h', 'display this help message');
|
||||
if (optimist.argv.h) {
|
||||
console.log(optimist.help());
|
||||
process.exit(0);
|
||||
}
|
||||
if (optimist.argv._[0] == null) {
|
||||
console.log(optimist.help());
|
||||
process.exit(1);
|
||||
}
|
||||
this.lookup(optimist.argv._[0], {
|
||||
server: optimist.argv.server,
|
||||
follow: optimist.argv.follow,
|
||||
verbose: optimist.argv.verbose
|
||||
}, (function(_this) {
|
||||
return function(err, data) {
|
||||
var i, len, part, results;
|
||||
if (err != null) {
|
||||
console.log(err);
|
||||
process.exit(1);
|
||||
}
|
||||
if (util.isArray(data)) {
|
||||
results = [];
|
||||
for (i = 0, len = data.length; i < len; i++) {
|
||||
part = data[i];
|
||||
console.log(part.server.host);
|
||||
console.log(part.data);
|
||||
results.push(console.log);
|
||||
}
|
||||
return results;
|
||||
} else {
|
||||
return console.log(data);
|
||||
}
|
||||
};
|
||||
})(this));
|
||||
}
|
||||
|
||||
}).call(this);
|
Reference in New Issue
Block a user