diff options
| author | makefu <github@syntax-fehler.de> | 2013-02-07 20:26:15 +0100 | 
|---|---|---|
| committer | makefu <github@syntax-fehler.de> | 2013-02-07 20:26:15 +0100 | 
| commit | dd6ad821a5a5bcb633b28a6d35e5e612d1f59094 (patch) | |
| tree | 51a5281d1cbba3423eb5e9a86eb16d847fac5a6e /util | |
| parent | 12fa3df06555c4ad6973602998a42446fbb52e70 (diff) | |
| parent | 41fb505a5dc5c81965cc45dd00d14fe4150b8a42 (diff) | |
Merge branch 'master' of github.com:krebscode/painload
Diffstat (limited to 'util')
| -rw-r--r-- | util/README.markdown | 27 | ||||
| -rwxr-xr-x | util/bin/with | 6 | ||||
| -rw-r--r-- | util/lib/geo/Makefile | 15 | ||||
| -rw-r--r-- | util/lib/geo/index.js | 48 | ||||
| -rw-r--r-- | util/lib/geo/package.json | 7 | 
5 files changed, 103 insertions, 0 deletions
| diff --git a/util/README.markdown b/util/README.markdown new file mode 100644 index 00000000..78b9b81a --- /dev/null +++ b/util/README.markdown @@ -0,0 +1,27 @@ +# various utils + +## //util/bin/with + +  execute a command with an extended/modified environment + +### usage + +    with ENV COMMAND + +  where `ENV` is the name of the environment and +  `COMMAND` your to-be-executed command (-line). + +### environment + +  `env_dir` defines the directory where environment files are searched +  (default: `$HOME/.env.d`). + +### example + +    cat > ~/.env.d/frh-ire <<EOF +    export api_url=... +    export api_key=... +    export api_hash=... +    EOF + +    with frh-ire //ext/solus/bin/client info diff --git a/util/bin/with b/util/bin/with new file mode 100755 index 00000000..97893faf --- /dev/null +++ b/util/bin/with @@ -0,0 +1,6 @@ +#! /bin/sh +set -euf +ENV="${env_dir-$HOME/.env.d}/$1" +shift +. "$ENV" +exec "$@" diff --git a/util/lib/geo/Makefile b/util/lib/geo/Makefile new file mode 100644 index 00000000..d13cd471 --- /dev/null +++ b/util/lib/geo/Makefile @@ -0,0 +1,15 @@ +all: node_modules GeoLiteCity.dat + +node_modules: package.json +	npm install +	@touch -r $< $@ + +GeoLiteCity.dat: +	@test -e GeoLiteCity.dat && ln -s GeoLiteCity.dat $@ || { \ +		echo 'No GeoIP City database found.'; \ +		echo 'You can get one from http://dev.maxmind.com/geoip/geolite:'; \ +		echo '  wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz'; \ +		echo '  gunzip GeoLiteCity.dat.gz'; \ +		exit 23; \ +	} + 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) +      } +    }) +}) diff --git a/util/lib/geo/package.json b/util/lib/geo/package.json new file mode 100644 index 00000000..ad449a62 --- /dev/null +++ b/util/lib/geo/package.json @@ -0,0 +1,7 @@ +{ +  "name": "geo", +  "version": "0.0.0", +  "dependencies": { +    "geoip": "*" +  } +} | 
