-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathindex.js
65 lines (46 loc) · 1.56 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
var express = require('express'),
fs = require('fs'),
exec = require('child_process').exec,
mime = require('mime'),
path = require('path'),
mkdirp = require('mkdirp');
var host = process.env.HTTP_HOST || '0.0.0.0';
var port = process.env.HTTP_PORT || 3000;
var app = express();
app.get('/_ping', function (req, res) {
res.status(200).end();
});
/**
Bundle containing all the user's private keys and ssh configuration
*/
app.get('/ssh.tgz', function (req, res) {
mkdirp("/vault/.ssh");
exec('mktemp -q /tmp/ssh.XXXXXX', function (err, stdout) {
var file = stdout.match(/(.+)/)[0];
exec('tar -chz -C /vault/.ssh -f '+ file +' .', function (err, stdout, stderr) {
var filename = path.basename(file);
var mimetype = mime.lookup(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
res.setHeader('Content-type', mimetype);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
fs.unlink(file)
});
});
});
/**
Route to get the ONVAULT utility to be used during build
*/
app.get('/ONVAULT', function (req, res) {
var file = path.join(__dirname, 'ONVAULT');
var filename = path.basename(file);
var mimetype = mime.lookup(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
res.setHeader('Content-type', mimetype);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
});
app.use('/', express.static('/vault'));
app.listen(port, host, function () {
console.log('Service started on port %d', port);
});