Repository navigation
Expand file tree
/
Copy pathserver.js
More file actions
67 lines (58 loc) · 1.72 KB
/
Copy pathserver.js
File metadata and controls
67 lines (58 loc) · 1.72 KB
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
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const request = require('request');
//const xml2json = require('xml2json');
var DOMParser = global.DOMParser = require('xmldom').DOMParser;
var WMSCapabilities = require('wms-capabilities');
var netconfig;
if (process.env.WMSC_TRUSTED_PROXIES &&
process.env.WMSC_TRUSTED_IPS)
{
netconfig = {
trusted_proxies: process.env.PS_TRUSTED_PROXIES,
trusted_ips: process.env.PS_TRUSTED_IPS
};
} else {
netconfig = require('./netconfig.json');
}
var app = express();
if (netconfig.trusted_proxies && netconfig.trusted_proxies !== '') {
app.set('trust proxy', netconfig.trusted_proxies);
}
app.use(bodyParser.urlencoded({extended: true, limit: '50mb'}));
app.use(bodyParser.json());
app.use(express.static('html'))
function errorResponse(res, message)
{
res.json({error: message});
}
app.post('/getcapabilities', cors(), function(req, res) {
console.log('POST /getcapabilities');
var url = req.body.url;
if (!url) {
return errorResponse(res, 'no url provided');
}
request(url, { }, (err, clientres, xml) => {
if (err) {
return errorResponse(res, 'request error:' + err);
} else {
try {
var json = new WMSCapabilities().parse(xml);
if (json.version && json.Service && json.Capability) {
res.json(json);
} else {
errorResponse(res, 'parse error: capabilities invalid or incomplete')
}
} catch(err){
errorResponse(res, 'parse error: ' + err.message);
}
}
});
});
var port = 3100;
if (process.env.WMSC_PORT) {
port = process.env.WMSC_PORT;
}
app.listen(port);
console.log('Listening at http://localhost:' + port);