summaryrefslogtreecommitdiffstats
path: root/hyper/influx/http/index.js
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2011-09-22 20:14:08 +0200
committermakefu <github@syntax-fehler.de>2011-09-22 20:14:08 +0200
commit3232213019d7552d64467fcb9a16538621455656 (patch)
tree0a5adcb578820ec381312d2607a8f7319734bf09 /hyper/influx/http/index.js
parentf07f13ee00e3d2ab56bacba51e0b6dab5a238e8a (diff)
parenta4fbd7d77c3b9a0fd202de9883bd8e07019a79e7 (diff)
Merge branch 'master' of github.com:krebscode/painload
Diffstat (limited to 'hyper/influx/http/index.js')
-rwxr-xr-xhyper/influx/http/index.js57
1 files changed, 57 insertions, 0 deletions
diff --git a/hyper/influx/http/index.js b/hyper/influx/http/index.js
new file mode 100755
index 00000000..346dde3b
--- /dev/null
+++ b/hyper/influx/http/index.js
@@ -0,0 +1,57 @@
+#! /usr/bin/env node
+
+name = '//hyper/influx/http'
+port = process.env.port || 1337
+host = process.env.host || '127.0.0.1'
+
+
+console.info(name);
+
+fs = require('fs');
+path = require('path');
+http = require('http');
+
+fifo_path = path.resolve(process.argv[2] || path.join(process.cwd(), '0'));
+
+// check configuration
+try {
+ (function (stat) {
+ if ((stat.mode & 0010000) === 0) {
+ throw { code: 'E_not_fifo', path: fifo_path };
+ };
+ })(fs.statSync(fifo_path));
+} catch (exn) {
+ console.error(exn);
+ process.exit(23);
+};
+
+process.stdin.destroy();
+fifo = fs.createWriteStream(fifo_path);
+fifo.on('open', function (fd) {
+ console.info('fifo open as fd', fd);
+
+ http.createServer(function (req, res) {
+ var rhost = req.connection.remoteAddress;
+ var rport = req.connection.remotePort;
+ var id = rhost + ':' + rport;
+
+ console.info(id, 'request', req.method, req.url);
+
+ req.on('data', function (data) {
+ console.info(id, 'data', data.length);
+ });
+
+ req.on('end', function (data) {
+ console.info(id, 'end');
+ res.writeHead(202, {
+ 'Content-Length': 0,
+ 'Connection': 'close'
+ });
+ res.end();
+ });
+
+ req.pipe(fifo, { end: false });
+ }).listen(port, host, function () {
+ console.info('server running at http://' + host + ':' + port + '/');
+ });
+});