Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- "use strict";
- const port = 4500;
- const http = require('http');
- const url = require('url');
- const fs = require('fs');
- const sys = require('sys');
- const execc = require('child_process').exec;
- var consoleHTML = "";
- const consolePassword = "EmDriveEmDrive23";
- var authorised = false;
- var sessions = new Map();
- const session = function (ip){
- this.ip = ip;
- this.tries = 0;
- }
- //Preparing console HTML file
- fs.readFile('console.html', 'utf8', function (err,data) {
- if (err) {
- return console.log(err);
- }
- consoleHTML = data;
- //console.log(consoleHTML);
- crtServ();
- console.log("Michael Home Server Command Center v0.1 is running.");
- console.log("Listening on port " + port + ", HTTP protocol.");
- });
- function crtServ(){
- http.createServer(function (req, res) {
- console.log("|||||||||||||||||||||||||||||||||||||||||||||||||||||||||");
- console.log("Request: " + req.method + " to " + req.url);
- //console.log(req.headers);
- res.writeHead(200, "OK");
- //getting packet body
- if (req.method === "POST"){
- req.on('data', function(chunk){
- console.log("Received command: " + chunk.toString());
- console.log(chunk.toString());
- if ( (sessions.get(req.connection.remoteAddress) != -1) ){
- console.log("IP:" + req.connection.remoteAddress );
- console.log("Known user: " + sessions.has(req.connection.remoteAddress) );
- console.log("Pswd failures:" + sessions.get(req.connection.remoteAddress));
- if (chunk.toString() != consolePassword) {
- res.write( "Wrong password " );
- if (sessions.has(req.connection.remoteAddress)) {
- let failedTries = sessions.get(req.connection.remoteAddress);
- console.log("failedTries var: " + failedTries);
- if (failedTries === 3){
- setTimeout(function(){
- sessions.set(req.connection.remoteAddress, 0);
- console.log("Unlock: " + req.connection.remoteAddress);
- }, 1080000);
- }
- if (failedTries > 3) {
- console.log ("Blocked account");
- res.write( "3 failed tries. Your session is blocked for next 5 minutes" );
- }
- failedTries++;
- sessions.set(req.connection.remoteAddress, failedTries);
- } else {
- sessions.set(req.connection.remoteAddress, 2);
- }
- res.end();
- } else {
- sessions.set(req.connection.remoteAddress, -1);
- res.write( "Logged in!" );
- req.connection.remoteAddress
- authorised = true;
- res.end();
- }
- } else if (chunk.toString() != ""){
- var incomingCommand = execc(chunk.toString(), function (err, stdout, stderr){
- if (!err){
- res.write( stdout.replace(/</g,"<").replace(/ /g,"  ").replace(/(?:\r\n|\r|\n)/g, '<br />') );
- res.end();
- } else {
- res.write( stderr.replace(/</g,"<").replace(/ /g,"  ").replace(/(?:\r\n|\r|\n)/g, '<br />') );
- res.end();
- }
- });
- } else {
- res.write( "No command received from client" );
- res.end();
- }
- });
- } else {
- res.write(consoleHTML);
- res.end();
- }
- //console.log("consoleHTML");
- }).listen(port);
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement