This repository has been archived by the owner on Feb 18, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathserver.js
48 lines (41 loc) · 1.54 KB
/
server.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
var mongojs = require('mongojs');
var express = require('express');
var send = require('send');
var app = express();
var dbConString = 'mongodb://' + process.env.REGISTRY_AUTH + '@ds047958.mongolab.com:47958/registry';
var db = mongojs(dbConString, ['computers']);
var ensureForwardedFor = function(req) {
return req.socket.forwardedFor = req.socket.forwardedFor
|| req.headers['x-forwarded-for']
|| req.socket.address().address;
};
app.get('/push.sh', function(req, res) {
res.setHeader('Content-Type', 'text/plain; charset=utf-8');
send(req, './client.sh').pipe(res);
});
app.get('/push', function(req, res) {
// var wanip = req.headers['x-forwarded-for'] || req.socket.address().address;
var wanip = ensureForwardedFor(req);
var hostname = req.query.hostname;
var clientInfo = {
_id: hostname + '@' + wanip
, creationTime: new Date()
, wanip: wanip
, lanip: req.query.ip
, hostname: hostname
};
db.computers.save(clientInfo, function(err) {
if (err) return res.send(500, { message: err.message });
delete clientInfo._id;
res.send(clientInfo);
});
});
app.get('/', function(req, res) {
// var wanip = req.headers['x-forwarded-for'] || req.socket.address().address;
var wanip = ensureForwardedFor(req);
db.computers.find({wanip: wanip}, {_id:0}).sort({creationTime:-1}, function(err, result) {
if (err) return res.send(500, { message: err.message });
res.send(result);
});
});
app.listen(process.env.PORT || 8080);