daily pastebin goal
42%
SHARE
TWEET

Untitled

a guest Jan 18th, 2019 54 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top