Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var path = require('path');
- var JSON3 = require('./public/js/json3.min.js');
- var fs = require('fs');
- var app = express();
- var server = require('http').createServer(app);
- var io = require('socket.io').listen(server);
- const { table } = require('table');
- var rawdata = fs.readFileSync('conf.json');
- var conf = JSON3.parse(rawdata);
- //Permet la lecture des fichiers css, js et des photos
- app.use(express.static(path.join(__dirname, 'public')));
- //Gère l'accès à la page linko
- app.get('/linko', function (req, res) {
- res.sendFile(__dirname + '/linko.html');
- });
- //Gère l'accès à la page Hermes Net
- app.get('/hermesnet', function (req, res) {
- res.sendFile(__dirname + '/hermesnet.html');
- });
- app.get('/data', function (req, res) {
- var base64data = req.query.base64data;
- var objToSend = base64data.toString('ascii');
- sendToLinko2(objToSend);
- });
- //Gère l'accès par defaut
- app.get('', function (req, res) {
- res.sendFile(__dirname + '/senddata.html');
- });
- server.listen(process.env.port || conf.port);
- var date = new Date();
- console.log('Lancement du serveur le ' + date.toLocaleDateString() + ' à ' + date.toLocaleTimeString());
- var linko = new Array();
- var hermes = new Array();
- var data = [['ID Client', 'ID Hermes Net', 'Socket ID']];
- io.sockets.on('connection', function (socket, pseudo) {
- /* Réception des données depuis Linko */
- socket.on('linkoConnection', function (mess) {
- // On récupère les identifiants
- var login = mess[0] + "/" + mess[1];
- if (conf.debugMode) { console.log("Connection entrante depuis Linko :"); }
- // Variable qui récupèrera la réponse à envoyer a l'app Linko
- var post = "";
- // Si un compte Linko est déja connecté avec ce login
- if (linko[login] !== undefined) {
- // On envoie un message d'erreur
- if (conf.debugMode) { console.log("\"" + mess[0] + "\" est déjà connecté"); }
- post = "Erreur : Un autre utilisateur est déjà connécté sur Linko avec le login \"" + mess[0] + "\".";
- // Sinon
- } else {
- // On enregistre la socket Linko
- socket.login = login;
- linko[login] = socket.id;
- if (conf.debugMode) { console.log("\"" + mess[0] + "\" vient de se connecter sur le serveur \"" + mess[1] + "\"."); }
- post = "connected";
- // Si la soket Hermes existe également
- if (hermes[login] !== undefined) {
- // On enregistre la liaison Hermes / Linko
- var output = table(infoServer(data, true, socket.id, mess));
- if (conf.debugMode) { console.log(output); }
- }
- }
- // Envoi des resultats
- socket.emit("connectionResult", post);
- });
- /* Réception des données lors de la déconnexion de la socket */
- socket.on('disconnect', function () {
- // On supprime la socket Linko
- delete linko[socket.login];
- if (conf.debugMode) { console.log('Clients connectés après deconnection : \n'); }
- // On supprime la liaison Linko / Hermes
- data = infoServer(data, false, socket.id, null);
- var output = table(data);
- if (conf.debugMode) { console.log(output); }
- });
- });
- function sendToLinko2(dataJson3) {
- // On décrypte le Json pour récupérer les données
- var json3Parsed = JSON3.parse(dataJson3);
- // On récupère les identifiants depuis le Json
- var login = json3Parsed.idTc + "/" + json3Parsed.idHermes;
- // Si la socket Hermes n'existe pas encore
- if (hermes[login] === undefined) {
- // On enregistre la socket Hermes
- if (conf.debugMode) {
- console.log("Connection entrante depuis Hermes Net :");
- console.log("\"" + json3Parsed.idTc + "\" vient de se connecter sur le serveur \"" + json3Parsed.idHermes + "\".");
- }
- // Si la socket Linko existe également
- if (linko[login] !== undefined) {
- // On enregistre la liaison Hermes / Linko
- var output = table(infoServer(data, true, linko[login], [json3Parsed.idTc, json3Parsed.idHermes]));
- if (conf.debugMode) { console.log(output); }
- }
- }
- // Si la socket Linko existe
- if (linko[login] !== undefined) {
- // On transforme les données en un String au format Web
- var web = jsonToWeb(json3Parsed);
- // On envoie les données à Linko
- io.to(linko[login]).emit('webData', web);
- }
- }
- function jsonToWeb(json3Parsed) {
- var web = "";
- var table = "<table class=\"table\"><tbody>";
- var prenom, nom, sex;
- // Mise en forme Web du fichier JSon
- for (let i = 0; i < json3Parsed.donnees.length; i++) {
- switch (json3Parsed.donnees[i].label) {
- case "Prénom":
- prenom = json3Parsed.donnees[i].value;
- break;
- case "Nom":
- nom = json3Parsed.donnees[i].value;
- break;
- case "Sexe":
- if (json3Parsed.donnees[i].value == "Masculin") {
- sex = "<img src=\"./image/male.png\">";
- }
- if (json3Parsed.donnees[i].value == "Feminin") {
- sex = "<img src=\"./image/female.png\">";
- }
- web += "<div class=\"data head\"><div class=\"name\">" + prenom + " " + nom + " </div><div class=\"sexCont\">" + sex + "</div></div>";
- break;
- case "Téléphone":
- web += "<div class=\"data phoneNumber\"><button id=\"toCopy\" class=\"copy btn btn-default\" onclick=\"copy()\">" + json3Parsed.donnees[i].value + "</button></div>";
- break;
- default:
- if (json3Parsed.donnees[i].icon == null) { json3Parsed.donnees[i].icon = "other.png" };
- table += "<tr>"
- table += "<td class=\"col1\"><img class=\"icon\" src=\"./image/" + json3Parsed.donnees[i].icon + "\"></td>";
- table += "<td class=\"data " + json3Parsed.donnees[i].label.replace(/ /g, "_").toLowerCase().normalize('NFD').replace(/[\u0300-\u036f]/g, "") + "\">";
- if (json3Parsed.donnees[i].lDisplay) {
- table += json3Parsed.donnees[i].label + " : ";
- }
- table += json3Parsed.donnees[i].value + " </td></tr>";
- break;
- }
- }
- table += "</tbody></table>";
- web += table;
- return web;
- }
- function infoServer(data, add, socketid, mess) {
- function deleteRow(arr, row) {
- arr = arr.slice(0); // make copy
- arr.splice(row, 1);
- return arr;
- }
- function getIndexOfK(arr, k) {
- for (var i = 0; i < arr.length; i++) {
- var index = arr[i].indexOf(k);
- if (index > -1) {
- return [i, index];
- }
- }
- }
- if (add == true) {
- data.push([mess[0], mess[1], socketid]);
- }
- else {
- var result = getIndexOfK(data, socketid);
- if (result !== undefined) {
- var array2 = deleteRow(data, result[0]);
- data = array2;
- }
- }
- return data;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement