You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
2.8 KiB
140 lines
2.8 KiB
module.exports = (logger, node, ns) => { |
|
|
|
|
|
const log = logger.getLogger('weblog'); |
|
const express = require('express'); |
|
const app = express() |
|
const port = 3001; |
|
|
|
app.get('/', (req, res) => { |
|
res.send('Hello World!') |
|
}) |
|
|
|
app.listen(port, () => { |
|
log.info('API web server begin at ', port); |
|
}) |
|
|
|
function isJson(str) { |
|
try { |
|
if (typeof JSON.parse(str) == "object") { |
|
return true; |
|
} |
|
} catch(e) { |
|
} |
|
return false; |
|
} |
|
|
|
app.get('/status', (req, res) => { |
|
if(!req.query.hasOwnProperty('query')){ |
|
res.status(500).send(); |
|
return; |
|
} |
|
if(!isJson(req.query.query)){ |
|
res.status(500).send(); |
|
return; |
|
} |
|
|
|
let query = JSON.parse(req.query.query); |
|
|
|
let resData = {}; |
|
query.forEach(nid => { |
|
if(node.hasOwnProperty(nid)){ |
|
resData[nid] = {}; |
|
resData[nid].status = node[nid].status; |
|
resData[nid].funcID = node[nid].info.funcID; |
|
resData[nid].port = node[nid].info.localport; |
|
resData[nid].ip = node[nid].info.localip; |
|
resData[nid].ns = node[nid].ns; |
|
resData[nid].heap = node[nid].info.heap; |
|
resData[nid].spiff = node[nid].info.spiff; |
|
resData[nid].HeartbeatInterval = node[nid].info.HeartbeatInterval; |
|
resData[nid].LastUpTime = node[nid].info.LastUpTime; |
|
resData[nid].LastActiveTime = node[nid].info.LastActiveTime; |
|
resData[nid].LastRefreshTime = node[nid].LastRefreshTime; |
|
resData[nid].LastRestartTime = node[nid].LastRestartTime; |
|
} |
|
}); |
|
|
|
res.send(resData); |
|
log.info('[status]', JSON.stringify(req.query.query)); |
|
}) |
|
|
|
|
|
|
|
app.get('/setFunc', async (req, res) => { |
|
if(!req.query.hasOwnProperty('nid') || !req.query.hasOwnProperty('funcID') || !req.query.hasOwnProperty('func')){ |
|
res.status(500).send(); |
|
return; |
|
} |
|
|
|
let nid = req.query.nid, |
|
funcID = req.query.funcID, |
|
func = new Buffer(req.query.func, 'base64').toString() |
|
|
|
if(!node.hasOwnProperty(nid)){ |
|
res.status(404).send(); |
|
return; |
|
} |
|
|
|
|
|
if(!node[nid].status){ |
|
res.status(503).send(); |
|
return; |
|
} |
|
|
|
|
|
let status = await node[nid].setFunc(funcID, func); |
|
|
|
|
|
|
|
res.send({status: status}); |
|
log.info('[setFunc]', '<'+nid+'>', funcID, status); |
|
}) |
|
|
|
|
|
|
|
app.get('/restart', async (req, res) => { |
|
if(!req.query.hasOwnProperty('nid')){ |
|
res.status(500).send(); |
|
return; |
|
} |
|
|
|
let nid = req.query.nid; |
|
|
|
if(!node.hasOwnProperty(nid)){ |
|
res.status(404).send(); |
|
return; |
|
} |
|
|
|
|
|
if(!node[nid].status){ |
|
res.status(503).send(); |
|
return; |
|
} |
|
|
|
|
|
let status = await node[nid].restart(); |
|
res.send({status: status}); |
|
log.info('[restart]', '<'+nid+'>', status); |
|
}) |
|
|
|
|
|
|
|
|
|
|
|
app.get('/log', (req, res) => { |
|
if(!req.query.hasOwnProperty('type') || !req.query.hasOwnProperty('start')){ |
|
res.status(500).send(); |
|
return; |
|
} |
|
|
|
res.send(); |
|
log.info('[log]', req.query.type); |
|
}) |
|
|
|
|
|
|
|
|
|
|
|
return null; |
|
} |