Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- process.title = 'Server Web http NodeJS';
- process.stdout.write('\033c');
- var colors = require('colors');
- var log4js = require('log4js');
- log4js.configure('logConfig.json', { cwd: 'D:/testnode/log' });
- var express = require('express');
- var cookieParser = require('cookie-parser');
- var app = express();
- var server = require('http').createServer(app);
- server.listen(80);
- var io = require('socket.io')(server);
- var mysql = require('mysql');
- var cookiesFl = {
- connect: false
- };
- log4js.loadAppender('file');
- var logs = {
- hello: log4js.getLogger('hello'),
- chat: log4js.getLogger('hello')
- }
- logs.hello.info('Serveur lancé !');
- app.use(cookieParser());
- app.set('view engine', 'ejs');
- app.use(express.static(__dirname + '/views'));
- app.use(function (req, res, next) {
- cookiesFl.connect = req.cookies.connect+"";
- if (cookiesFl.connect!="undefined") {cookiesFl.connect=true} else {cookiesFl.connect=false}
- next();
- });
- var passwordJoinSalon="";
- app.get('/', function(req, res) {
- res.render('index.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
- })
- .get('/anim', function(req, res) {
- res.render('anim.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
- })
- .get('/cursor', function(req, res) {
- res.render('cursor.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
- })
- .get('/application/:name', function(req, res) {
- res.render(req.params.name+".ejs", {connect:cookiesFl.connect, pseudo:req.cookies.connect, salon:'none'});
- })
- .get('/application/chat/:salon', function(req, res) {
- res.render("chats.ejs", {connect:cookiesFl.connect, pseudo:req.cookies.connect, salon:req.params.salon, password:passwordJoinSalon});
- })
- .get('/setcookie/:cookie/:info1', function(req, res) {
- res.cookie(req.params.cookie ,req.params.info1).send('Cookie "'+req.params.cookie+'" is set');
- })
- .get('/delcookie/:cookie', function(req, res) {
- res.clearCookie(req.params.cookie).send('Cookie "'+req.params.cookie+'" is del');
- })
- .use(function(req, res, next){
- res.setHeader('Content-Type', 'text/plain');
- res.send(404, 'Page introuvable !');
- });
- function mySqlCo(n) {
- mySqlClient = mysql.createConnection({
- host : "localhost",
- user : "root",
- password : "",
- database : "flammrock"
- });
- mySqlClient.connect(function(err){
- if(err){
- if (n==0) {
- console.log('Error connecting to Db');
- logs.hello.info('Error connecting to Db');
- console.log("Error conneion to Database..".red+"\n");
- logs.hello.info('Error conneion to Database..');
- }
- return;
- }
- if (n==0) {
- logs.hello.info('Connexion to Database is a success');
- console.log("Connexion to Database is a "+"success".green+" !\n");
- }
- });
- }
- mySqlCo(0);
- var selectQuery = 'SELECT id FROM tchat';
- mySqlClient.query(
- selectQuery,
- function select(error, results, fields) {
- if (error) {
- console.log(error);
- logs.hello.info(error);
- mySqlClient.end();
- return;
- }
- logs.hello.info('Table [tchat] : '+results.length+' messages');
- console.log("Table".blue+" ["+"tchat".green+"] : "+(results.length+"").magenta+" message\n");
- mySqlClient.end();
- }
- );
- var NOW = function() {
- var dat = new Date();
- var h = dat.getHours()+"";
- var m = dat.getMinutes()+"";
- var s = dat.getSeconds()+"";
- if (s.length==1) {s="0"+s}
- if (m.length==1) {m="0"+m}
- if (h.length==1) {h="0"+h}
- return h+","+m+","+s;
- }
- var validateEmail = function(email) {
- var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
- return re.test(email);
- }
- function handler (request, response) {
- request.addListener('end', function () {
- fileServer.serve(request, response);
- });
- }
- io.on('connection', function (client) {
- client.on('Servinscription', function(account) {
- var msg="",err=false;
- if (account.pseudo!="") {
- if (account.mail!="") {
- if (validateEmail(account.mail)) {
- if (account.password!="") {
- if (account.cpassword!="") {
- if (account.password==account.cpassword) {
- mySqlCo(1);
- msg="Votre compte a bien été créé !",err=false;
- mySqlClient.query('INSERT INTO membres SET ?', { Mpseudo: account.pseudo, Mmail: account.mail, Mpassword: account.password }, function(erre,res){
- if (erre) {msg="Surcharge de la base de données ! Veuillez réessayer dans quelques secondes !",err=true;return;}
- });
- logs.hello.info('[SERVER] '+account.pseudo+' vient de s\'inscrire !');
- console.log('['+'SERVER'.rainbow+'] '+(account.pseudo).blue+' vient de s\'inscrire !'.green);
- } else {
- msg="Le mot de passe de confirmation ne correspond pas !",err=true;
- }
- } else {
- msg="Veuillez confirmer votre mot de passe !",err=true;
- }
- } else {
- msg="Veuillez indiquer un mot de passe !",err=true;
- }
- } else {
- msg="Veuillez indiquer un email valide !",err=true;
- }
- } else {
- msg="Veuillez indiquer un email !",err=true;
- }
- } else {
- msg="Veuillez indiquer un pseudo !",err=true;
- }
- client.emit("ServRinscription",{msg: msg, err: err});
- });
- client.on('Servconnexion', function(account) {
- var msg="Une erreur est survenue :(",err=true;
- if (account.pseudo!="") {
- if (account.password!="") {
- mySqlCo(1);
- var selectQuery = 'SELECT * FROM membres';
- mySqlClient.query(
- selectQuery,
- function select(error, results, fields) {
- if (error) {
- logs.hello.info(error);
- console.log(error);
- mySqlClient.end();
- return;
- }
- for (var i=0; i<results.length; i++) {
- if (results[i].Mpseudo==account.pseudo && results[i].Mpassword==account.password) {
- msg="Félicitation ! Vous êtes connectés !",err=false;
- }
- }
- if (err) {
- msg="Le pseudo ou/et le mot de passe ne correspendent pas !";
- } else {
- logs.hello.info('[SERVER] '+account.pseudo+' vient de se connecter !');
- console.log('['+'SERVER'.rainbow+'] '+(account.pseudo).blue+' vient de se connecter !'.green);
- }
- client.emit("ServRconnexion",{msg: msg, err: err, pseudo: account.pseudo});
- mySqlClient.end();
- }
- );
- } else {
- msg="Veuillez indiquer un mot de passe !",err=true;
- client.emit("ServRconnexion",{msg: msg, err: err, pseudo: account.pseudo});
- }
- } else {
- msg="Veuillez indiquer un pseudo !",err=true;
- client.emit("ServRconnexion",{msg: msg, err: err, pseudo: account.pseudo});
- }
- });
- client.on('ServDeconnexion', function(account) {
- logs.hello.info('[SERVER] '+account.pseudo+' vient de se déconnecter !');
- console.log('['+'SERVER'.rainbow+'] '+(account.pseudo).blue+' vient de se déconnecter !'.red);
- });
- client.on('GetAppInfo', function(app) {
- var info='';
- if (app.name=="chat") {
- info='<b>Nom :</b> chat<br /><b>Version :</b> 0.4.2<br /><b>Type :</b> Multi<br /><b>Créateur :</b> Flammrock<br /><b>Publication :</b> 24/02/2017<hr /><button type="button" onclick="document.location.replace(\'\'+document.location.origin+\'/application/'+app.name+'\');" class="btn btn-lg btn-primary">>>> Chat</button>';
- } else if (app.name=="cursor") {
- info='<b>Nom :</b> Cursor Game<br /><b>Version :</b> 0.0.5<br /><b>Type :</b> Jeu Multijoueur<br /><b>Créateur :</b> Flammrock<br /><b>Publication :</b> 25/02/2017<hr /><button type="button" onclick="document.location.replace(\'\'+document.location.origin+\'/application/'+app.name+'\');" class="btn btn-lg btn-primary">>>> Jouer à Cursor</button>';
- } else {
- info='<b>Nom :</b> <span style="#07f">Unknown</span><br /><b>Version :</b> <span style="#07f">Unknown</span><br /><b>Type :</b> <span style="#07f">Unknown</span><br /><b>Créateur :</b> <span style="#07f">Unknown</span><br /><b>Publication :</b> <span style="#07f">Unknown</span><hr /><button type="button" class="btn btn-lg btn-primary">>>> Chat</button>';
- }
- client.emit('RGetAppInfo', {name: app.name, info: info});
- });
- client.on('TchatConnect', function(get) {
- client.pseudo = get.pseudo;
- client.salon = get.salon;
- var password="Unknown";
- mySqlCo(1);
- var selectQuery = 'SELECT * FROM salon';
- mySqlClient.query(
- selectQuery,
- function select(error, results, fields) {
- mySqlClient.end();
- if (error) {
- logs.chat.info(error);
- console.log(error);
- return;
- }
- for (var i=0; i<results.length; i++) {
- if ((results[i].Sidsalon).toLowerCase()==(get.salon).toLowerCase()) {
- password=results[i].Spassword;
- }
- }
- if (password!=get.salonPassword) {
- client.salon = "undefined";
- client.passwordJoinSalon = "undefined";
- client.emit('RchangeU');
- } else {
- mySqlCo(1);
- var selectQueryy = 'SELECT * FROM salon_'+client.salon;
- mySqlClient.query(
- selectQueryy,
- function select(error, results, fields) {
- mySqlClient.end();
- if (error) {
- logs.chat.info(error);
- console.log(error);
- client.salon = "undefined";
- client.emit('RchangeU');
- } else {
- setTimeout(function(){
- for (var i=0; i<results.length; i++) {
- if (results[i].pseudo==client.pseudo) {
- client.emit('Rchat', {date:results[i].datetc, message:results[i].message, user:"vous", salon:client.salon});
- } else {
- client.emit('Rchat', {date:results[i].datetc, message:results[i].message, user:results[i].pseudo, salon:client.salon});
- }
- }
- var date_=NOW();
- logs.chat.info('[Tchat]['+client.salon+'] -'+client.pseudo+' vient de se connecter !');
- console.log('['+'Tchat'.magenta+']['+(client.salon).green+'] -'+date_+'- '+(client.pseudo).blue+' vient de se connecter !'.green);
- client.emit('RTchatConnect', {type:"vous", pseudo:client.pseudo, salon:client.salon});
- client.broadcast.emit('RTchatConnect', {type:"Client", pseudo:client.pseudo, salon:client.salon});
- },400);
- }
- }
- );
- }
- }
- );
- });
- client.on('TchatCheckSalon', function() {
- var data={},bdata=[],a=0;
- mySqlCo(1);
- var selectQuery = 'SELECT * FROM salon';
- mySqlClient.query(
- selectQuery,
- function select(error, results, fields) {
- if (error) {
- logs.chat.info(error);
- console.log(error);
- mySqlClient.end();
- return;
- }
- for (var i=0; i<results.length; i++) {
- if (typeof data[results[i].Snamesalon] == "undefined") {
- if (results[i].Spassword=="") {
- data[results[i].Snamesalon]=true;
- bdata[a]={name: results[i].Snamesalon, id: results[i].Sidsalon};
- a++;
- }
- }
- }
- client.emit('RTchatCheckSalon', bdata);
- mySqlClient.end();
- }
- );
- });
- client.on('TchatCreateSalon', function(get) {
- var date_=NOW();
- var IDsaloon="public_"+get.idsalon;
- var msg="Votre salon a été créé !",err=false;
- if (get.password!="") {IDsaloon="private_"+get.idsalon;}
- mySqlCo(1);
- var selectQuery = 'SELECT * FROM salon';
- mySqlClient.query(
- selectQuery,
- function select(error, results, fields) {
- if (error) {
- logs.chat.info(error);
- console.log(error);
- mySqlClient.end();
- return;
- }
- for (var i=0; i<results.length; i++) {
- if (results[i].Snamesalon == get.namesalon || results[i].Sidsalon == IDsaloon) {
- msg="Ce salon existe déjà !",err=true;
- }
- }
- if (!err) {
- logs.chat.info('[Tchat] - '+get.pseudo+ ' : vient de créer un salon de chat -> ('+IDsaloon+")");
- console.log('['+'Tchat'.magenta+'] -'+date_+"- "+(get.pseudo).blue + ' : vient de créer un salon de chat ('+IDsaloon+")");
- mySqlClient.query('INSERT INTO salon SET ?', { Spseudo: get.pseudo, Sidsalon: IDsaloon, Snamesalon: get.namesalon, Spassword: get.password }, function(err,res){});
- var tableDef = 'CREATE TABLE IF NOT EXISTS salon_'+IDsaloon+' ('+
- 'id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,'+
- 'message VARCHAR(300) NOT NULL,'+
- 'pseudo VARCHAR(16) NOT NULL,'+
- 'datetc VARCHAR(45) NOT NULL,'+
- 'PRIMARY KEY (id)'+
- ') ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1';
- mySqlClient.query(tableDef, function select(error, results) {
- if (error) logs.chat.info(error);
- });
- }
- client.emit('RTchatCreateSalon',{msg:msg,err:err});
- mySqlClient.end();
- }
- );
- });
- client.on('TchatJoinSalon', function(get) {
- var data={err:true,salon:"none",msg:'Une erreur est survenue !'};
- var ok=true;
- if (get.id!="") {
- if (get.password!="") {
- passwordJoinSalon=get.password;
- mySqlCo(1);
- var selectQuery = 'SELECT * FROM salon';
- mySqlClient.query(
- selectQuery,
- function select(error, results, fields) {
- if (error) {
- logs.chat.info(error);
- console.log(error);
- data.msg='Une erreur est survenue dans la base de donnée !';
- mySqlClient.end();
- return;
- }
- ok=false;
- for (var i=0; i<results.length; i++) {
- if (results[i].Sidsalon=='private_'+get.id && results[i].Spassword==get.password) {
- client.emit('RTchatJoinSalon', {err:false,salon:'private_'+get.id,msg:'success !'});
- }
- }
- mySqlClient.end();
- }
- );
- } else {
- data.msg='Veuillez indiquer le mot de passe du salon à rejoindre !',err=true;
- }
- } else {
- data.msg='Veuillez indiquer l\'id du salon à rejoindre !',err=true;
- }
- if (ok) {client.emit('RTchatJoinSalon', data)}
- });
- client.on('Tchat', function(get) {
- if (typeof client.pseudo != "undefined" && client.salon!="undefined") {
- var date_=NOW();
- client.emit('Rchat', {date: date_, message:get, user:"vous", salon: client.salon});
- client.broadcast.emit('Rchat', {date: date_, message:get, user:client.pseudo, salon: client.salon});
- logs.chat.info('[Tchat]['+client.salon+'] - '+client.pseudo+' : '+get);
- console.log('['+'Tchat'.magenta+']['+(client.salon).green+'] -'+date_+"- "+(client.pseudo).blue + ' : ' + get);
- mySqlCo(1);
- var salooon='salon_'+client.salon;
- mySqlClient.query('INSERT INTO '+salooon+' SET ?', { datetc: date_, message: get, pseudo: client.pseudo }, function(err,res){
- if (err) {
- logs.chat.info(err);
- console.log(err);
- }
- });
- }
- });
- client.on('disconnect', function(data) {
- if (typeof client.pseudo != "undefined" && client.salon!="undefined") {
- passwordJoinSalon="";
- var date_=NOW();
- client.emit('RTchatdisconnect', {type:"vous", pseudo:client.pseudo, salon:client.salon});
- client.broadcast.emit('RTchatdisconnect', {type:"Client", pseudo:client.pseudo, salon:client.salon});
- logs.chat.info('[Tchat]['+client.salon+'] - '+client.pseudo+' vient de se déconnecter !');
- console.log('['+'Tchat'.magenta+']['+(client.salon).green+'] -'+date_+'- '+(client.pseudo).blue+' vient de se déconnecter !'.red);
- client.pseudo="undefined";
- client.salon="undefined";
- }
- });
- client.on('mousemove', function (data) {
- client.broadcast.emit('moving', data);
- });
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement