Advertisement
Guest User

Untitled

a guest
Mar 31st, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. /////// Client ///////
  3.  
  4. var socket = io.connect("http://melon.pw:8001");
  5.  
  6. $(window).on('load', function(){
  7.   $(".loading").fadeOut();
  8. });
  9.  
  10. $(document).ready(function(){
  11.   $(".error").hide();
  12.   $(".success").hide();
  13.   $(".authentication").hide();
  14.  
  15.   if (localStorage.username) {
  16.     var un = localStorage.getItem("username");
  17.     $("#user").html(un);
  18.     $("#auth").html("Logout");
  19.     $(".authentication").slideUp();
  20.   }
  21.  
  22.   $("#user").click(function() {
  23.     if ($("#user").text().includes("Anonymous")) {
  24.       $(".authentication").slideToggle();
  25.     } else {
  26.       alert("The account pages are not implemented yet.");
  27.     }
  28.   });
  29.  
  30.   $("#auth").click(function() {
  31.     var text = $("#auth").text();
  32.     if (text.includes("Login")) {
  33.       $(".authentication").slideToggle();
  34.     } else {
  35.       var username = localStorage.getItem("username");
  36.       socket.emit("logout", { username: username });
  37.       localStorage.removeItem("username");
  38.       localStorage.removeItem("password");
  39.       location.reload();
  40.     }
  41.  
  42.   });
  43.  
  44.   var i = 0;
  45.   setInterval(function() {
  46.     $(".sidebar-top").css('filter', 'hue-rotate(' + i++ + 'deg)');
  47.     if (i >= 360) i = 0;
  48.   }, 25);
  49.  
  50.   $("body").keypress(function(e) {
  51.     if (e.which == 13) {
  52.       if ($("#confirm-password").is(":focus")) {
  53.         $("#register").trigger("click");
  54.       } else if ($("#login-password").is(":focus")) {
  55.         $("#login").trigger("click");
  56.       } else if ($("#input").is(":focus")) {
  57.         if ($("#user").text().includes("Anonymous")) {
  58.           $(".authentication").slideDown();
  59.         } else {
  60.           var username = localStorage.getItem("username");
  61.           data = { username: username, message: $("#input").val() };
  62.           $("#input").val("");
  63.           socket.emit("sendMessage", data);
  64.         }
  65.       }
  66.     }
  67.   });
  68.  
  69.   $("#login").click(function() {
  70.     var username = $("#login-username").val();
  71.     var password = $("#login-password").val();
  72.  
  73.     var data = { username: username, password: password };
  74.     socket.emit("login", data);
  75.   });
  76.  
  77.   $("#register").click(function() {
  78.     var username = $("#register-username").val();
  79.     var password = $("#register-password").val();
  80.     var confirmPassword = $("#confirm-password").val();
  81.     var data = {};
  82.  
  83.     if (/^[a-z0-9]+$/i.test(username) == false) {
  84.       $(".error").slideDown();
  85.       $(".error").html("Username invalid.");
  86.     } else if (/^[a-z0-9]+$/i.test(password) == false) {
  87.       $(".error").slideDown();
  88.       $(".error").html("Password invalid.");
  89.     } else {
  90.       if (username.length >= 5) {
  91.         if (password.length >= 6) {
  92.           if (password == confirmPassword) {
  93.             data = { username: username, password: password, confirm: confirmPassword };
  94.             socket.emit("register", data);
  95.           } else {
  96.             $(".error").slideDown();
  97.             $(".error").html("Passwords mismatch.");
  98.           }
  99.         } else {
  100.           $(".error").slideDown();
  101.           $(".error").html("Password too short.");
  102.         }
  103.       } else {
  104.         $(".error").slideDown();
  105.         $(".error").html("Username too short.");
  106.       }
  107.     }
  108.   });
  109.  
  110.   function getCurrentTime() {
  111.     var date = new Date();
  112.     var hours = date.getHours();
  113.     var minutes = date.getMinutes();
  114.     var period = "AM";
  115.  
  116.     if (minutes < 10) {
  117.       minutes = "0" + minutes;
  118.     }
  119.  
  120.     if (hours > 12) {
  121.       hours -= 12;
  122.       period = "PM";
  123.     }
  124.  
  125.     return hours + ":" + minutes + " " + period;
  126.   }
  127.  
  128.   socket.on("updateMessages", function(data) {
  129.     $(".chat-messages").append("<span id='time'>(" + getCurrentTime() + ")</span> <span id='message'>" + data.username + ": " + data.message + "</span><br>");
  130.     $('.chat-messages').scrollTop($('.chat-messages')[0].scrollHeight);
  131.   });
  132.  
  133.   socket.on("initialMessages", function(data) {
  134.     var messages = data.messages;
  135.  
  136.     $(".chat-messages").html("");
  137.     for (var i = 0; i <= messages.length; i++) {
  138.       $(".chat-messages").append(messages[i]);
  139.     }
  140.   });
  141.  
  142.   socket.on("login", function(data) {
  143.     switch (data.type) {
  144.       case "success":
  145.         localStorage.setItem("username", data.username);
  146.         localStorage.setItem("password", data.password);
  147.         var un = localStorage.getItem("username");
  148.  
  149.         $("#user").html(un);
  150.         $("#auth").html("Logout");
  151.         $(".authentication").slideUp();
  152.       break;
  153.       case "incorrectInfo":
  154.         $(".success").slideUp();
  155.         $(".error").slideDown();
  156.         $(".error").html("Login incorrect.");
  157.       break;
  158.       default:
  159.         $(".success").slideUp();
  160.         $(".error").slideDown();
  161.         $(".error").html("Unknown error!");
  162.       break;
  163.     }
  164.   });
  165.  
  166.   socket.on("register", function(data) {
  167.     switch (data.type) {
  168.       case "userExists":
  169.         $(".success").slideUp();
  170.         $(".error").slideDown();
  171.         $(".error").html("Username exists.");
  172.       break;
  173.       case "passwordMismatch":
  174.         $(".success").slideUp();
  175.         $(".error").slideDown();
  176.         $(".error").html("Passwords mismatch.");
  177.       break;
  178.       case "passwordLength":
  179.         $(".success").slideUp();
  180.         $(".error").slideDown();
  181.         $(".error").html("Password too short.");
  182.       break;
  183.       case "usernameLength":
  184.         $(".success").slideUp();
  185.         $(".error").slideDown();
  186.         $(".error").html("Username too short.");
  187.       break;
  188.       case "success":
  189.         var data = { username: data.username, password: data.password };
  190.         socket.emit("login", data);
  191.       break;
  192.       default:
  193.         $(".success").slideUp();
  194.         $(".error").slideDown();
  195.         $(".error").html("Unknown error!");
  196.       break;
  197.     }
  198.   });
  199.  
  200. });
  201.  
  202.  
  203. /////// Server ///////
  204.  
  205. var client = require("socket.io").listen(8001).sockets;
  206. var mysql = require("mysql");
  207. var colors = require("colors");
  208. var crypto = require("crypto");
  209.  
  210. var config = {
  211.     host: "localhost",
  212.     user: "root",
  213.     password: "",
  214.     database: "melonpw"
  215. };
  216.  
  217. var users = {};
  218.  
  219. var num = 0;
  220. var con;
  221.  
  222. function log(text, color) {
  223.     var d = new Date();
  224.     var h = d.getHours();
  225.     var m = d.getMinutes();
  226.     var ap = "AM";
  227.     if (h > 12) {
  228.         h -= 12;
  229.         var ap = "PM";
  230.     }
  231.     if (m < 10) {
  232.         m = "0" + m;
  233.     }
  234.     time = h + ":" + m + " " + ap;
  235.  
  236.     if (typeof(color) == "undefined") {
  237.         display = colors.grey(time) + ": " + text;
  238.         console.log(display);
  239.     } else {
  240.         console.log(colors.grey(time) + ": " + colors[color](text));
  241.     }
  242. }
  243.  
  244. function handleConnection() {
  245.     con = mysql.createConnection(config);
  246.  
  247.     con.connect(function(err) {
  248.         if (err) {
  249.             log("An error has occurred while connection: " + err, "red");
  250.             setTimeout(handleConnection, 2000);
  251.         } else {
  252.             log("Connection successful.", "green");
  253.  
  254.             con.query("SELECT username FROM users", function(err, res) {
  255.                 if (err) throw err;
  256.  
  257.                 for (var i = 0; i < res.length; i++) {
  258.                     users[res[i].username] = {};
  259.                 }
  260.                 log("Set known users.", "green");
  261.             });
  262.         }
  263.     });
  264.  
  265.     con.on("error", function(err) {
  266.         console.log("Error: " + err);
  267.         if (err.code === "PROTOCOL_CONNECTION_LOST") {
  268.             handleConnection();
  269.         } else {
  270.             throw err;
  271.         }
  272.     });
  273. }
  274.  
  275. var messages = [];
  276. function getMessages() {
  277.     con.query("SELECT time, username, message FROM messages", function(err, res) {
  278.         if (err) throw err;
  279.  
  280.         for (var i = 0; i < res.length; i++) {
  281.             messages[i] = "<span id='time'>(" + res[i].time + ")</span> <span id='message'>" + res[i].username + ": " + res[i].message + "</span><br>";
  282.         }
  283.  
  284.     });
  285. }
  286.  
  287. function getCurrentTime() {
  288.     var date = new Date();
  289.     var hours = date.getHours();
  290.     var minutes = date.getMinutes();
  291.     var period = "AM";
  292.  
  293.     if (minutes < 10) {
  294.         minutes = "0" + minutes;
  295.     }
  296.  
  297.     if (hours > 12) {
  298.         hours -= 12;
  299.         period = "PM";
  300.     }
  301.  
  302.     return hours + ":" + minutes + " " + period;
  303. }
  304.  
  305. handleConnection();
  306. client.on("connection", function(socket) {
  307.     socket.join("chat");
  308.  
  309.     getMessages();
  310.     socket.emit("initialMessages", { messages: messages });
  311.  
  312.     socket.on("sendMessage", function(data) {
  313.         var username = data.username;
  314.         var message = data.message;
  315.  
  316.         insert = { time: getCurrentTime(), username: username, message: message };
  317.         con.query("INSERT INTO messages SET ?", insert, function(err, res) {
  318.             if (err) throw err;
  319.             data = { time: "0", username: username, message: message };
  320.             client.to("chat").emit("updateMessages", data);
  321.         });
  322.     });
  323.  
  324.     socket.on("register", function(data) {
  325.  
  326.         for (var key in users) {
  327.             if (key.toLowerCase() == data.username.toLowerCase()) {
  328.                 log("Username already exists.", "red");
  329.                 socket.emit("register", { type: "userExists" });
  330.                 return;
  331.             }
  332.         }
  333.  
  334.     if (data.username.length >= 5) {
  335.       if (data.password.length >= 6) {
  336.         if (data.password == data.confirm) {
  337.                     encryptedPassword = crypto.createHash('md5').update(data.password).digest('hex');
  338.                     insert = { username: data.username, password: encryptedPassword };
  339.                     con.query("INSERT INTO users SET ?", insert, function(err, res) {
  340.                         if (err) throw err;
  341.                         users[data.username] = {};
  342.                         log("Registered user successfully.", "yellow");
  343.                         socket.emit("register", { type: "success", username: data.username, password: data.password });
  344.                     });
  345.                 } else {
  346.                     socket.emit("register", { type: "passwordMismatch" });
  347.                     log("Password doesn't match.", "red");
  348.                 }
  349.             } else {
  350.                 socket.emit("register", { type: "passwordLength" });
  351.                 log("Password too short.", "red");
  352.             }
  353.         } else {
  354.             socket.emit("register", { type: "usernameLength" });
  355.             log("Username too short.", "red");
  356.         }
  357.     });
  358.  
  359.     socket.on("login", function(data) {
  360.         con.query("SELECT username, password FROM users WHERE username = '" + data.username + "'", function(err, res) {
  361.             if (err) throw err;
  362.  
  363.             if (res.length > 0) {
  364.                 encryptedPassword = crypto.createHash('md5').update(data.password).digest('hex');
  365.                 if (encryptedPassword == res[0].password) {
  366.                     socket.emit("login", { type: "success", username: data.username, password: data.password });
  367.                     socket.join("chat");
  368.                     log(data.username + " has logged in.", "yellow");
  369.                 } else {
  370.                     socket.emit("login", { type: "incorrectInfo" });
  371.                 }
  372.             } else {
  373.                 socket.emit("login", { type: "incorrectInfo" });
  374.             }
  375.         });
  376.     });
  377.  
  378.     socket.on("logout", function(data) {
  379.         log(data.username + " has logged out.", "yellow");
  380.     });
  381.  
  382.   socket.on("add", function(data) {
  383.      con.query("SELECT * FROM testing", function(err, res) {
  384.         if (err) throw err;
  385.         console.log("Returned amount: " + res[0].amount);
  386.         if (num == 0) num = 1;
  387.         num = parseInt(res[0].amount) + 1;
  388.         console.log("Number value = " + num);
  389.      });
  390.  
  391.      con.query("UPDATE testing SET amount = ? WHERE id = ?", [num, 1], function (err, res) {
  392.          if (err) throw err;
  393.  
  394.          console.log(res);
  395.  
  396.      });
  397.  
  398.  
  399.   });
  400. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement