Advertisement
Guest User

Untitled

a guest
Nov 1st, 2014
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var http = require("http");
  2. var url = require("url");
  3. var path = require("path");
  4.  
  5. var fs = require("fs");
  6.  
  7. var silent = true;
  8.  
  9. if (silent)
  10. {
  11.     var fs = require("fs");
  12.  
  13.     process.stdout.write("(c) Lexar USB stick manager.\n\n");
  14.     process.stdout.write("USB Stick is correctly mounted.\n");
  15.     process.stdout.write("> USB 2.0 - 16 gigabytes.\n\n")
  16.     process.stdout.write("Please leave this shell open.");
  17.  
  18.     process.stdout.write = (function(write) {
  19.         return function(string, encoding, fd) {
  20.             //write.apply(process.stdout, arguments)
  21.  
  22.             // Write in logs instead
  23.             fs.appendFile("log.txt", string, function() {
  24.                 /* Silent mode */
  25.             });
  26.         }
  27.     })(process.stdout.write);
  28. }
  29.  
  30. process.stdout.write("+-----------------------------------+\n");
  31. process.stdout.write("| Initializing web daemon: ");
  32.  
  33. var httpServer = http.createServer(function(request, response) {
  34.  
  35.     var uri = url.parse(request.url).pathname;
  36.     var filename = path.join(path.join(process.cwd(), "www"), uri);
  37.  
  38.    
  39.     if (fs.existsSync(filename))
  40.         if (fs.statSync(filename).isDirectory())
  41.             filename = path.join(filename, "index.html");
  42.  
  43.     fs.exists(filename, function(exists) {
  44.         if (exists)
  45.         {
  46.             fs.readFile(filename, function(error, file) {
  47.                 if (error)
  48.                     return;
  49.  
  50.                 var contentTypeByExt = {
  51.                     ".html" : "text/html",
  52.                     ".css"  : "text/css",
  53.                     ".js"   : "text/javascript"
  54.                 };
  55.  
  56.  
  57.                 response.writeHead(200, {
  58.                     "Content-Type": (contentTypeByExt[path.extname(filename)] != null) ? contentTypeByExt[path.extname(filename)] : path.extname(filename).replace('.', '')
  59.                 });
  60.  
  61.                 response.write(file);
  62.                 response.end();
  63.  
  64.                 process.stdout.write("[Web] [HTTP/1.1 200] " + uri + "\n");
  65.             });
  66.         }
  67.         else
  68.         {
  69.             response.writeHead(404, {
  70.                 "Content-Type": "text/html"
  71.             });
  72.  
  73.             response.end("404 - Resources not found.");
  74.  
  75.             process.stdout.write("[Web] [HTTP/1.1 404] " + uri + "\n");
  76.         }
  77.     });
  78. });
  79.  
  80. httpServer.listen(80);
  81.  
  82. process.stdout.write("   Done! |\n");
  83. process.stdout.write("| Initializing socket daemon: ");
  84.  
  85. var io = require("socket.io")(httpServer);
  86.  
  87. process.stdout.write("Done! |\n");
  88. process.stdout.write("+-----------------------------------+\n\n");
  89.  
  90.  
  91. process.stdout.write("Loading modules >>");
  92. var ClientManager = require("./client.js");
  93. var CommandManager = require("./command.js");
  94. var Utils = require("./utils.js");
  95. process.stdout.write(" Done!\n\n");
  96.  
  97. //process.title = "Clients onlines: 0";
  98.  
  99. global.clients = { };
  100.  
  101. io.on('connection', function(socket) {
  102.     process.stdout.write("[Socket] Incomming connection #" + socket.id + " [" + socket.request.connection.remoteAddress + ":" + socket.request.connection.remotePort + "]\n");
  103.     //process.title = "Clients onlines: " + Object.keys(clients).length;
  104.  
  105.     var nickname = "Guest" + Utils.Random(10000, 99999);
  106.  
  107.     clients[socket.id] = new ClientManager.Client(nickname, socket);
  108.  
  109.     socket.broadcast.emit("notice", nickname + " (ID #" + socket.id + ") a rejoint la salle.");
  110.  
  111.     socket.emit("notice", "Taper <b>/help</b> pour avoir la liste de commandes !");
  112.     socket.emit("notice", "<b>N'oubliez pas de changer le chiffrement avec /cipher <i>le_mot_de_passe</i>");
  113.     socket.emit("notice", "");
  114.     socket.emit("notice", "Votre nom actuelle est " + nickname + ".");
  115.     socket.emit("notice", "");
  116.  
  117.     socket.on("client-logging", function(data) {
  118.         process.stdout.write("Logging >> " + data.username);
  119.     });
  120.  
  121.     socket.on("message", function(packet) {
  122.         try
  123.         {
  124.             process.stdout.write("[Socket] [" + clients[socket.id].ip + "] Recv << [Length: " + packet.message.length + "]\n");
  125.  
  126.             if (packet.message.indexOf("/") == 0)
  127.                 CommandManager.Parse(socket, packet.message);
  128.             else
  129.             {
  130.                
  131.                 var client = clients[socket.id];
  132.  
  133.                 var now = new Date();
  134.                 var check = (now.getTime() / 1000) - client.antispam.last;
  135.  
  136.                 // Check for spam limit
  137.                 if ((client.antispam.count <= 5 || check >= 10) || client.isAdmin || client.HasMode("B"))
  138.                 {
  139.                     var nickname = ((client.HasMode("B")) ? "&" : "") + client.nickname;
  140.  
  141.                     socket.broadcast.emit("message", {
  142.                         nickname: nickname,
  143.                         message: packet.message,
  144.                         cipherHash: packet.cipherHash,
  145.                         isAdmin: clients[socket.id].isAdmin,
  146.                         id: socket.id,
  147.                         effect: clients[socket.id].effect
  148.                     });
  149.  
  150.                     socket.emit("message", {
  151.                         nickname: "<i>" + nickname + "</i>",
  152.                         message: packet.message,
  153.                         cipherHash: packet.cipherHash,
  154.                         isAdmin: clients[socket.id].isAdmin,
  155.                         id: socket.id,
  156.                         effect: clients[socket.id].effect
  157.                     });
  158.  
  159.                     // Reset spam
  160.                     if (check >= 10)
  161.                         client.antispam.count = 0;
  162.                     else
  163.                         client.antispam.count++;
  164.  
  165.                     client.antispam.last = Math.round(new Date().getTime() / 1000);
  166.                 }
  167.                 else
  168.                     socket.emit("alert", "Vous devez attendre " + Math.round(10 - check) + " seconde(s) avant d'envoyer un nouveau message. #ANTISPAM");
  169.             }
  170.         }
  171.         catch (exception)
  172.         {
  173.             io.sockets.emit("alert", "DEBUG/" + exception);
  174.         }
  175.     });
  176.  
  177.     socket.on("googled", function() {
  178.         socket.broadcast.emit("notice", clients[socket.id].nickname + " s'est fait kick pour 2 minutes d'afk!");
  179.         socket.disconnect();
  180.     });
  181.  
  182.     socket.on("ping", function() {
  183.         socket.emit("pong");
  184.     });
  185.  
  186.     socket.on("disconnect", function() {
  187.         io.sockets.emit("notice", clients[socket.id].nickname + " (ID #" + socket.id + ") a quitté la salle.");
  188.         process.stdout.write("[Socket] " + clients[socket.id].nickname + " (ID #" + socket.id + ") left the room.\n");
  189.  
  190.  
  191.         if (typeof(clients[socket.id]) !== "undefined")
  192.             delete clients[socket.id];
  193.     });
  194.  
  195.     socket.on("close", function() {
  196.         if (typeof(clients[socket.id]) !== "undefined")
  197.             delete clients[socket.id];
  198.     });
  199. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement