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.
gensec-westgate-djw2/hw4/test/test-orig.js
2024-05-09 22:14:42 -07:00

66 lines
2.4 KiB
JavaScript

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