Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /////// Client ///////
- var socket = io.connect("http://melon.pw:8001");
- $(window).on('load', function(){
- $(".loading").fadeOut();
- });
- $(document).ready(function(){
- $(".error").hide();
- $(".success").hide();
- $(".authentication").hide();
- if (localStorage.username) {
- var un = localStorage.getItem("username");
- $("#user").html(un);
- $("#auth").html("Logout");
- $(".authentication").slideUp();
- }
- $("#user").click(function() {
- if ($("#user").text().includes("Anonymous")) {
- $(".authentication").slideToggle();
- } else {
- alert("The account pages are not implemented yet.");
- }
- });
- $("#auth").click(function() {
- var text = $("#auth").text();
- if (text.includes("Login")) {
- $(".authentication").slideToggle();
- } else {
- var username = localStorage.getItem("username");
- socket.emit("logout", { username: username });
- localStorage.removeItem("username");
- localStorage.removeItem("password");
- location.reload();
- }
- });
- var i = 0;
- setInterval(function() {
- $(".sidebar-top").css('filter', 'hue-rotate(' + i++ + 'deg)');
- if (i >= 360) i = 0;
- }, 25);
- $("body").keypress(function(e) {
- if (e.which == 13) {
- if ($("#confirm-password").is(":focus")) {
- $("#register").trigger("click");
- } else if ($("#login-password").is(":focus")) {
- $("#login").trigger("click");
- } else if ($("#input").is(":focus")) {
- if ($("#user").text().includes("Anonymous")) {
- $(".authentication").slideDown();
- } else {
- var username = localStorage.getItem("username");
- data = { username: username, message: $("#input").val() };
- $("#input").val("");
- socket.emit("sendMessage", data);
- }
- }
- }
- });
- $("#login").click(function() {
- var username = $("#login-username").val();
- var password = $("#login-password").val();
- var data = { username: username, password: password };
- socket.emit("login", data);
- });
- $("#register").click(function() {
- var username = $("#register-username").val();
- var password = $("#register-password").val();
- var confirmPassword = $("#confirm-password").val();
- var data = {};
- if (/^[a-z0-9]+$/i.test(username) == false) {
- $(".error").slideDown();
- $(".error").html("Username invalid.");
- } else if (/^[a-z0-9]+$/i.test(password) == false) {
- $(".error").slideDown();
- $(".error").html("Password invalid.");
- } else {
- if (username.length >= 5) {
- if (password.length >= 6) {
- if (password == confirmPassword) {
- data = { username: username, password: password, confirm: confirmPassword };
- socket.emit("register", data);
- } else {
- $(".error").slideDown();
- $(".error").html("Passwords mismatch.");
- }
- } else {
- $(".error").slideDown();
- $(".error").html("Password too short.");
- }
- } else {
- $(".error").slideDown();
- $(".error").html("Username too short.");
- }
- }
- });
- function getCurrentTime() {
- var date = new Date();
- var hours = date.getHours();
- var minutes = date.getMinutes();
- var period = "AM";
- if (minutes < 10) {
- minutes = "0" + minutes;
- }
- if (hours > 12) {
- hours -= 12;
- period = "PM";
- }
- return hours + ":" + minutes + " " + period;
- }
- socket.on("updateMessages", function(data) {
- $(".chat-messages").append("<span id='time'>(" + getCurrentTime() + ")</span> <span id='message'>" + data.username + ": " + data.message + "</span><br>");
- $('.chat-messages').scrollTop($('.chat-messages')[0].scrollHeight);
- });
- socket.on("initialMessages", function(data) {
- var messages = data.messages;
- $(".chat-messages").html("");
- for (var i = 0; i <= messages.length; i++) {
- $(".chat-messages").append(messages[i]);
- }
- });
- socket.on("login", function(data) {
- switch (data.type) {
- case "success":
- localStorage.setItem("username", data.username);
- localStorage.setItem("password", data.password);
- var un = localStorage.getItem("username");
- $("#user").html(un);
- $("#auth").html("Logout");
- $(".authentication").slideUp();
- break;
- case "incorrectInfo":
- $(".success").slideUp();
- $(".error").slideDown();
- $(".error").html("Login incorrect.");
- break;
- default:
- $(".success").slideUp();
- $(".error").slideDown();
- $(".error").html("Unknown error!");
- break;
- }
- });
- socket.on("register", function(data) {
- switch (data.type) {
- case "userExists":
- $(".success").slideUp();
- $(".error").slideDown();
- $(".error").html("Username exists.");
- break;
- case "passwordMismatch":
- $(".success").slideUp();
- $(".error").slideDown();
- $(".error").html("Passwords mismatch.");
- break;
- case "passwordLength":
- $(".success").slideUp();
- $(".error").slideDown();
- $(".error").html("Password too short.");
- break;
- case "usernameLength":
- $(".success").slideUp();
- $(".error").slideDown();
- $(".error").html("Username too short.");
- break;
- case "success":
- var data = { username: data.username, password: data.password };
- socket.emit("login", data);
- break;
- default:
- $(".success").slideUp();
- $(".error").slideDown();
- $(".error").html("Unknown error!");
- break;
- }
- });
- });
- /////// Server ///////
- var client = require("socket.io").listen(8001).sockets;
- var mysql = require("mysql");
- var colors = require("colors");
- var crypto = require("crypto");
- var config = {
- host: "localhost",
- user: "root",
- password: "",
- database: "melonpw"
- };
- var users = {};
- var num = 0;
- var con;
- function log(text, color) {
- var d = new Date();
- var h = d.getHours();
- var m = d.getMinutes();
- var ap = "AM";
- if (h > 12) {
- h -= 12;
- var ap = "PM";
- }
- if (m < 10) {
- m = "0" + m;
- }
- time = h + ":" + m + " " + ap;
- if (typeof(color) == "undefined") {
- display = colors.grey(time) + ": " + text;
- console.log(display);
- } else {
- console.log(colors.grey(time) + ": " + colors[color](text));
- }
- }
- function handleConnection() {
- con = mysql.createConnection(config);
- con.connect(function(err) {
- if (err) {
- log("An error has occurred while connection: " + err, "red");
- setTimeout(handleConnection, 2000);
- } else {
- log("Connection successful.", "green");
- con.query("SELECT username FROM users", function(err, res) {
- if (err) throw err;
- for (var i = 0; i < res.length; i++) {
- users[res[i].username] = {};
- }
- log("Set known users.", "green");
- });
- }
- });
- con.on("error", function(err) {
- console.log("Error: " + err);
- if (err.code === "PROTOCOL_CONNECTION_LOST") {
- handleConnection();
- } else {
- throw err;
- }
- });
- }
- var messages = [];
- function getMessages() {
- con.query("SELECT time, username, message FROM messages", function(err, res) {
- if (err) throw err;
- for (var i = 0; i < res.length; i++) {
- messages[i] = "<span id='time'>(" + res[i].time + ")</span> <span id='message'>" + res[i].username + ": " + res[i].message + "</span><br>";
- }
- });
- }
- function getCurrentTime() {
- var date = new Date();
- var hours = date.getHours();
- var minutes = date.getMinutes();
- var period = "AM";
- if (minutes < 10) {
- minutes = "0" + minutes;
- }
- if (hours > 12) {
- hours -= 12;
- period = "PM";
- }
- return hours + ":" + minutes + " " + period;
- }
- handleConnection();
- client.on("connection", function(socket) {
- socket.join("chat");
- getMessages();
- socket.emit("initialMessages", { messages: messages });
- socket.on("sendMessage", function(data) {
- var username = data.username;
- var message = data.message;
- insert = { time: getCurrentTime(), username: username, message: message };
- con.query("INSERT INTO messages SET ?", insert, function(err, res) {
- if (err) throw err;
- data = { time: "0", username: username, message: message };
- client.to("chat").emit("updateMessages", data);
- });
- });
- socket.on("register", function(data) {
- for (var key in users) {
- if (key.toLowerCase() == data.username.toLowerCase()) {
- log("Username already exists.", "red");
- socket.emit("register", { type: "userExists" });
- return;
- }
- }
- if (data.username.length >= 5) {
- if (data.password.length >= 6) {
- if (data.password == data.confirm) {
- encryptedPassword = crypto.createHash('md5').update(data.password).digest('hex');
- insert = { username: data.username, password: encryptedPassword };
- con.query("INSERT INTO users SET ?", insert, function(err, res) {
- if (err) throw err;
- users[data.username] = {};
- log("Registered user successfully.", "yellow");
- socket.emit("register", { type: "success", username: data.username, password: data.password });
- });
- } else {
- socket.emit("register", { type: "passwordMismatch" });
- log("Password doesn't match.", "red");
- }
- } else {
- socket.emit("register", { type: "passwordLength" });
- log("Password too short.", "red");
- }
- } else {
- socket.emit("register", { type: "usernameLength" });
- log("Username too short.", "red");
- }
- });
- socket.on("login", function(data) {
- con.query("SELECT username, password FROM users WHERE username = '" + data.username + "'", function(err, res) {
- if (err) throw err;
- if (res.length > 0) {
- encryptedPassword = crypto.createHash('md5').update(data.password).digest('hex');
- if (encryptedPassword == res[0].password) {
- socket.emit("login", { type: "success", username: data.username, password: data.password });
- socket.join("chat");
- log(data.username + " has logged in.", "yellow");
- } else {
- socket.emit("login", { type: "incorrectInfo" });
- }
- } else {
- socket.emit("login", { type: "incorrectInfo" });
- }
- });
- });
- socket.on("logout", function(data) {
- log(data.username + " has logged out.", "yellow");
- });
- socket.on("add", function(data) {
- con.query("SELECT * FROM testing", function(err, res) {
- if (err) throw err;
- console.log("Returned amount: " + res[0].amount);
- if (num == 0) num = 1;
- num = parseInt(res[0].amount) + 1;
- console.log("Number value = " + num);
- });
- con.query("UPDATE testing SET amount = ? WHERE id = ?", [num, 1], function (err, res) {
- if (err) throw err;
- console.log(res);
- });
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement