· 9 years ago · May 14, 2017, 06:22 PM
1process.title = 'Server Web http NodeJS';
2process.stdout.write('\033c');
3
4
5var fs = require('fs');
6var colors = require('colors');
7var exec = require('child_process').exec;
8var ent = require('ent');
9var log4js = require('log4js');
10log4js.configure('logConfig.json', { cwd: 'D:/testnode' });
11var subdomain = require('express-subdomain');
12var express = require('express');
13var cookieParser = require('cookie-parser');
14var app = express();
15var server = require('http').createServer(app);
16server.listen(80);
17var io = require('socket.io')(server);
18var mysql = require('mysql');
19var JSFtp = require("jsftp");
20var favicon = require('serve-favicon');
21var multer = require('multer');
22var 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});
30var upload = multer({ storage : storage}).single('AppCursor');
31var cookiesFl = {
32 connect: false
33};
34
35
36var nodemailer = require('nodemailer');
37var smtpTransport = require('nodemailer-smtp-transport');
38var 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
52var Wforum = express.Router();
53var Wmail = express.Router();
54var Wfiche = express.Router();
55var Wglacerock10 = express.Router();
56var Wraiseit = express.Router();
57
58app.use(subdomain('forum', Wforum));
59app.use(subdomain('mail', Wmail));
60app.use(subdomain('fiche', Wfiche));
61app.use(subdomain('glacerock10', Wglacerock10));
62app.use(subdomain('raiseit', Wraiseit));
63app.listen(3000);
64
65
66
67log4js.loadAppender('file');
68
69var logs = {
70 hello: log4js.getLogger('hello'),
71 chat: log4js.getLogger('hello'),
72 admin: log4js.getLogger('admin')
73}
74
75logs.hello.info('Serveur lancé !');
76logs.admin.info('Serveur lancé !');
77
78app.use(cookieParser());
79app.set('view engine', 'ejs');
80app.use(favicon('views/favicon.ico'));
81app.use(express.static(__dirname + '/views'));
82
83//router.set('view engine', 'ejs');
84Wforum.use(express.static(__dirname + '/views'));
85Wforum.use(cookieParser());
86Wmail.use(express.static(__dirname + '/views'));
87Wmail.use(cookieParser());
88Wfiche.use(express.static(__dirname + '/fiche'));
89Wfiche.use(cookieParser());
90Wglacerock10.use(express.static(__dirname + '/ftp/glacerock10'));
91Wglacerock10.use(cookieParser());
92Wraiseit.use(express.static(__dirname + '/views'));
93Wraiseit.use(cookieParser());
94
95app.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});
100Wforum.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});
105Wmail.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
111var passwordJoinSalon="",
112 ctx="nul";
113
114var salonUserconnect = {};
115
116Wraiseit.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});
122Wglacerock10.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});
128Wforum.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});
137Wmail.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
150Wfiche.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
161app.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})
176app.get('/profil', function(req, res) {
177 res.render('profil.ejs', {connect:cookiesFl.connect, pseudo:req.cookies.connect});
178})
179app.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
220function 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}
243mySqlCo(0,"flammrock");
244
245
246var 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}
256var savemasscursor=false;
257var 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}
261function handler (request, response) {
262 request.addListener('end', function () {
263 fileServer.serve(request, response);
264 });
265}
266function 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}
279var 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
295var 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};
412var 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
463var 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
647io.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});