Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.36 KB | None | 0 0
  1. var express = require('express');
  2. var path = require('path');
  3. var JSON3 = require('./public/js/json3.min.js');
  4. var fs = require('fs');
  5. var app = express();
  6. var server = require('http').createServer(app);
  7. var io = require('socket.io').listen(server);
  8. const { table } = require('table');
  9.  
  10. var rawdata = fs.readFileSync('conf.json');
  11. var conf = JSON3.parse(rawdata);
  12.  
  13.  
  14. //Permet la lecture des fichiers css, js et des photos
  15. app.use(express.static(path.join(__dirname, 'public')));
  16.  
  17. //Gère l'accès à la page linko
  18. app.get('/linko', function (req, res) {
  19. res.sendFile(__dirname + '/linko.html');
  20. });
  21.  
  22. //Gère l'accès à la page Hermes Net
  23. app.get('/hermesnet', function (req, res) {
  24. res.sendFile(__dirname + '/hermesnet.html');
  25. });
  26.  
  27. app.get('/data', function (req, res) {
  28. var base64data = req.query.base64data;
  29. var objToSend = base64data.toString('ascii');
  30. sendToLinko2(objToSend);
  31. });
  32.  
  33. //Gère l'accès par defaut
  34. app.get('', function (req, res) {
  35. res.sendFile(__dirname + '/senddata.html');
  36. });
  37.  
  38. server.listen(process.env.port || conf.port);
  39. var date = new Date();
  40. console.log('Lancement du serveur le ' + date.toLocaleDateString() + ' à ' + date.toLocaleTimeString());
  41.  
  42. var linko = new Array();
  43. var hermes = new Array();
  44. var data = [['ID Client', 'ID Hermes Net', 'Socket ID']];
  45.  
  46.  
  47. io.sockets.on('connection', function (socket, pseudo) {
  48.  
  49. /* Réception des données depuis Linko */
  50. socket.on('linkoConnection', function (mess) {
  51.  
  52. // On récupère les identifiants
  53. var login = mess[0] + "/" + mess[1];
  54. if (conf.debugMode) { console.log("Connection entrante depuis Linko :"); }
  55.  
  56. // Variable qui récupèrera la réponse à envoyer a l'app Linko
  57. var post = "";
  58.  
  59. // Si un compte Linko est déja connecté avec ce login
  60. if (linko[login] !== undefined) {
  61.  
  62. // On envoie un message d'erreur
  63. if (conf.debugMode) { console.log("\"" + mess[0] + "\" est déjà connecté"); }
  64. post = "Erreur : Un autre utilisateur est déjà connécté sur Linko avec le login \"" + mess[0] + "\".";
  65.  
  66. // Sinon
  67. } else {
  68.  
  69. // On enregistre la socket Linko
  70. socket.login = login;
  71. linko[login] = socket.id;
  72.  
  73. if (conf.debugMode) { console.log("\"" + mess[0] + "\" vient de se connecter sur le serveur \"" + mess[1] + "\"."); }
  74. post = "connected";
  75.  
  76. // Si la soket Hermes existe également
  77. if (hermes[login] !== undefined) {
  78.  
  79. // On enregistre la liaison Hermes / Linko
  80. var output = table(infoServer(data, true, socket.id, mess));
  81. if (conf.debugMode) { console.log(output); }
  82.  
  83. }
  84. }
  85.  
  86. // Envoi des resultats
  87. socket.emit("connectionResult", post);
  88.  
  89. });
  90.  
  91. /* Réception des données lors de la déconnexion de la socket */
  92. socket.on('disconnect', function () {
  93.  
  94. // On supprime la socket Linko
  95. delete linko[socket.login];
  96. if (conf.debugMode) { console.log('Clients connectés après deconnection : \n'); }
  97. // On supprime la liaison Linko / Hermes
  98. data = infoServer(data, false, socket.id, null);
  99. var output = table(data);
  100. if (conf.debugMode) { console.log(output); }
  101. });
  102.  
  103. });
  104.  
  105. function sendToLinko2(dataJson3) {
  106. // On décrypte le Json pour récupérer les données
  107. var json3Parsed = JSON3.parse(dataJson3);
  108.  
  109. // On récupère les identifiants depuis le Json
  110. var login = json3Parsed.idTc + "/" + json3Parsed.idHermes;
  111.  
  112. // Si la socket Hermes n'existe pas encore
  113. if (hermes[login] === undefined) {
  114.  
  115. // On enregistre la socket Hermes
  116. if (conf.debugMode) {
  117. console.log("Connection entrante depuis Hermes Net :");
  118. console.log("\"" + json3Parsed.idTc + "\" vient de se connecter sur le serveur \"" + json3Parsed.idHermes + "\".");
  119. }
  120.  
  121. // Si la socket Linko existe également
  122. if (linko[login] !== undefined) {
  123.  
  124. // On enregistre la liaison Hermes / Linko
  125. var output = table(infoServer(data, true, linko[login], [json3Parsed.idTc, json3Parsed.idHermes]));
  126. if (conf.debugMode) { console.log(output); }
  127.  
  128. }
  129. }
  130.  
  131. // Si la socket Linko existe
  132. if (linko[login] !== undefined) {
  133.  
  134. // On transforme les données en un String au format Web
  135. var web = jsonToWeb(json3Parsed);
  136. // On envoie les données à Linko
  137. io.to(linko[login]).emit('webData', web);
  138.  
  139. }
  140. }
  141.  
  142. function jsonToWeb(json3Parsed) {
  143. var web = "";
  144. var table = "<table class=\"table\"><tbody>";
  145. var prenom, nom, sex;
  146. // Mise en forme Web du fichier JSon
  147. for (let i = 0; i < json3Parsed.donnees.length; i++) {
  148. switch (json3Parsed.donnees[i].label) {
  149. case "Prénom":
  150. prenom = json3Parsed.donnees[i].value;
  151. break;
  152. case "Nom":
  153. nom = json3Parsed.donnees[i].value;
  154. break;
  155. case "Sexe":
  156. if (json3Parsed.donnees[i].value == "Masculin") {
  157. sex = "<img src=\"./image/male.png\">";
  158. }
  159. if (json3Parsed.donnees[i].value == "Feminin") {
  160. sex = "<img src=\"./image/female.png\">";
  161. }
  162. web += "<div class=\"data head\"><div class=\"name\">" + prenom + " " + nom + " </div><div class=\"sexCont\">" + sex + "</div></div>";
  163. break;
  164. case "Téléphone":
  165. web += "<div class=\"data phoneNumber\"><button id=\"toCopy\" class=\"copy btn btn-default\" onclick=\"copy()\">" + json3Parsed.donnees[i].value + "</button></div>";
  166. break;
  167. default:
  168. if (json3Parsed.donnees[i].icon == null) { json3Parsed.donnees[i].icon = "other.png" };
  169. table += "<tr>"
  170. table += "<td class=\"col1\"><img class=\"icon\" src=\"./image/" + json3Parsed.donnees[i].icon + "\"></td>";
  171. table += "<td class=\"data " + json3Parsed.donnees[i].label.replace(/ /g, "_").toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, "") + "\">";
  172. if (json3Parsed.donnees[i].lDisplay) {
  173. table += json3Parsed.donnees[i].label + " : ";
  174. }
  175. table += json3Parsed.donnees[i].value + " </td></tr>";
  176. break;
  177. }
  178. }
  179. table += "</tbody></table>";
  180. web += table;
  181. return web;
  182. }
  183.  
  184. function infoServer(data, add, socketid, mess) {
  185.  
  186. function deleteRow(arr, row) {
  187. arr = arr.slice(0); // make copy
  188. arr.splice(row, 1);
  189. return arr;
  190. }
  191.  
  192. function getIndexOfK(arr, k) {
  193. for (var i = 0; i < arr.length; i++) {
  194. var index = arr[i].indexOf(k);
  195. if (index > -1) {
  196. return [i, index];
  197. }
  198. }
  199. }
  200.  
  201. if (add == true) {
  202. data.push([mess[0], mess[1], socketid]);
  203. }
  204.  
  205. else {
  206. var result = getIndexOfK(data, socketid);
  207. if (result !== undefined) {
  208. var array2 = deleteRow(data, result[0]);
  209. data = array2;
  210. }
  211. }
  212.  
  213. return data;
  214. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement