Update 'node.js'

This commit is contained in:
sco
2020-10-24 02:39:14 +02:00
parent e179edec5a
commit f38c824330
+127 -74
View File
@@ -5,6 +5,7 @@ const fs = require('fs');
const path = require('path'); const path = require('path');
const os = require('os'); const os = require('os');
const http = require("http"); const http = require("http");
const ping = require('ping');
const exec = util.promisify(require('child_process').exec); const exec = util.promisify(require('child_process').exec);
const readFileAsync = util.promisify(fs.readFile); const readFileAsync = util.promisify(fs.readFile);
@@ -14,103 +15,155 @@ const app = express(); // app is an instance of express
app.use(compression()); // enables gzip compression app.use(compression()); // enables gzip compression
app.options('*', (req, res) => { app.options('*', (req, res) => {
res.set({ res.set({
'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, OPTIONS', 'Access-Control-Allow-Methods': 'GET, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type', 'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Max-Age': 600 'Access-Control-Max-Age': 600
}) })
res.status(200).end(); res.status(200).end();
}) })
app.get('/dvbStatus', async (req, res) => { app.get('/dvbStatus', async (req, res) => {
res.set({ res.set({
'Access-Control-Allow-Origin': '*' 'Access-Control-Allow-Origin': '*'
}); });
const { stdout, stderr } = await exec('DTV'); let tuner = 0;
const i = parseInt(stdout) * 1e-6; // i is in Hz; divide by 1M to have MHz tuner = req.query.t;
res.send({ const { stdout, stderr } = await exec(`DTV2 -t ${tuner}`);
"id": "dvb-t-status", const i = parseInt(stdout) * 1e-6; // i is in Hz; divide by 1M to have MHz
"data": `Frontend Frequency: ${i} Mhz`, res.send({
"stderr": stderr "id": "dvb-t-status",
}); "data": `Frontend Frequency: ${i} Mhz`,
"stderr": stderr
});
}); });
app.get('/dvbChannel', async (req, res) => { app.get('/dvbChannel', async (req, res) => {
res.set({ res.set({
'Access-Control-Allow-Origin': '*' 'Access-Control-Allow-Origin': '*'
}); });
const { stdout, stderr } = await exec('DTV'); let tuner = 0;
const i = parseInt(stdout) * 1e-6; // i is in Hz; divide by 1M to have MHz tuner = req.query.t;
readFileAsync(path.join(__dirname,"frequencies.json")) const { stdout, stderr } = await exec(`DTV2 -t ${tuner}`);
.then(res2 => { const i = parseInt(stdout) * 1e-6; // i is in Hz; divide by 1M to have MHz
const db = JSON.parse(res2); readFileAsync(path.join(__dirname,"frequencies.json"))
res.send({ .then(res2 => {
"id": `dvb-t-channel`, const db = JSON.parse(res2);
"name": db[i]["name"].toString(), res.send({
"data": db[i]["channels"].toString(), "id": `dvb-t-channel`,
"stderr": stderr "name": db[i]["name"].toString(),
}); "data": db[i]["channels"].toString(),
}) "stderr": stderr
.catch(err => console.error(err)) });
})
.catch(err => console.error(err))
}); });
app.get('/internetCheck', async (req, res) => { app.get('/internetCheck', async (req, res) => {
res.set({ res.set({
'Access-Control-Allow-Origin': '*' 'Access-Control-Allow-Origin': '*'
}); });
http.get('http://icanhazip.com', (httpRes) => { http.get('http://icanhazip.com', (httpRes) => {
httpRes.setEncoding('utf8'); httpRes.setEncoding('utf8');
httpRes.on('data', (body) => { httpRes.on('data', (body) => {
res.send( res.send(
{ {
"id": "internet-check", "id": "internet-check",
"data": body, "data": body,
"stderr": "" "stderr": ""
} }
) )
}); });
});
}); });
app.get('/vpnCheck', async (req, res) => {
res.set({
'Access-Control-Allow-Origin': '*'
});
let ifaces = os.networkInterfaces()
if(ifaces.hasOwnProperty('tun0')){
res.send(
{
"id": "vpn-check",
"data": ifaces["tun0"][0]["cidr"],
"stderr": ""
})
} else {
res.send(
{
"id": "vpn-check",
"data": "Not connected",
"stderr": ""
})
}
}); });
app.get('/sysStatus', (req, res) => { app.get('/sysStatus', (req, res) => {
res.set({ res.set({
'Access-Control-Allow-Origin': '*' 'Access-Control-Allow-Origin': '*'
}); });
readFileAsync('/sys/class/thermal/thermal_zone0/temp') readFileAsync('/sys/class/thermal/thermal_zone0/temp')
.then(res2=> .then(res2=>
{ {
res.send( res.send({
{ "id": "sys-stats",
"id": "sys-stats", "data": `${(parseFloat(res2)*1e-3).toFixed(2)} °C Load: ${os.loadavg().map(x=>x.toFixed(2)).toString()}`,
"data": `Temp: ${(parseFloat(res2)*1e-3).toFixed(2)} °C Load Avg: ${os.loadavg().map(x=>x.toFixed(2)).toString()}`, "stderr": ""
"stderr": "" })
} })
) .catch(err=> {
}) console.error(err)
.catch(err=> { res.send({
console.error(err) "id": "sys-stats",
res.send( "data": `Load Avg: ${os.loadavg().map(x=>x.toFixed(2)).toString()}`,
{ "stderr": err
"id": "sys-stats", })
"data": `Load Avg: ${os.loadavg().map(x=>x.toFixed(2)).toString()}`, })
"stderr": err
}
)
})
}); });
app.get('/lancianoCheck', async (req, res) => {
res.set({
'Access-Control-Allow-Origin': '*'
});
let hostRes='';
let hosts = ["10.8.0.2","10.8.0.3"];
let promArr=[];
for(let host of hosts) {
promArr.push(ping.promise.probe(host));
}
Promise.all(promArr)
.then(function (res) {
for (let item of res) {
if(item.alive) {
hostRes+=item.host+' is alive ';
}
else{
hostRes+=item.host+' is dead ';
}
}
})
.finally(()=>{
res.send({
"id": "lanciano-check",
"data": hostRes.toString(),
"stderr": ""
})
})
})
app.use(express.static('/var/www/default')); // serve static build site app.use(express.static('/var/www/forbidden-fruit-dashboard')); // serve static build site
// app.get('*', (req, res) => { // app.get('*', (req, res) => {
// res.sendFile(__dirname + '/public/index.html'); // res.sendFile(__dirname + '/public/index.html');
// }); // });
//app.listen(8000,"192.168.10.14", () => console.log('listen on 8000')); //app.listen(8000,"192.168.10.14", () => console.log('listen on 8000'));
app.listen(process.env.NODE_PORT,'127.0.0.80', () => console.log('listen on 3000')); app.listen(process.env.NODE_PORT,process.env.NODE_IP, () => console.log(`Bind on ${process.env.NODE_IP}:${process.env.NODE_PORT}`));