Advertisement
Guest User

Untitled

a guest
Feb 25th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. process.title = 'Server Web http NodeJS';
  2. process.stdout.write('\033c');
  3.  
  4.  
  5.  
  6. var colors = require('colors');
  7. var log4js = require('log4js');
  8. log4js.configure('logConfig.json', { cwd: 'D:/testnode/log' });
  9. var express = require('express');
  10. var cookieParser = require('cookie-parser');
  11. var app = express();
  12. var server = require('http').createServer(app);
  13. server.listen(80);
  14. var io = require('socket.io')(server);
  15. var mysql = require('mysql');
  16. var cookiesFl = {
  17.   connect: false
  18. };
  19.  
  20. log4js.loadAppender('file');
  21.  
  22. var logs = {
  23.   hello: log4js.getLogger('hello'),
  24.   chat: log4js.getLogger('hello')
  25. }
  26.  
  27. logs.hello.info('Serveur lancé !');
  28.  
  29. app.use(cookieParser());
  30. app.set('view engine', 'ejs');
  31. app.use(express.static(__dirname + '/views'));
  32.  
  33. app.use(function (req, res, next) {
  34.   cookiesFl.connect = req.cookies.connect+"";
  35.   if (cookiesFl.connect!="undefined") {cookiesFl.connect=true} else {cookiesFl.connect=false}
  36.   next();
  37. });
  38.  
  39. var passwordJoinSalon="";
  40.  
  41. app.get('/', function(req, res) {
  42.   res.render('index.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  43. })
  44. .get('/anim', function(req, res) {
  45.   res.render('anim.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  46. })
  47. .get('/cursor', function(req, res) {
  48.   res.render('cursor.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  49. })
  50. .get('/application/:name', function(req, res) {
  51.   res.render(req.params.name+".ejs", {connect:cookiesFl.connect, pseudo:req.cookies.connect, salon:'none'});
  52. })
  53. .get('/application/chat/:salon', function(req, res) {
  54.   res.render("chats.ejs", {connect:cookiesFl.connect, pseudo:req.cookies.connect, salon:req.params.salon, password:passwordJoinSalon});
  55. })
  56. .get('/setcookie/:cookie/:info1', function(req, res) {
  57.   res.cookie(req.params.cookie ,req.params.info1).send('Cookie "'+req.params.cookie+'" is set');
  58. })
  59. .get('/delcookie/:cookie', function(req, res) {
  60.   res.clearCookie(req.params.cookie).send('Cookie "'+req.params.cookie+'" is del');
  61. })
  62. .use(function(req, res, next){
  63.   res.setHeader('Content-Type', 'text/plain');
  64.   res.send(404, 'Page introuvable !');
  65. });
  66.  
  67.  
  68. function mySqlCo(n) {
  69.   mySqlClient = mysql.createConnection({
  70.     host     : "localhost",
  71.     user     : "root",
  72.     password : "",
  73.     database : "flammrock"
  74.   });
  75.   mySqlClient.connect(function(err){
  76.     if(err){
  77.       if (n==0) {
  78.       console.log('Error connecting to Db');
  79.       logs.hello.info('Error connecting to Db');
  80.         console.log("Error conneion to Database..".red+"\n");
  81.       logs.hello.info('Error conneion to Database..');
  82.       }
  83.       return;
  84.     }
  85.     if (n==0) {
  86.       logs.hello.info('Connexion to Database is a success');
  87.       console.log("Connexion to Database is a "+"success".green+" !\n");
  88.     }
  89.   });
  90. }
  91. mySqlCo(0);
  92.  
  93.  
  94. var selectQuery = 'SELECT id FROM tchat';
  95. mySqlClient.query(
  96.   selectQuery,
  97.   function select(error, results, fields) {
  98.     if (error) {
  99.       console.log(error);
  100.       logs.hello.info(error);
  101.       mySqlClient.end();
  102.       return;
  103.     }
  104.     logs.hello.info('Table [tchat] : '+results.length+' messages');
  105.       console.log("Table".blue+" ["+"tchat".green+"] : "+(results.length+"").magenta+" message\n");
  106.     mySqlClient.end();
  107.   }
  108. );
  109.  
  110. var NOW = function() {
  111.   var dat = new Date();
  112.   var h = dat.getHours()+"";
  113.   var m = dat.getMinutes()+"";
  114.   var s = dat.getSeconds()+"";
  115.   if (s.length==1) {s="0"+s}
  116.   if (m.length==1) {m="0"+m}
  117.   if (h.length==1) {h="0"+h}
  118.   return h+","+m+","+s;
  119. }
  120. var validateEmail = function(email) {
  121.   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,}))$/;
  122.   return re.test(email);
  123. }
  124. function handler (request, response) {
  125.     request.addListener('end', function () {
  126.     fileServer.serve(request, response);
  127.   });
  128. }
  129.  
  130.  
  131.  
  132. io.on('connection', function (client) {
  133.   client.on('Servinscription', function(account) {
  134.     var msg="",err=false;
  135.     if (account.pseudo!="") {
  136.       if (account.mail!="") {
  137.         if (validateEmail(account.mail)) {
  138.           if (account.password!="") {
  139.             if (account.cpassword!="") {
  140.               if (account.password==account.cpassword) {
  141.                 mySqlCo(1);
  142.                 msg="Votre compte a bien été créé !",err=false;
  143.                 mySqlClient.query('INSERT INTO membres SET ?', { Mpseudo: account.pseudo, Mmail: account.mail, Mpassword: account.password }, function(erre,res){
  144.                   if (erre) {msg="Surcharge de la base de données ! Veuillez réessayer dans quelques secondes !",err=true;return;}
  145.                 });
  146.                 logs.hello.info('[SERVER] '+account.pseudo+' vient de s\'inscrire !');
  147.                 console.log('['+'SERVER'.rainbow+'] '+(account.pseudo).blue+' vient de s\'inscrire !'.green);
  148.               } else {
  149.                 msg="Le mot de passe de confirmation ne correspond pas !",err=true;
  150.               }
  151.             } else {
  152.               msg="Veuillez confirmer votre mot de passe !",err=true;
  153.             }
  154.           } else {
  155.             msg="Veuillez indiquer un mot de passe !",err=true;
  156.           }
  157.         } else {
  158.           msg="Veuillez indiquer un email valide !",err=true;
  159.         }
  160.       } else {
  161.         msg="Veuillez indiquer un email !",err=true;
  162.       }
  163.     } else {
  164.       msg="Veuillez indiquer un pseudo !",err=true;
  165.     }
  166.     client.emit("ServRinscription",{msg: msg, err: err});
  167.   });
  168.   client.on('Servconnexion', function(account) {
  169.     var msg="Une erreur est survenue :(",err=true;
  170.     if (account.pseudo!="") {
  171.       if (account.password!="") {
  172.         mySqlCo(1);
  173.           var selectQuery = 'SELECT * FROM membres';
  174.           mySqlClient.query(
  175.             selectQuery,
  176.             function select(error, results, fields) {
  177.               if (error) {
  178.                 logs.hello.info(error);
  179.                 console.log(error);
  180.                 mySqlClient.end();
  181.                 return;
  182.               }
  183.                   for (var i=0; i<results.length; i++) {
  184.                     if (results[i].Mpseudo==account.pseudo && results[i].Mpassword==account.password) {
  185.                   msg="Félicitation ! Vous êtes connectés !",err=false;
  186.                     }
  187.                   }
  188.               if (err) {
  189.                 msg="Le pseudo ou/et le mot de passe ne correspendent pas !";
  190.               } else {
  191.                 logs.hello.info('[SERVER] '+account.pseudo+' vient de se connecter !');
  192.                 console.log('['+'SERVER'.rainbow+'] '+(account.pseudo).blue+' vient de se connecter !'.green);
  193.               }
  194.               client.emit("ServRconnexion",{msg: msg, err: err, pseudo: account.pseudo});
  195.               mySqlClient.end();
  196.             }
  197.           );
  198.       } else {
  199.         msg="Veuillez indiquer un mot de passe !",err=true;
  200.         client.emit("ServRconnexion",{msg: msg, err: err, pseudo: account.pseudo});
  201.       }
  202.     } else {
  203.       msg="Veuillez indiquer un pseudo !",err=true;
  204.       client.emit("ServRconnexion",{msg: msg, err: err, pseudo: account.pseudo});
  205.     }
  206.   });
  207.   client.on('ServDeconnexion', function(account) {
  208.     logs.hello.info('[SERVER] '+account.pseudo+' vient de se déconnecter !');
  209.     console.log('['+'SERVER'.rainbow+'] '+(account.pseudo).blue+' vient de se déconnecter !'.red);
  210.   });
  211.  
  212.   client.on('GetAppInfo', function(app) {
  213.     var info='';
  214.     if (app.name=="chat") {
  215.       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>';
  216.     } else if (app.name=="cursor") {
  217.       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>';
  218.     } else {
  219.       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>';
  220.     }
  221.     client.emit('RGetAppInfo', {name: app.name, info: info});
  222.   });
  223.  
  224.   client.on('TchatConnect', function(get) {
  225.       client.pseudo = get.pseudo;
  226.       client.salon = get.salon;
  227.       var password="Unknown";
  228.       mySqlCo(1);
  229.       var selectQuery = 'SELECT * FROM salon';
  230.       mySqlClient.query(
  231.         selectQuery,
  232.         function select(error, results, fields) {
  233.           mySqlClient.end();
  234.           if (error) {
  235.             logs.chat.info(error);
  236.             console.log(error);
  237.             return;
  238.           }
  239.           for (var i=0; i<results.length; i++) {
  240.             if ((results[i].Sidsalon).toLowerCase()==(get.salon).toLowerCase()) {
  241.               password=results[i].Spassword;
  242.             }
  243.           }
  244.           if (password!=get.salonPassword) {
  245.             client.salon = "undefined";
  246.             client.passwordJoinSalon = "undefined";
  247.             client.emit('RchangeU');
  248.           } else {
  249.             mySqlCo(1);
  250.             var selectQueryy = 'SELECT * FROM salon_'+client.salon;
  251.             mySqlClient.query(
  252.               selectQueryy,
  253.               function select(error, results, fields) {
  254.                 mySqlClient.end();
  255.                 if (error) {
  256.                   logs.chat.info(error);
  257.                   console.log(error);
  258.                   client.salon = "undefined";
  259.                   client.emit('RchangeU');
  260.                 } else {
  261.                   setTimeout(function(){
  262.                     for (var i=0; i<results.length; i++) {
  263.                       if (results[i].pseudo==client.pseudo) {
  264.                         client.emit('Rchat', {date:results[i].datetc, message:results[i].message, user:"vous", salon:client.salon});
  265.                        } else {
  266.                         client.emit('Rchat', {date:results[i].datetc, message:results[i].message, user:results[i].pseudo, salon:client.salon});
  267.                       }
  268.                     }
  269.                     var date_=NOW();
  270.                     logs.chat.info('[Tchat]['+client.salon+'] -'+client.pseudo+' vient de se connecter !');
  271.                     console.log('['+'Tchat'.magenta+']['+(client.salon).green+'] -'+date_+'- '+(client.pseudo).blue+' vient de se connecter !'.green);
  272.                     client.emit('RTchatConnect', {type:"vous", pseudo:client.pseudo, salon:client.salon});
  273.                     client.broadcast.emit('RTchatConnect', {type:"Client", pseudo:client.pseudo, salon:client.salon});
  274.                   },400);
  275.                 }
  276.               }
  277.             );
  278.           }
  279.         }
  280.       );
  281.     });
  282.   client.on('TchatCheckSalon', function() {
  283.       var data={},bdata=[],a=0;
  284.       mySqlCo(1);
  285.       var selectQuery = 'SELECT * FROM salon';
  286.       mySqlClient.query(
  287.         selectQuery,
  288.         function select(error, results, fields) {
  289.           if (error) {
  290.             logs.chat.info(error);
  291.             console.log(error);
  292.             mySqlClient.end();
  293.             return;
  294.           }
  295.           for (var i=0; i<results.length; i++) {
  296.             if (typeof data[results[i].Snamesalon] == "undefined") {
  297.               if (results[i].Spassword=="") {
  298.                 data[results[i].Snamesalon]=true;
  299.                 bdata[a]={name: results[i].Snamesalon, id: results[i].Sidsalon};
  300.                 a++;
  301.               }
  302.             }
  303.             }
  304.           client.emit('RTchatCheckSalon', bdata);
  305.           mySqlClient.end();
  306.         }
  307.       );
  308.   });
  309.   client.on('TchatCreateSalon', function(get) {
  310.     var date_=NOW();
  311.     var IDsaloon="public_"+get.idsalon;
  312.     var msg="Votre salon a été créé !",err=false;
  313.     if (get.password!="") {IDsaloon="private_"+get.idsalon;}
  314.     mySqlCo(1);
  315.     var selectQuery = 'SELECT * FROM salon';
  316.     mySqlClient.query(
  317.       selectQuery,
  318.       function select(error, results, fields) {
  319.         if (error) {
  320.           logs.chat.info(error);
  321.           console.log(error);
  322.           mySqlClient.end();
  323.           return;
  324.         }
  325.         for (var i=0; i<results.length; i++) {
  326.           if (results[i].Snamesalon == get.namesalon || results[i].Sidsalon == IDsaloon) {
  327.             msg="Ce salon existe déjà !",err=true;
  328.           }
  329.         }
  330.         if (!err) {
  331.           logs.chat.info('[Tchat] - '+get.pseudo+ ' : vient de créer un salon de chat -> ('+IDsaloon+")");
  332.           console.log('['+'Tchat'.magenta+'] -'+date_+"- "+(get.pseudo).blue + ' : vient de créer un salon de chat ('+IDsaloon+")");
  333.           mySqlClient.query('INSERT INTO salon SET ?', { Spseudo: get.pseudo, Sidsalon: IDsaloon, Snamesalon: get.namesalon, Spassword: get.password }, function(err,res){});
  334.           var tableDef = 'CREATE TABLE IF NOT EXISTS salon_'+IDsaloon+' ('+
  335.                             'id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,'+
  336.                             'message VARCHAR(300) NOT NULL,'+
  337.                             'pseudo VARCHAR(16) NOT NULL,'+
  338.                             'datetc VARCHAR(45) NOT NULL,'+
  339.                             'PRIMARY KEY (id)'+
  340.                          ') ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1';
  341.           mySqlClient.query(tableDef, function select(error, results) {
  342.             if (error) logs.chat.info(error);
  343.           });
  344.         }
  345.         client.emit('RTchatCreateSalon',{msg:msg,err:err});
  346.         mySqlClient.end();
  347.       }
  348.     );
  349.  
  350.  
  351.  
  352.  
  353.   });
  354.   client.on('TchatJoinSalon', function(get) {
  355.     var data={err:true,salon:"none",msg:'Une erreur est survenue !'};
  356.     var ok=true;
  357.     if (get.id!="") {
  358.       if (get.password!="") {
  359.         passwordJoinSalon=get.password;
  360.         mySqlCo(1);
  361.         var selectQuery = 'SELECT * FROM salon';
  362.         mySqlClient.query(
  363.           selectQuery,
  364.           function select(error, results, fields) {
  365.             if (error) {
  366.               logs.chat.info(error);
  367.               console.log(error);
  368.               data.msg='Une erreur est survenue dans la base de donnée !';
  369.               mySqlClient.end();
  370.               return;
  371.             }
  372.             ok=false;
  373.             for (var i=0; i<results.length; i++) {
  374.               if (results[i].Sidsalon=='private_'+get.id && results[i].Spassword==get.password) {
  375.                 client.emit('RTchatJoinSalon', {err:false,salon:'private_'+get.id,msg:'success !'});
  376.               }
  377.                 }
  378.             mySqlClient.end();
  379.           }
  380.         );
  381.       } else {
  382.         data.msg='Veuillez indiquer le mot de passe du salon à rejoindre !',err=true;
  383.       }
  384.     } else {
  385.       data.msg='Veuillez indiquer l\'id du salon à rejoindre !',err=true;
  386.     }
  387.     if (ok) {client.emit('RTchatJoinSalon', data)}
  388.   });
  389.   client.on('Tchat', function(get) {
  390.       if (typeof client.pseudo != "undefined" && client.salon!="undefined") {
  391.          var date_=NOW();
  392.        client.emit('Rchat', {date: date_, message:get, user:"vous", salon: client.salon});
  393.        client.broadcast.emit('Rchat', {date: date_, message:get, user:client.pseudo, salon: client.salon});
  394.      logs.chat.info('[Tchat]['+client.salon+'] - '+client.pseudo+' : '+get);
  395.        console.log('['+'Tchat'.magenta+']['+(client.salon).green+'] -'+date_+"- "+(client.pseudo).blue + ' : ' + get);
  396.          mySqlCo(1);
  397.      var salooon='salon_'+client.salon;
  398.      mySqlClient.query('INSERT INTO '+salooon+' SET ?', { datetc: date_, message: get, pseudo: client.pseudo }, function(err,res){
  399.        if (err) {
  400.          logs.chat.info(err);
  401.          console.log(err);
  402.        }
  403.      });
  404.      }
  405.     });
  406.  
  407.  
  408.   client.on('disconnect', function(data) {
  409.     if (typeof client.pseudo != "undefined" && client.salon!="undefined") {
  410.       passwordJoinSalon="";
  411.       var date_=NOW();
  412.         client.emit('RTchatdisconnect', {type:"vous", pseudo:client.pseudo, salon:client.salon});
  413.         client.broadcast.emit('RTchatdisconnect', {type:"Client", pseudo:client.pseudo, salon:client.salon});
  414.       logs.chat.info('[Tchat]['+client.salon+'] - '+client.pseudo+' vient de se déconnecter !');
  415.       console.log('['+'Tchat'.magenta+']['+(client.salon).green+'] -'+date_+'- '+(client.pseudo).blue+' vient de se déconnecter !'.red);
  416.       client.pseudo="undefined";
  417.       client.salon="undefined";
  418.     }
  419.   });
  420.  
  421.   client.on('mousemove', function (data) {
  422.         client.broadcast.emit('moving', data);
  423.     });
  424. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement