diff options
author | makefu <github@syntax-fehler.de> | 2013-03-07 11:40:38 +0100 |
---|---|---|
committer | makefu <github@syntax-fehler.de> | 2013-03-07 11:40:38 +0100 |
commit | 7fa8fb85b072f612adb322f8a02617e1bd737020 (patch) | |
tree | 683df8268baae71451633518aa7ff7ea258a4aa8 /util/lib/geo/index.js | |
parent | dbe2d838ba6834788265029162b2dd7d82473335 (diff) | |
parent | ef4eb3189363f5cd9a33b43693322a68d3142979 (diff) |
Merge branch 'master' of github.com:krebscode/painload
Diffstat (limited to 'util/lib/geo/index.js')
-rw-r--r-- | util/lib/geo/index.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/util/lib/geo/index.js b/util/lib/geo/index.js new file mode 100644 index 00000000..0763b1a4 --- /dev/null +++ b/util/lib/geo/index.js @@ -0,0 +1,48 @@ +function slurp (stream, callback) { + var data = [] + stream.on('data', function (chunk) { + data.push(chunk) + }) + stream.on('end', function () { + callback(null, Buffer.concat(data)) + }) + stream.resume() +} + + +var path = require('path') +var city_dat = path.join(__dirname, 'GeoLiteCity.dat') + +var geoip = require('geoip') +var city = new geoip.City(city_dat) + +slurp(process.stdin, function (err, data) { + var lines = data.toString().split('\n') + // remove last, empty element (caused by the [mandatory] final \n) + if (lines.length > 1 && lines[lines.length - 1] === '') { + lines.pop() + } + var name = 0, addr = 1 + lines + .map(function (line) { return line.split(' ') }) + .forEach(function (host) { + //city.lookup(host[addr], function (err, loc) { + // if (err) { + // console.error('#', host[name], err.message) + // } else { + // console.log(host[name] + ': ' + loc.longitude + ',' + loc.latitude) + // } + //}) + var loc = city.lookupSync(host[addr]) + //if (!loc) { console.error('#', host[name]) } + if (loc) { + var a = loc.latitude + var b = loc.longitude + //var c = loc.altitude + //var geo = 'geo:' + [a,b,c].join(',') + var geo = 'geo:' + [a,b].join(',') + + console.log(host[name], geo) + } + }) +}) |