-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapp.js
102 lines (79 loc) · 2.35 KB
/
app.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
* TODO:
* - Add a settings file and move the username password for Nagios in there.
*
*/
var express = require('express');
var app = express();
var cors = require('cors');
var http = require('http');
var url = require('url');
var fs = require('fs');
var settings;
// Load the settings file, if it exists
try {
stats = fs.lstatSync('settings.js');
settings = require('./settings');
if (stats.isFile()) { console.log('settings.js file found.'); }
}
catch (e) {
console.log('Copy the file settings.dist.js to settings.js');
process.exit();
}
// Check if the user changed the username and password in settings.js
if (settings.username === 'changeme') {
console.log('Please set username and password for Nagios web interface in settings.js');
process.exit();
}
function getNagios(req, res) {
var username = settings.username;
var password = settings.password;
var auth = 'Basic ' + new Buffer(username + ':' + password).toString('base64');
var page = req.params.page;
var url_parts = url.parse(req.url, true);
var queryparams = url_parts.query;
// console.log('req.url');
// console.log(req.url);
// console.log('url_parts');
// console.log(url_parts);
// console.log('params');
// console.log(req.params);
// console.log('queryparams');
// console.log(queryparams);
var path = '/nagios/cgi-bin/'+page+url_parts.search;
var options = {
host: settings.nagiosServerHost,
port: 80,
path: path,
auth: username+':'+password
};
console.log('requesting URL ' + options.host + ':' + options.port + options.path);
http.get(options, function(resp){
//resp.setEncoding('utf8');
var body = '';
resp.on('data', function(chunk){
body += chunk;
});
resp.on('end', function(){
//do something with chunk
if (body === '') {
console.log('body is empty. sending default');
//res.redirect('/images/broken-image.gif');
return;
}
res.setHeader('Content-Type', 'application/json');
res.send(body);
});
}).on("error", function(e){
console.log("Got error: " + e.message);
res.send('Got error: ' + e.message);
}).end();
return;
}
app.use(cors());
app.use('/', express.static('../dist'));
app.get('/nagios/:page', function(req, res) {
getNagios(req, res);
});
app.listen(3000);
console.log('Listening on port 3000...');