Advertisement
Guest User

Untitled

a guest
May 14th, 2017
661
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. var fs = require('fs');
  6. var colors = require('colors');
  7. var exec = require('child_process').exec;
  8. var ent = require('ent');
  9. var log4js = require('log4js');
  10. log4js.configure('logConfig.json', { cwd: 'D:/testnode' });
  11. var subdomain = require('express-subdomain');
  12. var express = require('express');
  13. var cookieParser = require('cookie-parser');
  14. var app = express();
  15. var server = require('http').createServer(app);
  16. server.listen(80);
  17. var io = require('socket.io')(server);
  18. var mysql = require('mysql');
  19. var JSFtp = require("jsftp");
  20. var favicon = require('serve-favicon');
  21. var multer = require('multer');
  22. var storage =   multer.diskStorage({
  23.   destination: function (req, file, callback) {
  24.     callback(null, './views');
  25.   },
  26.   filename: function (req, file, callback) {
  27.     callback(null, 'cursor.png');
  28.   }
  29. });
  30. var upload = multer({ storage : storage}).single('AppCursor');
  31. var cookiesFl = {
  32.   connect: false
  33. };
  34.  
  35.  
  36. var nodemailer = require('nodemailer');
  37. var smtpTransport = require('nodemailer-smtp-transport');
  38. var transporter = nodemailer.createTransport(smtpTransport({
  39.    host: 'localhost',
  40.    port: 25,
  41.    secure: false,
  42.    auth: {
  43.        user: 'admin@flammrock.ga',
  44.        pass: 'salut'
  45.    },
  46.    tls: {
  47.         rejectUnauthorized: false
  48.     }
  49. }));
  50.  
  51.  
  52. var Wforum = express.Router();
  53. var Wmail = express.Router();
  54. var Wfiche = express.Router();
  55. var Wglacerock10 = express.Router();
  56. var Wraiseit = express.Router();
  57.  
  58. app.use(subdomain('forum', Wforum));
  59. app.use(subdomain('mail', Wmail));
  60. app.use(subdomain('fiche', Wfiche));
  61. app.use(subdomain('glacerock10', Wglacerock10));
  62. app.use(subdomain('raiseit', Wraiseit));
  63. app.listen(3000);
  64.  
  65.  
  66.  
  67. log4js.loadAppender('file');
  68.  
  69. var logs = {
  70.   hello: log4js.getLogger('hello'),
  71.   chat: log4js.getLogger('hello'),
  72.   admin: log4js.getLogger('admin')
  73. }
  74.  
  75. logs.hello.info('Serveur lancé !');
  76. logs.admin.info('Serveur lancé !');
  77.  
  78. app.use(cookieParser());
  79. app.set('view engine', 'ejs');
  80. app.use(favicon('views/favicon.ico'));
  81. app.use(express.static(__dirname + '/views'));
  82.  
  83. //router.set('view engine', 'ejs');
  84. Wforum.use(express.static(__dirname + '/views'));
  85. Wforum.use(cookieParser());
  86. Wmail.use(express.static(__dirname + '/views'));
  87. Wmail.use(cookieParser());
  88. Wfiche.use(express.static(__dirname + '/fiche'));
  89. Wfiche.use(cookieParser());
  90. Wglacerock10.use(express.static(__dirname + '/ftp/glacerock10'));
  91. Wglacerock10.use(cookieParser());
  92. Wraiseit.use(express.static(__dirname + '/views'));
  93. Wraiseit.use(cookieParser());
  94.  
  95. app.use(function (req, res, next) {
  96.   cookiesFl.connect = req.cookies.connect+"";
  97.   if (cookiesFl.connect!="undefined") {cookiesFl.connect=true} else {cookiesFl.connect=false}
  98.   next();
  99. });
  100. Wforum.use(function (req, res, next) {
  101.   cookiesFl.connect = req.cookies.connect+"";
  102.   if (cookiesFl.connect!="undefined") {cookiesFl.connect=true} else {cookiesFl.connect=false}
  103.   next();
  104. });
  105. Wmail.use(function (req, res, next) {
  106.   cookiesFl.connect = req.cookies.connect+"";
  107.   if (cookiesFl.connect!="undefined") {cookiesFl.connect=true} else {cookiesFl.connect=false}
  108.   next();
  109. });
  110.  
  111. var passwordJoinSalon="",
  112.     ctx="nul";
  113.  
  114. var salonUserconnect = {};
  115.  
  116. Wraiseit.get('/', function(req, res) {
  117.     res.render('ftp/raiseit/index.ejs', {page:'/'});
  118. })
  119. .get('/:page', function(req, res) {
  120.     res.render('ftp/raiseit/index.ejs', {page:'/'+req.params.page});
  121. });
  122. Wglacerock10.get('/', function(req, res) {
  123.     res.render('ftp/glacerock10/index.ejs');
  124. })
  125. .get('/:page', function(req, res) {
  126.     res.render(req.params.page+'.ejs');
  127. });
  128. Wforum.get('/', function(req, res) {
  129.     res.render('forum_acc.ejs',  {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  130. })
  131. .get('/setcookie/:cookie/:info1', function(req, res) {
  132.   res.cookie(req.params.cookie ,req.params.info1).send('Cookie "'+req.params.cookie+'" is set');
  133. })
  134. .get('/delcookie/:cookie', function(req, res) {
  135.   res.clearCookie(req.params.cookie).send('Cookie "'+req.params.cookie+'" is del');
  136. });
  137. Wmail.get('/', function(req, res) {
  138.     res.render('mail.ejs',  {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  139. })
  140. .get('/setcookie/:cookie/:info1', function(req, res) {
  141.   res.cookie(req.params.cookie ,req.params.info1).send('Cookie "'+req.params.cookie+'" is set');
  142. })
  143. .get('/delcookie/:cookie', function(req, res) {
  144.   res.clearCookie(req.params.cookie).send('Cookie "'+req.params.cookie+'" is del');
  145. });
  146.  
  147.  
  148.  
  149.  
  150. Wfiche.get('/', function(req, res) {
  151.     res.render('fiche/fiche.ejs',  {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  152. })
  153. .get('/setcookie/:cookie/:info1', function(req, res) {
  154.   res.cookie(req.params.cookie ,req.params.info1).send('Cookie "'+req.params.cookie+'" is set');
  155. })
  156. .get('/delcookie/:cookie', function(req, res) {
  157.   res.clearCookie(req.params.cookie).send('Cookie "'+req.params.cookie+'" is del');
  158. });
  159.  
  160.  
  161. app.get('/', function(req, res) {
  162.   res.render('index.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  163. })
  164. .post('/uploadCursor',function(req,res){
  165.     upload(req,res,function(err) {
  166.         if(err) {
  167.             console.log(err);
  168.             return res.end("Un erreur est survenue, votre image n'a pas pu être téléverser sur nos serveurs pour une quelconque raison");
  169.         }
  170.         res.writeHead(302, {
  171.           'Location': 'http://flammrock.ga/application/cursor'
  172.         });
  173.         res.end();
  174.     });
  175. })
  176. app.get('/profil', function(req, res) {
  177.   res.render('profil.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  178. })
  179. app.get('/exp', function(req, res) {
  180.   if (typeof req.cookies.connect=='undefined') {
  181.     res.render('cur.ejs', {connect:cookiesFl.connect, pseudo:'Undefined Player'});
  182.   } else {
  183.     res.render('exp.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  184.   }
  185. })
  186. .get('/anim', function(req, res) {
  187.   res.render('anim.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  188. })
  189. .get('/cursor', function(req, res) {
  190.   res.render('cursor.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
  191. })
  192. .get('/isup/:url', function(req, res) {
  193.   res.render('isup.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect,url:req.params.url});
  194. })
  195. .get('/isup', function(req, res) {
  196.   res.render('isup.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect,url:'undefined'});
  197. })
  198. .get('/img/:img', function(req, res) {
  199.   res.render('img.ejs', {img: req.params.img});
  200. })
  201. .get('/application/:name', function(req, res) {
  202.   passwordJoinSalon="";
  203.   res.render(req.params.name+".ejs", {connect:cookiesFl.connect, pseudo:req.cookies.connect, salon:'none', password:''});
  204. })
  205. .get('/application/chat/:salon', function(req, res) {
  206.   res.render("chats.ejs", {connect:cookiesFl.connect, pseudo:req.cookies.connect, salon:req.params.salon, password:passwordJoinSalon});
  207. })
  208. .get('/setcookie/:cookie/:info1', function(req, res) {
  209.   res.cookie(req.params.cookie ,req.params.info1).send('Cookie "'+req.params.cookie+'" is set');
  210. })
  211. .get('/delcookie/:cookie', function(req, res) {
  212.   res.clearCookie(req.params.cookie).send('Cookie "'+req.params.cookie+'" is del');
  213. })
  214. .use(function(req, res, next){
  215.   res.setHeader('Content-Type', 'text/plain');
  216.   res.send(404, 'Page introuvable !');
  217. });
  218.  
  219.  
  220. function mySqlCo(n,database) {
  221.   mySqlClient = mysql.createConnection({
  222.     host     : "localhost",
  223.     user     : "root",
  224.     password : "salut",
  225.     database : database
  226.   });
  227.   mySqlClient.connect(function(err){
  228.     if(err){
  229.       if (n==0) {
  230.         console.log('Error connecting to Db');
  231.         logs.hello.info('Error connecting to Db');
  232.         console.log("Error conneion to Database..".red+"\n");
  233.         logs.hello.info('Error conneion to Database..');
  234.        }
  235.        return;
  236.     }
  237.     if (n==0) {
  238.       logs.hello.info('Connexion to Database is a success');
  239.       console.log("Connexion to Database is a "+"success".green+" !\n");
  240.     }
  241.   });
  242. }
  243. mySqlCo(0,"flammrock");
  244.  
  245.  
  246. var NOW = function() {
  247.   var dat = new Date();
  248.   var h = dat.getHours()+"";
  249.   var m = dat.getMinutes()+"";
  250.   var s = dat.getSeconds()+"";
  251.   if (s.length==1) {s="0"+s}
  252.   if (m.length==1) {m="0"+m}
  253.   if (h.length==1) {h="0"+h}
  254.   return h+","+m+","+s;
  255. }
  256. var savemasscursor=false;
  257. var validateEmail = function(email) {
  258.   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,}))$/;
  259.   return re.test(email);
  260. }
  261. function handler (request, response) {
  262.     request.addListener('end', function () {
  263.     fileServer.serve(request, response);
  264.   });
  265. }
  266. function checkUrlExists(Url, callback) {
  267.   var http = require('http'),
  268.       url = require('url');
  269.   var options = {
  270.       method: 'HEAD',
  271.       host: url.parse(Url).host,
  272.       port: 80,
  273.       path: url.parse(Url).pathname
  274.   };
  275.   var req = http.request(options, function (r) {
  276.       callback( r.statusCode== 200);});
  277.   req.end();
  278. }
  279. var rmdir = function(dir) {
  280.     var list = fs.readdirSync(dir);
  281.     for(var i = 0; i < list.length; i++) {
  282.         var filename = path.join(dir, list[i]);
  283.         var stat = fs.statSync(filename);
  284.         if(filename == "." || filename == "..") {
  285.         } else if(stat.isDirectory()) {
  286.             rmdir(filename);
  287.         } else {
  288.             fs.unlinkSync(filename);
  289.         }
  290.     }
  291.     fs.rmdirSync(dir);
  292. };
  293.  
  294.  
  295. var WebMAIL = {
  296.   connect: function() {mySqlCo(1,"mail")},
  297.   createAcount: function(pseudo,password,callback) {
  298.     var content =
  299.     'Dim obApp\n'+
  300.      'Set obApp = CreateObject("hMailServer.Application")\n'+
  301.      'Call obApp.Authenticate("Administrator", "salut")\n'+
  302.      'Dim obDomain\n'+
  303.      'Set obDomain = obApp.Domains.ItemByName("flammrock.ga")\n'+
  304.      'Dim obAccount\n'+
  305.      'Set obAccount = obDomain.Accounts.Add\n'+
  306.      'obAccount.Address = "'+pseudo+'@flammrock.ga"\n'+
  307.      'obAccount.Password = "'+password+'"\n'+
  308.      'obAccount.Active = True\n'+
  309.      'obAccount.MaxSize = 0\n'+
  310.      'obAccount.Save';
  311.     fs.writeFile('mail/createUser.vbs',content,function (err){
  312.       if (err) {callback(err);return;}
  313.       exec('cscript.exe /nologo mail/createUser.vbs', function(){
  314.         callback(err);
  315.       });
  316.     });
  317.   },
  318.   delAccount: function(data) {
  319.     var content =
  320.     'Dim obApp\n'+
  321.      'Set obApp = CreateObject("hMailServer.Application")\n'+
  322.      'Call obApp.Authenticate("Administrator", "salut")\n'+
  323.      'Dim obDomain\n'+
  324.      'Set obDomain = obApp.Domains.ItemByName("flammrock.ga")\n'+
  325.      'Dim obAccount\n'+
  326.      'Set obAccount = obDomain.Accounts.ItemByAddress('+data.pseudoRe+'"@flammrock.ga")\n'+
  327.      'obDomain.Accounts.DeleteByDBID obAccount.ID';
  328.    fs.writeFile('mail/delUser.vbs',content,function (err){
  329.      if (err) {return;}
  330.      exec('cscript.exe /nologo mail/delUser.vbs', function(){});
  331.    });
  332.   },
  333.   listAllmsg: function(mail,callback) {
  334.     mySqlCo(1,"mail");
  335.     var tmp="";
  336.     var selectQuery = 'SELECT * FROM hm_messages';
  337.     var to="";
  338.     var subject="";
  339.     mySqlClient.query(
  340.       selectQuery,
  341.       function select(error, results, fields) {
  342.         mySqlClient.end();
  343.         if (error) {
  344.           logs.hello.info(error);
  345.           console.log(error);
  346.           return;
  347.         }
  348.         var a=0,b=0;
  349.         var data=[];
  350.         for (var i=0; i<results.length; i++) {
  351.           (function(index){
  352.             fs.stat("mail/Data/flammrock.ga/"+mail+"/"+(results[i].messagefilename).substring(1,3)+"/"+results[i].messagefilename, function(err, stat) {
  353.               if(err+"" == "null") {
  354.                 var msgtextplainbool=false,
  355.                     msgtexthtmlbool=false;
  356.                 var msgtextplain="",
  357.                     msgtexthtml="";
  358.                 tmp=fs.readFileSync("mail/Data/flammrock.ga/"+mail+"/"+(results[index].messagefilename).substring(1,3)+"/"+results[index].messagefilename, "UTF-8");
  359.                 var reg=new RegExp("[\n]+", "g");
  360.                 tmp=tmp.split(reg);
  361.                 for (var b = 0; b < tmp.length; b++) {
  362.                   if ((tmp[b].substring(0,3)).toLowerCase()=='to:') {
  363.                     to=tmp[b].substring(4,tmp[b].length-1)+"";
  364.                   }
  365.                   if ((tmp[b].substring(0,8)).toLowerCase()=='subject:') {
  366.                     subject=tmp[b].substring(9,tmp[b].length-1)+"";
  367.                   }
  368.                   if ((tmp[b].substring(0,24)).toLowerCase()=='content-type: text/plain') {
  369.                     msgtextplainbool=true;
  370.                   }
  371.                   if ((tmp[b].substring(0,23)).toLowerCase()=='content-type: text/html') {
  372.                     msgtexthtmlbool=true;
  373.                     msgtextplainbool=false;
  374.                   }
  375.                   if (msgtextplainbool) {
  376.                     msgtextplain+="\n"+tmp[b];
  377.                   }
  378.                   if (msgtexthtmlbool) {
  379.                     msgtexthtml+="\n"+tmp[b];
  380.                   }
  381.                 }
  382.                 if ((mail+"@flammrock.ga").toLowerCase()==to.toLowerCase()) {
  383.                   data[a]={name:results[index].messagefilename,from:results[index].messagefrom,to:to,subject:subject,msgText:msgtextplain, msghtml:msgtexthtml,idaccount:results[index].messageaccountid,date:results[index].messagecreatetime};
  384.                     callback(data);
  385.                   a++;
  386.                 }
  387.               }
  388.             });
  389.             b++;
  390.           })(i);
  391.         }
  392.       }
  393.     );
  394.   },
  395.   sendMail: function(from,to,subject,message,callback) {
  396.     transporter.sendMail({
  397.        from: from+'@flammrock.ga',
  398.        to: to,
  399.        subject: subject,
  400.        html: message,
  401.        text: message
  402.     }, function(err){
  403.       transporter.close();
  404.       if (err) {
  405.         console.log(err);
  406.         logs.hello.info(err);
  407.         callback();
  408.       }
  409.     });
  410.   }
  411. };
  412. var WebFTP = {
  413.   createAccount: function(account,callback) {
  414.     var ftpUserAccount=
  415.     '\r\n['+account.pseudoRe+']\r\n'+
  416.     'Password='+MD5(account.password)+'\r\n'+
  417.     'UserDisable=0\r\n'+
  418.     'VirtualDir=1\r\n'+
  419.     'Time-Out=0\r\n'+
  420.     'MaxSpeed=0\r\n'+
  421.     'MaxUser=0\r\n'+
  422.     'MaxUserIP=0\r\n'+
  423.     'EnterMessage=\r\n'+
  424.     'ExitMessage=\r\n'+
  425.     'HomePath=D:\\testnode\\ftp\\'+account.pseudoRe+'\\\r\n'+
  426.     'Dir0=D:\\testnode\\ftp\\'+account.pseudoRe+'\\|DU_EMRY_S__|';
  427.     fs.appendFile('ftp/TYPSoft FTP Server/users.ini', ftpUserAccount, function (err) {
  428.       fs.mkdir('ftp/'+account.pseudoRe,function(e){
  429.         callback(err);
  430.       });
  431.     });
  432.   },
  433.   delAccount: function(data) {
  434.     var allAccount=fs.readFileSync('ftp/TYPSoft FTP Server/users.ini').toString();
  435.     var content="";
  436.     var reg=new RegExp("[\n]+", "g");
  437.     allAccount=allAccount.split(reg);
  438.     var write=true;
  439.     for (var i = 0; i < allAccount.length; i++) {
  440.       if ("["+data.pseudoRe+"]"==allAccount[i].substring(0,allAccount[i].length-1)) {
  441.         write=false;
  442.       }
  443.       if (write) {
  444.         content+=allAccount[i]+"\n";
  445.       } else {
  446.         if ("["+data.pseudoRe+"]"!=allAccount[i].substring(0,allAccount[i].length-1)) {
  447.           if ("["==allAccount[i].substring(0,1)) {
  448.             write=true;
  449.             content+=allAccount[i]+"\n";
  450.           }
  451.         }
  452.       }
  453.     }
  454.     fs.writeFile('ftp/TYPSoft FTP Server/users.ini',content,function (err){
  455.       if (err) {return;}
  456.       if (fs.existsSync("ftp/"+data.pseudoRe)) {
  457.         rmdir("ftp/"+data.pseudoRe);
  458.       }
  459.     });
  460.   }
  461. };
  462.  
  463. var MD5 = function (string) {
  464.     function RotateLeft(lValue, iShiftBits) {
  465.         return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));
  466.     }
  467.     function AddUnsigned(lX,lY) {
  468.         var lX4,lY4,lX8,lY8,lResult;
  469.         lX8 = (lX & 0x80000000);
  470.         lY8 = (lY & 0x80000000);
  471.         lX4 = (lX & 0x40000000);
  472.         lY4 = (lY & 0x40000000);
  473.         lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);
  474.         if (lX4 & lY4) {
  475.             return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
  476.         }
  477.         if (lX4 | lY4) {
  478.             if (lResult & 0x40000000) {
  479.                 return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);
  480.             } else {
  481.                 return (lResult ^ 0x40000000 ^ lX8 ^ lY8);
  482.             }
  483.         } else {
  484.             return (lResult ^ lX8 ^ lY8);
  485.         }
  486.     }
  487.     function F(x,y,z) { return (x & y) | ((~x) & z); }
  488.     function G(x,y,z) { return (x & z) | (y & (~z)); }
  489.     function H(x,y,z) { return (x ^ y ^ z); }
  490.     function I(x,y,z) { return (y ^ (x | (~z))); }
  491.     function FF(a,b,c,d,x,s,ac) {
  492.         a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
  493.         return AddUnsigned(RotateLeft(a, s), b);
  494.     };
  495.     function GG(a,b,c,d,x,s,ac) {
  496.         a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
  497.         return AddUnsigned(RotateLeft(a, s), b);
  498.     };
  499.     function HH(a,b,c,d,x,s,ac) {
  500.         a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
  501.         return AddUnsigned(RotateLeft(a, s), b);
  502.     };
  503.     function II(a,b,c,d,x,s,ac) {
  504.         a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
  505.         return AddUnsigned(RotateLeft(a, s), b);
  506.     };
  507.     function ConvertToWordArray(string) {
  508.         var lWordCount;
  509.         var lMessageLength = string.length;
  510.         var lNumberOfWords_temp1=lMessageLength + 8;
  511.         var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;
  512.         var lNumberOfWords = (lNumberOfWords_temp2+1)*16;
  513.         var lWordArray=Array(lNumberOfWords-1);
  514.         var lBytePosition = 0;
  515.         var lByteCount = 0;
  516.         while ( lByteCount < lMessageLength ) {
  517.             lWordCount = (lByteCount-(lByteCount % 4))/4;
  518.             lBytePosition = (lByteCount % 4)*8;
  519.             lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));
  520.             lByteCount++;
  521.         }
  522.         lWordCount = (lByteCount-(lByteCount % 4))/4;
  523.         lBytePosition = (lByteCount % 4)*8;
  524.         lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);
  525.         lWordArray[lNumberOfWords-2] = lMessageLength<<3;
  526.         lWordArray[lNumberOfWords-1] = lMessageLength>>>29;
  527.         return lWordArray;
  528.     };
  529.     function WordToHex(lValue) {
  530.         var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;
  531.         for (lCount = 0;lCount<=3;lCount++) {
  532.             lByte = (lValue>>>(lCount*8)) & 255;
  533.             WordToHexValue_temp = "0" + lByte.toString(16);
  534.             WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);
  535.         }
  536.         return WordToHexValue;
  537.     };
  538.     function Utf8Encode(string) {
  539.         string = string.replace(/\r\n/g,"\n");
  540.         var utftext = "";
  541.  
  542.         for (var n = 0; n < string.length; n++) {
  543.  
  544.             var c = string.charCodeAt(n);
  545.  
  546.             if (c < 128) {
  547.                 utftext += String.fromCharCode(c);
  548.             }
  549.             else if((c > 127) && (c < 2048)) {
  550.                 utftext += String.fromCharCode((c >> 6) | 192);
  551.                 utftext += String.fromCharCode((c & 63) | 128);
  552.             }
  553.             else {
  554.                 utftext += String.fromCharCode((c >> 12) | 224);
  555.                 utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  556.                 utftext += String.fromCharCode((c & 63) | 128);
  557.             }
  558.  
  559.         }
  560.  
  561.         return utftext;
  562.     };
  563.     var x=Array();
  564.     var k,AA,BB,CC,DD,a,b,c,d;
  565.     var S11=7, S12=12, S13=17, S14=22;
  566.     var S21=5, S22=9 , S23=14, S24=20;
  567.     var S31=4, S32=11, S33=16, S34=23;
  568.     var S41=6, S42=10, S43=15, S44=21;
  569.     string = Utf8Encode(string);
  570.     x = ConvertToWordArray(string);
  571.     a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;
  572.     for (k=0;k<x.length;k+=16) {
  573.         AA=a; BB=b; CC=c; DD=d;
  574.         a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);
  575.         d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);
  576.         c=FF(c,d,a,b,x[k+2], S13,0x242070DB);
  577.         b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);
  578.         a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);
  579.         d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);
  580.         c=FF(c,d,a,b,x[k+6], S13,0xA8304613);
  581.         b=FF(b,c,d,a,x[k+7], S14,0xFD469501);
  582.         a=FF(a,b,c,d,x[k+8], S11,0x698098D8);
  583.         d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);
  584.         c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);
  585.         b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);
  586.         a=FF(a,b,c,d,x[k+12],S11,0x6B901122);
  587.         d=FF(d,a,b,c,x[k+13],S12,0xFD987193);
  588.         c=FF(c,d,a,b,x[k+14],S13,0xA679438E);
  589.         b=FF(b,c,d,a,x[k+15],S14,0x49B40821);
  590.         a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);
  591.         d=GG(d,a,b,c,x[k+6], S22,0xC040B340);
  592.         c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);
  593.         b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);
  594.         a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);
  595.         d=GG(d,a,b,c,x[k+10],S22,0x2441453);
  596.         c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);
  597.         b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);
  598.         a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);
  599.         d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);
  600.         c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);
  601.         b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);
  602.         a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);
  603.         d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);
  604.         c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);
  605.         b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);
  606.         a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);
  607.         d=HH(d,a,b,c,x[k+8], S32,0x8771F681);
  608.         c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);
  609.         b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);
  610.         a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);
  611.         d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);
  612.         c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);
  613.         b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);
  614.         a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);
  615.         d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);
  616.         c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);
  617.         b=HH(b,c,d,a,x[k+6], S34,0x4881D05);
  618.         a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);
  619.         d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);
  620.         c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);
  621.         b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);
  622.         a=II(a,b,c,d,x[k+0], S41,0xF4292244);
  623.         d=II(d,a,b,c,x[k+7], S42,0x432AFF97);
  624.         c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);
  625.         b=II(b,c,d,a,x[k+5], S44,0xFC93A039);
  626.         a=II(a,b,c,d,x[k+12],S41,0x655B59C3);
  627.         d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);
  628.         c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);
  629.         b=II(b,c,d,a,x[k+1], S44,0x85845DD1);
  630.         a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);
  631.         d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);
  632.         c=II(c,d,a,b,x[k+6], S43,0xA3014314);
  633.         b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);
  634.         a=II(a,b,c,d,x[k+4], S41,0xF7537E82);
  635.         d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);
  636.         c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);
  637.         b=II(b,c,d,a,x[k+9], S44,0xEB86D391);
  638.         a=AddUnsigned(a,AA);
  639.         b=AddUnsigned(b,BB);
  640.         c=AddUnsigned(c,CC);
  641.         d=AddUnsigned(d,DD);
  642.     }
  643.     var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);
  644.     return temp.toUpperCase();
  645. }
  646.  
  647. io.on('connection', function (client) {
  648.  
  649.   client.check=false;
  650.   client.tchatco=false;
  651.   client.cursorsave=false;
  652.   client.cursorclear=false;
  653.   client.connectforum=false;
  654.   client.webmail=false;
  655.   client.profil=false;
  656.   client.cursor=false;
  657.   client.salon="undefined";
  658.   client.passwordJoinSalon="undefined";
  659.  
  660.   client.on('Servinscription', function(account) {
  661.     var msg="",err=false;
  662.     if (ent.encode(account.pseudo)!="") {
  663.       if (ent.encode(account.mail)!="") {
  664.         if (validateEmail(ent.encode(account.mail))) {
  665.           if (account.password!="") {
  666.             if (account.cpassword!="") {
  667.               if (account.password==account.cpassword) {
  668.                 account.pseudoRe=((account.pseudo).replace(/[^A-Za-z0-9_.]/gm,"")).toLowerCase();
  669.                 mySqlCo(1,"flammrock");
  670.                   var selectQuery = 'SELECT * FROM membres';
  671.                   mySqlClient.query(
  672.                     selectQuery,
  673.                     function select(error, results, fields) {
  674.                       mySqlClient.end();
  675.                       if (error) {
  676.                         logs.hello.info(error);
  677.                         console.log(error);
  678.                         client.emit("ServRinscription",{msg: 'Une erreur est survenue !', err: true});
  679.                         return;
  680.                       }
  681.                           for (var i=0; i<results.length; i++) {
  682.                             if (results[i].Mpseudo==ent.encode(account.pseudo) || results[i].Mmail==ent.encode(account.mail) || results[i].pseudoRe==account.pseudoRe) {
  683.                           err=true;
  684.                           break;
  685.                             }
  686.                           }
  687.                       if (err) {
  688.                         msg="Ce compte existe déjà !";
  689.                       } else {
  690.                         mySqlCo(1,"flammrock");
  691.                         msg="Votre compte a bien été créé !",err=false;
  692.                         WebFTP.createAccount(account, function(err) {
  693.                           if (err) {
  694.                             msg="Imposiible de créer votre compte ftp !",err=true;
  695.                             client.emit("ServRinscription",{msg: msg, err: err});
  696.                             WebFTP.delAccount(account);
  697.                             return;
  698.                           } else {
  699.                             WebMAIL.createAcount(ent.encode(account.pseudoRe),account.password,function(err){
  700.                               if (err) {
  701.                                 msg="Impossible de créer votre compte mail !",err=true;
  702.                                 client.emit("ServRinscription",{msg: msg, err: err});
  703.                                 WebMAIL.delAccount(account);
  704.                                 return;
  705.                               }
  706.                               mySqlClient.query('INSERT INTO membres SET ?', { Mpseudo: ent.encode(account.pseudo), Mmail: ent.encode(account.mail), Mpassword: account.password, Mlevel: 'membre', pseudoRe: account.pseudoRe }, function(erre,res){
  707.                                 if (erre) {
  708.                                   msg="Votre pseudo contient des caractères illégaux !",err=true;
  709.                                   client.emit("ServRinscription",{msg: msg, err: err});
  710.                                   WebFTP.delAccount(account);
  711.                                   WebMAIL.delAccount(account);
  712.                                   return;
  713.                                 }
  714.                                 logs.hello.info('[SERVER] '+account.pseudo+' vient de s\'inscrire !');
  715.                                 console.log('['+'SERVER'.rainbow+'] '+(account.pseudo).blue+' vient de s\'inscrire !'.green);
  716.                               });
  717.                             });
  718.                           }
  719.                         });
  720.                       }
  721.                       client.emit("ServRinscription",{msg: msg, err: err});
  722.                     }
  723.                   );
  724.               } else {
  725.                 msg="Le mot de passe de confirmation ne correspond pas !",err=true;
  726.               }
  727.             } else {
  728.               msg="Veuillez confirmer votre mot de passe !",err=true;
  729.             }
  730.           } else {
  731.             msg="Veuillez indiquer un mot de passe !",err=true;
  732.           }
  733.         } else {
  734.           msg="Veuillez indiquer un email valide !",err=true;
  735.         }
  736.       } else {
  737.         msg="Veuillez indiquer un email !",err=true;
  738.       }
  739.     } else {
  740.       msg="Veuillez indiquer un pseudo !",err=true;
  741.     }
  742.   });
  743.   client.on('Servconnexion', function(account) {
  744.     var msg="Une erreur est survenue :(",err=true;
  745.     if (ent.encode(account.pseudo)!="") {
  746.       if (account.password!="") {
  747.         mySqlCo(1,"flammrock");
  748.           var selectQuery = 'SELECT * FROM membres';
  749.           mySqlClient.query(
  750.             selectQuery,
  751.             function select(error, results, fields) {
  752.               if (error) {
  753.                 logs.hello.info(error);
  754.                 console.log(error);
  755.                 mySqlClient.end();
  756.                 return;
  757.               }
  758.                   for (var i=0; i<results.length; i++) {
  759.                     if (results[i].Mpseudo==ent.encode(account.pseudo) && results[i].Mpassword==account.password) {
  760.                   msg="Félicitation ! Vous êtes connectés !",err=false;
  761.                     }
  762.                   }
  763.               if (err) {
  764.                 msg="Le pseudo ou/et le mot de passe ne correspondent pas !";
  765.               } else {
  766.                 logs.hello.info('[SERVER] '+account.pseudo+' vient de se connecter !');
  767.                 console.log('['+'SERVER'.rainbow+'] '+(account.pseudo).blue+' vient de se connecter !'.green);
  768.               }
  769.               client.emit("ServRconnexion",{msg: msg, err: err, pseudo: ent.encode(account.pseudo)});
  770.               mySqlClient.end();
  771.             }
  772.           );
  773.       } else {
  774.         msg="Veuillez indiquer un mot de passe !",err=true;
  775.         client.emit("ServRconnexion",{msg: msg, err: err, pseudo: ent.encode(account.pseudo)});
  776.       }
  777.     } else {
  778.       msg="Veuillez indiquer un pseudo !",err=true;
  779.       client.emit("ServRconnexion",{msg: msg, err: err, pseudo: ent.encode(account.pseudo)});
  780.     }
  781.   });
  782.   client.on('ServDeconnexion', function(account) {
  783.     logs.hello.info('[SERVER] '+account.pseudo+' vient de se déconnecter !');
  784.     console.log('['+'SERVER'.rainbow+'] '+(account.pseudo).blue+' vient de se déconnecter !'.red);
  785.   });
  786.  
  787.   client.on('profilConnect', function(data) {
  788.     client.profil=true;
  789.     client.pseudo=data;
  790.     client.salon="undefined";
  791.     console.log('['+'PROFIL'.magenta+'] -'+NOW()+'- '+(client.pseudo).blue+' vient de se connecter !'.green);
  792.     mySqlCo(1,"flammrock");
  793.     var selectQuery = 'SELECT * FROM membres';
  794.     mySqlClient.query(
  795.       selectQuery,
  796.       function select(error, results, fields) {
  797.         mySqlClient.end();
  798.         if (error) {
  799.           logs.hello.info(error);
  800.           console.log(error);
  801.           return;
  802.         }
  803.         for (var i = 0; i < results.length; i++) {
  804.           if (results[i].Mpseudo==client.pseudo) {
  805.             client.emit('RprofilConnect', {password: results[i].Mpassword, mail: results[i].Mmail, pseudo: results[i].pseudoRe});
  806.             break;
  807.           }
  808.         }
  809.         return;
  810.       }
  811.     );
  812.   });
  813.  
  814.   client.on('GetAppInfo', function(app) {
  815.     var info='';
  816.     if (app.name=="chat") {
  817.       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>';
  818.     } else if (app.name=="cursor") {
  819.       info='<b>Nom :</b> Paint Multijoueur<br /><b>Version :</b> 2.0<br /><b>Type :</b> Jeu Multijoueur<br /><b>Créateur :</b> Flammrock<br /><b>Publication :</b> 25/02/2017<br /><b>Mise à jour :</b> 14/03/2017<hr /><button type="button" onclick="document.location.replace(\'\'+document.location.origin+\'/application/'+app.name+'\');" class="btn btn-lg btn-primary">>>> Jouer à Cursor</button>';
  820.     } else if (app.name=="webmail") {
  821.       info='<b>Nom :</b> WebMail<br /><b>Version :</b> 0.5.3<br /><b>Type :</b> Multi<br /><b>Créateur :</b> Flammrock<br /><b>Publication :</b> 09/03/2017<hr /><button type="button" onclick="document.location.replace(\'http://mail.flammrock.ga\');" class="btn btn-lg btn-primary">>>> Fmail</button>';
  822.     } else {
  823.       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>';
  824.     }
  825.     client.emit('RGetAppInfo', {name: app.name, info: info});
  826.   });
  827.  
  828.   client.on('TchatConnect', function(get) {
  829.     if (!client.tchatco) {
  830.       client.tchatco=true;
  831.       client.pseudo = get.pseudo;
  832.       client.salon = get.salon;
  833.       client.onwrite=false;
  834.       var level="";
  835.       var password="Unknown";
  836.       var NameSaloonname="";
  837.       mySqlCo(1,"flammrock");
  838.       var selectQuery = 'SELECT * FROM salon';
  839.       mySqlClient.query(
  840.         selectQuery,
  841.         function select(error, results, fields) {
  842.           mySqlClient.end();
  843.           if (error) {
  844.             logs.chat.info(error);
  845.             console.log(error);
  846.             return;
  847.           }
  848.           for (var i=0; i<results.length; i++) {
  849.             if ((results[i].Sidsalon).toLowerCase()==(get.salon).toLowerCase()) {
  850.               password=results[i].Spassword;
  851.               NameSaloonname=results[i].Snamesalon;
  852.             }
  853.           }
  854.           if (password!=get.salonPassword) {
  855.             client.salon = "undefined";
  856.             client.passwordJoinSalon = "undefined";
  857.             client.emit('RchangeU');
  858.           } else {
  859.             mySqlCo(1,"flammrock");
  860.             var selectQueryy = 'SELECT * FROM salon_'+client.salon;
  861.             mySqlClient.query(
  862.               selectQueryy,
  863.               function select(error, results, fields) {
  864.                 mySqlClient.end();
  865.                 if (error) {
  866.                   logs.chat.info(error);
  867.                   console.log(error);
  868.                   client.salon = "undefined";
  869.                   client.emit('RchangeU');
  870.                 } else {
  871.  
  872.                   mySqlCo(1,"flammrock");
  873.                   var selectQuery = 'SELECT * FROM membres';
  874.                     mySqlClient.query(
  875.                       selectQuery,
  876.                       function select(errora, resultsa, fieldsa) {
  877.                         if (errora) {
  878.                           logs.hello.info(errora);
  879.                           console.log(errora);
  880.                           mySqlClient.end();
  881.                           return;
  882.                         }
  883.                         mySqlClient.end();
  884.                         setTimeout(function(){
  885.                           var onecheckuserdisplatlistlevel=false;
  886.                           for (var i=0; i<results.length; i++) {
  887.                             for (var a=0; a<resultsa.length; a++) {
  888.                               if (resultsa[a].Mpseudo==results[i].pseudo) {
  889.                                 level=resultsa[a].Mlevel;
  890.                               }
  891.                             }
  892.                             if (results[i].pseudo==client.pseudo && !onecheckuserdisplatlistlevel) {
  893.                               onecheckuserdisplatlistlevel=true;
  894.                               var connectcoloruser='#333';
  895.                               if (level=='membre') {
  896.                                 connectcoloruser='#06f';
  897.                               } else {
  898.                                 connectcoloruser='#f00';
  899.                               }
  900.                               if (salonUserconnect[client.salon]=='undefined' || salonUserconnect[client.salon]=='' || typeof salonUserconnect[client.salon]=="undefined") {
  901.                                 salonUserconnect[client.salon]="[<span style='color: "+connectcoloruser+"'>"+level+"</span>] "+client.pseudo;
  902.                               } else {
  903.                                 salonUserconnect[client.salon]+=";[<span style='color: "+connectcoloruser+"'>"+level+"</span>] "+client.pseudo;
  904.                               }
  905.                               if (salonUserconnect[client.salon]!='undefined' || salonUserconnect[client.salon]!='' || typeof salonUserconnect[client.salon]!="undefined") {
  906.                                 var reg=new RegExp("[;]+", "g");
  907.                                       var salonUserconnectCurrent=salonUserconnect[client.salon].split(reg);
  908.                               } else {
  909.                                 salonUserconnectCurrent=['error'];
  910.                               }
  911.                             }
  912.                             if (results[i].pseudo==client.pseudo) {
  913.                               client.emit('Rchat', {date:results[i].datetc, message:results[i].message, user:results[i].pseudo+" (vous)", salon:client.salon, level:level});
  914.                              } else {
  915.                               client.emit('Rchat', {date:results[i].datetc, message:results[i].message, user:results[i].pseudo, salon:client.salon, level:level});
  916.                             }
  917.                           }
  918.                           var date_=NOW();
  919.                           logs.chat.info('[Tchat]['+client.salon+'] -'+client.pseudo+' vient de se connecter !');
  920.                           console.log('['+'Tchat'.magenta+']['+(client.salon).green+'] -'+date_+'- '+(client.pseudo).blue+' vient de se connecter !'.green);
  921.                           client.emit('RTchatConnect', {type:"vous", pseudo:client.pseudo, salon:client.salon, nameSalon:NameSaloonname, password:get.salonPassword, listUserConnected:salonUserconnectCurrent});
  922.                           client.broadcast.emit('RTchatConnect', {type:"Client", pseudo:client.pseudo, salon:client.salon, nameSalon:NameSaloonname, password:get.salonPassword, listUserConnected:salonUserconnectCurrent});
  923.                           client.tchatco=false;
  924.                         },400);
  925.                       }
  926.                     );
  927.                 }
  928.               }
  929.             );
  930.           }
  931.         }
  932.       );
  933.     }
  934.     });
  935.   client.on('TchatCheckSalon', function() {
  936.     if (!client.check) {
  937.       client.check=true;
  938.       var data={},bdata=[],a=0;
  939.       mySqlCo(1,"flammrock");
  940.       var selectQuery = 'SELECT * FROM salon';
  941.       mySqlClient.query(
  942.         selectQuery,
  943.         function select(error, results, fields) {
  944.           if (error) {
  945.             logs.chat.info(error);
  946.             console.log(error);
  947.             mySqlClient.end();
  948.             return;
  949.           }
  950.           for (var i=0; i<results.length; i++) {
  951.             if (typeof data[results[i].Snamesalon] == "undefined") {
  952.               if (results[i].Spassword=="") {
  953.                 data[results[i].Snamesalon]=true;
  954.                 bdata[a]={name: results[i].Snamesalon, id: results[i].Sidsalon};
  955.                 a++;
  956.               }
  957.             }
  958.             }
  959.           client.emit('RTchatCheckSalon', bdata);
  960.           mySqlClient.end();
  961.           client.check=false;
  962.         }
  963.       );
  964.     }
  965.   });
  966.   client.on('TchatCreateSalon', function(get) {
  967.     var date_=NOW();
  968.     var IDsaloon="public_"+ent.encode(get.idsalon);
  969.     var msg="Votre salon a été créé !",err=false;
  970.     if (ent.encode(get.password)!="") {IDsaloon="private_"+ent.encode(get.idsalon);}
  971.     mySqlCo(1,"flammrock");
  972.     var selectQuery = 'SELECT * FROM salon';
  973.     mySqlClient.query(
  974.       selectQuery,
  975.       function select(error, results, fields) {
  976.         if (error) {
  977.           logs.chat.info(error);
  978.           console.log(error);
  979.           mySqlClient.end();
  980.           return;
  981.         }
  982.         for (var i=0; i<results.length; i++) {
  983.           if (results[i].Snamesalon == ent.encode(get.namesalon) || results[i].Sidsalon == IDsaloon) {
  984.             msg="Ce salon existe déjà !",err=true;
  985.           }
  986.         }
  987.         if (!err) {
  988.           logs.chat.info('[Tchat] - '+get.pseudo+ ' : vient de créer un salon de chat -> ('+IDsaloon+")");
  989.           console.log('['+'Tchat'.magenta+'] -'+date_+"- "+(get.pseudo).blue + ' : vient de créer un salon de chat ('+IDsaloon+")");
  990.           mySqlClient.query('INSERT INTO salon SET ?', { Spseudo: ent.encode(get.pseudo), Sidsalon: IDsaloon, Snamesalon: ent.encode(get.namesalon), Spassword: ent.encode(get.password) }, function(err,res){});
  991.           var tableDef = 'CREATE TABLE IF NOT EXISTS salon_'+IDsaloon+' ('+
  992.                             'id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,'+
  993.                             'message VARCHAR(300) NOT NULL,'+
  994.                             'pseudo VARCHAR(16) NOT NULL,'+
  995.                             'datetc VARCHAR(45) NOT NULL,'+
  996.                             'PRIMARY KEY (id)'+
  997.                          ') ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1';
  998.           mySqlClient.query(tableDef, function select(error, results) {
  999.             if (error) logs.chat.info(error);
  1000.           });
  1001.         }
  1002.         client.emit('RTchatCreateSalon',{msg:msg,err:err});
  1003.         mySqlClient.end();
  1004.       }
  1005.     );
  1006.  
  1007.  
  1008.  
  1009.  
  1010.   });
  1011.   client.on('TchatJoinSalon', function(get) {
  1012.     var data={err:true,salon:"none",msg:'Une erreur est survenue !'};
  1013.     var ok=true;
  1014.     if (get.id!="") {
  1015.       if (get.password!="") {
  1016.         passwordJoinSalon=get.password;
  1017.         mySqlCo(1,"flammrock");
  1018.         var selectQuery = 'SELECT * FROM salon';
  1019.         mySqlClient.query(
  1020.           selectQuery,
  1021.           function select(error, results, fields) {
  1022.             mySqlClient.end();
  1023.             if (error) {
  1024.               logs.chat.info(error);
  1025.               console.log(error);
  1026.               data.msg='Une erreur est survenue dans la base de donnée !';
  1027.               return;
  1028.             }
  1029.             for (var i=0; i<results.length; i++) {
  1030.               if (results[i].Sidsalon=='private_'+get.id && results[i].Spassword==get.password) {
  1031.                 data={err:false,salon:'private_'+get.id,msg:'success !'};
  1032.                 ok=false;
  1033.                 client.emit('RTchatJoinSalon', {err:false,salon:'private_'+get.id,msg:'success !'});
  1034.               }
  1035.                 }
  1036.             if (ok) {client.emit('RTchatJoinSalon', data)}
  1037.           }
  1038.         );
  1039.       } else {
  1040.         data.msg='Veuillez indiquer le mot de passe du salon à rejoindre !',data.err=true;
  1041.         client.emit('RTchatJoinSalon', data);
  1042.       }
  1043.     } else {
  1044.       data.msg='Veuillez indiquer l\'id du salon à rejoindre !',data.err=true;
  1045.       client.emit('RTchatJoinSalon', data);
  1046.     }
  1047.   });
  1048.   client.on('Tchat', function(get) {
  1049.       if (typeof client.pseudo != "undefined" && client.salon!="undefined" && !client.onwrite) {
  1050.     client.onwrite=true;
  1051.     var level="";
  1052.          var date_=NOW();
  1053.      mySqlCo(1,"flammrock");
  1054.      var selectQuery = 'SELECT * FROM membres';
  1055.        mySqlClient.query(
  1056.          selectQuery,
  1057.          function select(error, results, fields) {
  1058.            if (error) {
  1059.              logs.hello.info(error);
  1060.              console.log(error);
  1061.              mySqlClient.end();
  1062.              return;
  1063.            }
  1064.            for (var i=0; i<results.length; i++) {
  1065.              if (results[i].Mpseudo==client.pseudo) {
  1066.                level=results[i].Mlevel;
  1067.              }
  1068.            }
  1069.            client.emit('Rchat', {date: date_, message:ent.encode(get), user:client.pseudo+" (vous)", salon: client.salon, level: level});
  1070.            client.broadcast.emit('Rchat', {date: date_, message:ent.encode(get), user:client.pseudo, salon: client.salon, level:level});
  1071.            logs.chat.info('[Tchat]['+client.salon+'] - '+client.pseudo+' : '+get);
  1072.            logs.admin.info('[Tchat]['+client.salon+'] - '+client.pseudo+' : '+get);
  1073.            console.log('['+'Tchat'.magenta+']['+(client.salon).green+'] -'+date_+"- ["+level+"] "+(client.pseudo).blue + ' : ' + get);
  1074.            var salooon='salon_'+client.salon;
  1075.            mySqlClient.query('INSERT INTO '+salooon+' SET ?', { datetc: date_, message: ent.encode(get), pseudo: client.pseudo }, function(err,res){
  1076.              if (err) {
  1077.                logs.chat.info(err);
  1078.                console.log(err);
  1079.              }
  1080.              mySqlClient.end();
  1081.              client.onwrite=false;
  1082.            });
  1083.          }
  1084.        );
  1085.      }
  1086.     });
  1087.   client.on('TchatMySaloonAdd', function(data) {
  1088.     var pseudoRe="";
  1089.     if (client.pseudo!="") {
  1090.       err=true;
  1091.       mySqlCo(1,"flammrock");
  1092.       var selectQuery = 'SELECT * FROM membres';
  1093.       mySqlClient.query(
  1094.         selectQuery,
  1095.         function select(error, results, fields) {
  1096.           if (error) {
  1097.             logs.hello.info(error);
  1098.             console.log(error);
  1099.             mySqlClient.end();
  1100.             return;
  1101.           }
  1102.           for (var i=0; i<results.length; i++) {
  1103.             if (results[i].Mpseudo==client.pseudo) {
  1104.               pseudoRe=(results[i].pseudoRe).replace(new RegExp("[.]+","g"),"");
  1105.               err=false;
  1106.             }
  1107.           }
  1108.           if (!err && pseudoRe!="") {
  1109.             var tableDef = 'CREATE TABLE IF NOT EXISTS salonList_'+pseudoRe+' ('+
  1110.                               'id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,'+
  1111.                               'salon VARCHAR(300) NOT NULL,'+
  1112.                               'Nname VARCHAR(300) NOT NULL,'+
  1113.                               'Mpassword VARCHAR(30) NOT NULL,'+
  1114.                               'PRIMARY KEY (id)'+
  1115.                            ') ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1';
  1116.             mySqlClient.query(tableDef, function select(errors, results) {
  1117.               var selectQuery = 'SELECT * FROM salonList_'+pseudoRe+'';
  1118.               mySqlClient.query(
  1119.                 selectQuery,
  1120.                 function select(error, result, fields) {
  1121.                   if (error) {
  1122.                     mySqlClient.end();
  1123.                     return;
  1124.                   }
  1125.                   err=false;
  1126.                   for (var i = 0; i < result.length; i++) {
  1127.                     if (result[i].salon==data.salon) {
  1128.                       err=true;
  1129.                     }
  1130.                   }
  1131.                   if (!err) {
  1132.                     mySqlClient.query('INSERT INTO salonList_'+pseudoRe+' SET ?', { salon: data.salon, Nname: data.name, Mpassword: data.password }, function(erre,res){
  1133.                       if (erre) {
  1134.                         mySqlClient.end();
  1135.                         return;
  1136.                       }
  1137.                       mySqlClient.end();
  1138.                     });
  1139.                   } else {
  1140.                     mySqlClient.end();
  1141.                   }
  1142.                 }
  1143.               );
  1144.             });
  1145.           } else {
  1146.             mySqlClient.end();
  1147.           }
  1148.         }
  1149.       );
  1150.     }
  1151.   });
  1152.   client.on('TchatMySaloonList', function(data) {
  1153.     mySqlCo(1,"flammrock");
  1154.     client.pseudo=data.pseudo;
  1155.     var pseudoRe="",err=true;
  1156.     var data=[];
  1157.     var selectQuery = 'SELECT * FROM membres';
  1158.       mySqlClient.query(
  1159.         selectQuery,
  1160.         function select(error, resultss, fields) {
  1161.           if (error) {
  1162.             mySqlClient.end();
  1163.             return;
  1164.           }
  1165.           for (var i=0; i<resultss.length; i++) {
  1166.             if (resultss[i].Mpseudo==client.pseudo) {
  1167.               pseudoRe=(resultss[i].pseudoRe).replace(new RegExp("[.]+","g"),"");
  1168.               err=false;
  1169.             }
  1170.           }
  1171.           if (pseudoRe!="" && !err) {
  1172.             var selectQuery = 'SELECT * FROM salonList_'+pseudoRe;
  1173.             mySqlClient.query(
  1174.               selectQuery,
  1175.               function select(errors, results, fields) {
  1176.                 if (errors) {
  1177.                   mySqlClient.end();
  1178.                   return;
  1179.                 }
  1180.                 for (var i = 0; i < results.length; i++) {
  1181.                   data[i]={id:results[i].salon,name:results[i].Nname,password:results[i].Mpassword};
  1182.                 }
  1183.                 client.emit('RTchatMySaloonList', data);
  1184.               }
  1185.             );
  1186.           } else {
  1187.             mySqlClient.end();
  1188.             return;
  1189.           }
  1190.         }
  1191.       );
  1192.   });
  1193.  
  1194.  
  1195.   client.on('ForumConnect', function() {
  1196.     if (!client.connectforum) {
  1197.       var date_=NOW();
  1198.       mySqlCo(1,"flammrock");
  1199.       var selectQuery = 'SELECT * FROM forum_categorie';
  1200.         mySqlClient.query(
  1201.           selectQuery,
  1202.           function select(error, results, fields) {
  1203.             mySqlClient.end();
  1204.             if (error) {
  1205.               logs.hello.info(error);
  1206.               console.log(error);
  1207.               return;
  1208.             }
  1209.             client.connectforum=true;
  1210.           }
  1211.         );
  1212.     }
  1213.   });
  1214.  
  1215.   client.on('isup', function(url) {
  1216.     checkUrlExists(url,function(res){
  1217.       client.emit('Risup',{url:url,res:res});
  1218.     });
  1219.   });
  1220.  
  1221.   client.on('cursorConnect', function (data) {
  1222.     var date_=NOW();
  1223.     client.pseudo=data;
  1224.     client.cursor=true;
  1225.     console.log('['+'CURSOR'.magenta+'] -'+date_+'- '+(client.pseudo).blue+'['+client.id+'] vient de se connecter !'.green);
  1226.     client.broadcast.emit('RcursorConnect');
  1227.   });
  1228.   client.on('cursorMoving', function (data) {
  1229.         client.broadcast.emit('RcursorMoving', data);
  1230.     });
  1231.   client.on('cursorSave', function (data) {
  1232.     ctx=data.ctx;
  1233.     var base64Data = ctx.replace(/^data:image\/png;base64,/, "");
  1234.     require("fs").writeFile("views/cursor.png", base64Data, 'base64', function(err) {
  1235.       client.broadcast.emit('Refresh', {pseudo: data.pseudo, message: data.pseudo+' a sauvegardé le dessin !'});
  1236.       client.emit('Refresh', {pseudo: "Vous", message: 'Vous avez sauvegardé le dessin !'});
  1237.       console.log('['+'CURSOR'.magenta+'] -'+NOW()+'- '+(client.pseudo).blue+'['+client.id+'] a sauvegardé le dessin !'.green);
  1238.     });
  1239.     });
  1240.   client.on('cursorClear', function (data) {
  1241.     ctx="R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
  1242.     require("fs").writeFile("views/cursor.png", ctx, 'base64', function(err) {
  1243.       client.broadcast.emit('Refresh', {pseudo: data.pseudo, message: data.pseudo+' a effacé le dessin !'});
  1244.       client.emit('Refresh', {pseudo: "Vous", message: 'Vous avez sauvegardé le dessin !'});
  1245.       console.log('['+'CURSOR'.magenta+'] -'+NOW()+'- '+(client.pseudo).blue+'['+client.id+'] a effacé le dessin !'.green);
  1246.     });
  1247.     });
  1248.   client.on('cursorLoadImg', function (data) {
  1249.     client.broadcast.emit('Refresh', {pseudo: data.pseudo, message: data.pseudo+' a chargé un dessin !'});
  1250.   });
  1251.  
  1252.   client.on('WEBmailConnect', function (data) {
  1253.     client.pseudo=data;
  1254.     client.salon="undefined";
  1255.     client.webmail=true;
  1256.     var date_=NOW();
  1257.     var pseudoRe="[ERROR]";
  1258.     console.log('['+'WEBMAIL'.magenta+'] -'+date_+'- '+(client.pseudo).blue+' vient de se connecter !'.green);
  1259.     mySqlCo(1,"flammrock");
  1260.     var selectQuery = 'SELECT * FROM membres';
  1261.     mySqlClient.query(
  1262.       selectQuery,
  1263.       function select(error, results, fields) {
  1264.         mySqlClient.end();
  1265.         if (error) {
  1266.           logs.hello.info(error);
  1267.           console.log(error);
  1268.           return;
  1269.         }
  1270.         for (var i = 0; i < results.length; i++) {
  1271.           if (results[i].Mpseudo==client.pseudo) {
  1272.             pseudoRe=results[i].pseudoRe;
  1273.             break;
  1274.           }
  1275.         }
  1276.         WebMAIL.listAllmsg(pseudoRe, function(res){
  1277.           client.emit('RWEBmailConnect', res);
  1278.         });
  1279.       }
  1280.     );
  1281.   });
  1282.   client.on('WEBmailsendMail', function (data) {
  1283.     var err=false,msg="";
  1284.     if (ent.encode(data.pseudo)!="") {
  1285.       if (ent.encode(data.to)!="") {
  1286.         if (validateEmail(ent.encode(data.to))) {
  1287.           if (data.subject!="") {
  1288.             if (data.message!="") {
  1289.                 err=false,msg="Votre message a bien été envoyé :D";
  1290.                 WebMAIL.sendMail(ent.encode(data.pseudo),ent.encode(data.to),data.subject,data.message,function(){
  1291.                   err=true,msg="Une erreur est survenue :'(";
  1292.                 });
  1293.                 client.emit('RWEBmailsendMail', {err:err,msg:msg});
  1294.             } else {
  1295.               err=true,msg="Veuillez indiquer un message !";
  1296.               client.emit('RWEBmailsendMail', {err:err,msg:msg});
  1297.               return;
  1298.             }
  1299.           } else {
  1300.             err=true,msg="Veuillez indiquer un sujet !";
  1301.             client.emit('RWEBmailsendMail', {err:err,msg:msg});
  1302.             return;
  1303.           }
  1304.         } else {
  1305.           err=true,msg="Ce mail n'est pas valide !";
  1306.           client.emit('RWEBmailsendMail', {err:err,msg:msg});
  1307.           return;
  1308.         }
  1309.       } else {
  1310.         err=true,msg="Veuillez indiquer un mail !";
  1311.         client.emit('RWEBmailsendMail', {err:err,msg:msg});
  1312.         return;
  1313.       }
  1314.     } else {
  1315.       err=true,msg="Une erreur est survenue, veuillez rafraîchir la page !";
  1316.       client.emit('RWEBmailsendMail', {err:err,msg:msg});
  1317.       return;
  1318.     }
  1319.   });
  1320.  
  1321.  
  1322.   client.on('FTPConnect', function (data) {
  1323.     var date_=NOW();
  1324.     var err=false;
  1325.     var password=false;
  1326.     client.pseudo = data;
  1327.     client.salon="undefined";
  1328.     logs.chat.info('[FTP] -'+client.pseudo+' : connexion !');
  1329.     console.log('['+'FTP'.magenta+'] -'+date_+'- '+(client.pseudo).blue+' : connexion !'.green);
  1330.     var pseudoRe="[ERROR]";
  1331.     mySqlCo(1,"flammrock");
  1332.     var selectQuery = 'SELECT * FROM membres';
  1333.       mySqlClient.query(
  1334.         selectQuery,
  1335.         function select(error, results, fields) {
  1336.           mySqlClient.end();
  1337.           if (error) {
  1338.             logs.hello.info(error);
  1339.             console.log(error);
  1340.             err=true;
  1341.             return;
  1342.           }
  1343.           for (var i=0; i<results.length; i++) {
  1344.             if (results[i].Mpseudo==client.pseudo) {
  1345.               password=results[i].Mpassword;
  1346.               pseudoRe=results[i].pseudoRe;
  1347.             }
  1348.           }
  1349.           if (password!==false && !err) {
  1350.             var Ftp = new JSFtp({
  1351.               host: "flammrock.ga",
  1352.               port: 21,
  1353.               user: pseudoRe,
  1354.               pass: password
  1355.             });
  1356.  
  1357.             Ftp.list("", function(err, res) {
  1358.               var reg=new RegExp("[\n]+", "g");
  1359.               var response = res.split(reg);
  1360.               response[response.length]="del";
  1361.               response[response.length-1]="del";
  1362.               response[1]="del";
  1363.               response[0]="del";
  1364.               var responses=[];
  1365.               var a=0;
  1366.               for (var i = 0; i < response.length; i++) {
  1367.                 if (response[i].substring(0,3)=="drw") {
  1368.                   responses[a]=response[i].split(/\s+/);
  1369.                   responses[a]={name:response[a][response[a].length-2],type:'folder'};
  1370.                   a++;
  1371.                 } else if (response[i].substring(0,3)=="-rw") {
  1372.                   responses[a]=response[i].split(/\s+/);
  1373.                   responses[a]={name:responses[a][responses[a].length-2],type:'file'};
  1374.                   a++;
  1375.                 }
  1376.               }
  1377.               client.emit('RFTPConnect', {res:responses,err:err});
  1378.               logs.chat.info('[FTP] -'+client.pseudo+'['+pseudoRe+'] : affichage de \'./\' avec succès !');
  1379.               console.log('['+'FTP'.magenta+'] -'+date_+'- '+(client.pseudo).blue+'['+pseudoRe.blue+'] : affichage de \'./\' avec succès !'.green);
  1380.               Ftp.raw("quit", function(err, data) {
  1381.                 if (err) return console.error(err);
  1382.                 logs.chat.info('[FTP] -'+client.pseudo+'['+pseudoRe+'] : Fin des requêtes !');
  1383.                 console.log('['+'FTP'.magenta+'] -'+date_+'- '+(client.pseudo).blue+'['+pseudoRe.blue+'] : Fin des requêtes !'.green);
  1384.               });
  1385.             });
  1386.           } else {
  1387.             client.emit('RFTPConnect', {msg:'Une erreur est survenue',err:err});
  1388.           }
  1389.         }
  1390.       );
  1391.   });
  1392.  
  1393.   client.on('disconnect', function(data) {
  1394.     var date_=NOW();
  1395.     if (typeof client.pseudo != "undefined" && client.salon!="undefined") {
  1396.       var reg=new RegExp("[;]+", "g");
  1397.       var salonUserconnectCurrent=(salonUserconnect[client.salon].replace(/\[(.*?)\]/ig,""));
  1398.       salonUserconnectCurrent=salonUserconnectCurrent.split(reg);
  1399.       var salonUserconnectCurrentRe="";
  1400.       var temp=salonUserconnect[client.salon].split(reg);
  1401.       for (var i = 0; i < salonUserconnectCurrent.length; i++) {
  1402.         if (salonUserconnectCurrent[i].substring(1)!=client.pseudo) {
  1403.           if (salonUserconnectCurrentRe=="") {
  1404.             salonUserconnectCurrentRe+=temp[i];
  1405.           } else {
  1406.             salonUserconnectCurrentRe+=";"+temp[i];
  1407.           }
  1408.         }
  1409.       }
  1410.       var salonUserconnectCurrentRe_=salonUserconnectCurrentRe.split(reg);
  1411.       salonUserconnect[client.salon]=salonUserconnectCurrentRe_
  1412.       client.emit('RTchatdisconnect', {type:"vous", pseudo:client.pseudo, salon:client.salon, listUserConnected:salonUserconnectCurrentRe_});
  1413.       client.broadcast.emit('RTchatdisconnect', {type:"Client", pseudo:client.pseudo, salon:client.salon, listUserConnected:salonUserconnectCurrentRe_});
  1414.       logs.chat.info('[Tchat]['+client.salon+'] - '+client.pseudo+' vient de se déconnecter !');
  1415.       console.log('['+'Tchat'.magenta+']['+(client.salon).green+'] -'+date_+'- '+(client.pseudo).blue+' vient de se déconnecter !'.red);
  1416.       client.pseudo="undefined";
  1417.       client.salon="undefined";
  1418.       passwordJoinSalon="";
  1419.     }
  1420.     if (client.webmail) {
  1421.       console.log('['+'WEBMAIL'.magenta+'] -'+date_+'- '+(client.pseudo).blue+' vient de se déconnecter !'.green);
  1422.     }
  1423.     if (client.cursor) {
  1424.       console.log('['+'CURSOR'.magenta+'] -'+date_+'- '+(client.pseudo).blue+'['+client.id+'] vient de se déconnecter !'.green);
  1425.     }
  1426.     if (client.profil) {
  1427.       console.log('['+'PROFIL'.magenta+'] -'+date_+'- '+(client.pseudo).blue+' vient de se déconnecter !'.green);
  1428.     }
  1429.   });
  1430. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement