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); 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); });