This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
web-monitor/server/server.js
2024-05-10 05:07:21 +00:00

73 lines
2.0 KiB
JavaScript
Executable File

var http = require('http');
var readline = require('readline');
const {config} = require('./config');
const {check_whitelist} = require('./utils');
const {serve_resource} = require('./utils');
const {registerUser} = require('./controller');
const {loginUser} = require('./controller');
const {listMonitors} = require('./controller');
const {newMonitor} = require('./controller');
const {deleteMonitors} = require('./controller');
const {scheduler} = require('./scheduler');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
function server_listener(request, response){
var ip = request.socket.remoteAddress;
var whitelist = {'stop':false, 'country':'N/A', 'ip':ip};
check_whitelist(whitelist);
if(whitelist.stop){
response.end('Acess Denied');
}
else{
var url = new URL(request.url,`http://${request.headers.host}`);
var path = url.pathname
var params = new URLSearchParams(url.searchParams);
//API calls
if(path.startsWith("/api")){
switch(request.socket.parser.incoming.method){
case "GET":
if(path.endsWith("/list"))
listMonitors(request,response);
else if(path.endsWith("/logout"))
logoutUser(request,response);
break;
case "POST":
if(path.endsWith("/register"))
registerUser(request,response);
else if(path.endsWith("/login"))
loginUser(request,response);
else if(path.endsWith("/newMonitor"))
newMonitor(request,response);
break;
case "PUT":
break;
case "DELETE":
if(path.endsWith("/delete")){
var idArray = JSON.parse('['+params.getAll('id')+']');
deleteMonitors(request,response,idArray);
}
break;
}
}
else{
serve_resource(request,response,whitelist);
}
}
}
scheduler();
var server = http.createServer(server_listener);
server.listen(config.node_port);
rl.question("Server running (Enter to stop)\n",(answer) =>{
server.close();
process.exit(1);
});