Version 0.7.3 - Ajout de la modification des nodes
This commit is contained in:
		@@ -4,5 +4,35 @@
 | 
				
			|||||||
    "password": "horizxon.studio",
 | 
					    "password": "horizxon.studio",
 | 
				
			||||||
    "port": 80,
 | 
					    "port": 80,
 | 
				
			||||||
    "secure": false
 | 
					    "secure": false
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "host": "ssl.horizxon.studio",
 | 
				
			||||||
 | 
					    "password": "horizxon.studio",
 | 
				
			||||||
 | 
					    "port": 443,
 | 
				
			||||||
 | 
					    "secure": true
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "host": "suki.nathan.to",
 | 
				
			||||||
 | 
					    "password": "adowbongmanacc",
 | 
				
			||||||
 | 
					    "port": 443,
 | 
				
			||||||
 | 
					    "secure": true
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "host": "lavalink.lexnet.cc",
 | 
				
			||||||
 | 
					    "password": "lexn3tl@val!nk",
 | 
				
			||||||
 | 
					    "port": 443,
 | 
				
			||||||
 | 
					    "secure": true
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "host": "eu-lavalink.lexnet.cc",
 | 
				
			||||||
 | 
					    "port": 443,
 | 
				
			||||||
 | 
					    "password": "lexn3tl@val!nk",
 | 
				
			||||||
 | 
					    "retryAmount": 1
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "host": "narco.buses.rocks",
 | 
				
			||||||
 | 
					    "port": 2269,
 | 
				
			||||||
 | 
					    "password": "glasshost1984",
 | 
				
			||||||
 | 
					    "retryAmount": 1
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -132,6 +132,17 @@
 | 
				
			|||||||
        "isStream": false,
 | 
					        "isStream": false,
 | 
				
			||||||
        "uri": "https://www.youtube.com/watch?v=vx2u5uUu3DE",
 | 
					        "uri": "https://www.youtube.com/watch?v=vx2u5uUu3DE",
 | 
				
			||||||
        "thumbnail": "https://img.youtube.com/vi/vx2u5uUu3DE/default.jpg"
 | 
					        "thumbnail": "https://img.youtube.com/vi/vx2u5uUu3DE/default.jpg"
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "track": "QAAAlwIAMllvdXNzb3UgTidEb3VyIC0gNyBTZWNvbmRzIChSYWRpbyBFZGl0KSBbQXVkaW8gSFFdAAtHb2xkZW5NdXNpYwAAAAAAA9hgAAtDaGlyZU5pcXhUbwABACtodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PUNoaXJlTmlxeFRvAAd5b3V0dWJlAAAAAAAAAAA=",
 | 
				
			||||||
 | 
					        "title": "Youssou N'Dour - 7 Seconds (Radio Edit) [Audio HQ]",
 | 
				
			||||||
 | 
					        "identifier": "ChireNiqxTo",
 | 
				
			||||||
 | 
					        "author": "GoldenMusic",
 | 
				
			||||||
 | 
					        "duration": 252000,
 | 
				
			||||||
 | 
					        "isSeekable": true,
 | 
				
			||||||
 | 
					        "isStream": false,
 | 
				
			||||||
 | 
					        "uri": "https://www.youtube.com/watch?v=ChireNiqxTo",
 | 
				
			||||||
 | 
					        "thumbnail": "https://img.youtube.com/vi/ChireNiqxTo/default.jpg"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "subsonics-web",
 | 
					  "name": "subsonics-web",
 | 
				
			||||||
  "author": "Raphix",
 | 
					  "author": "Raphix",
 | 
				
			||||||
  "version": "0.7.2",
 | 
					  "version": "0.7.3",
 | 
				
			||||||
  "nodemonConfig": {
 | 
					  "nodemonConfig": {
 | 
				
			||||||
    "ext": "js, html",
 | 
					    "ext": "js, html",
 | 
				
			||||||
    "ignore": [
 | 
					    "ignore": [
 | 
				
			||||||
@@ -29,7 +29,8 @@
 | 
				
			|||||||
  "scripts": {
 | 
					  "scripts": {
 | 
				
			||||||
    "start": "nodemon src/main.js",
 | 
					    "start": "nodemon src/main.js",
 | 
				
			||||||
    "dev": "set DEV=true& nodemon src/main.js",
 | 
					    "dev": "set DEV=true& nodemon src/main.js",
 | 
				
			||||||
    "stop": "ssh raphix@raphix.fr sudo -S -u gitlab-ci pm2 stop 'SubSonics - Bot Discord'"
 | 
					    "stop": "ssh raphix@raphix.fr sudo -S -u gitlab-ci pm2 stop 'SubSonics - Bot Discord'",
 | 
				
			||||||
 | 
					    "restart": "ssh raphix@raphix.fr sudo -S -u gitlab-ci pm2 start 'SubSonics - Bot Discord'"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "beta_on": false
 | 
					  "beta_on": false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -253,12 +253,21 @@ function startErelaManager(dlog, config) {
 | 
				
			|||||||
    // Emitted whenever a node connects
 | 
					    // Emitted whenever a node connects
 | 
				
			||||||
    client.manager.on("nodeConnect", node => {
 | 
					    client.manager.on("nodeConnect", node => {
 | 
				
			||||||
        elog.log(`Connecté au serveur Lavalink : "${node.options.identifier}"` )
 | 
					        elog.log(`Connecté au serveur Lavalink : "${node.options.identifier}"` )
 | 
				
			||||||
 | 
					        nodeFinder.setNodeState(node.options.identifier, true)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Emitted whenever a node encountered an error
 | 
					    // Emitted whenever a node encountered an error
 | 
				
			||||||
    client.manager.on("nodeError", (node, error) => {
 | 
					    client.manager.on("nodeError", (node, error) => {
 | 
				
			||||||
        elog.warn(`Node "${node.options.identifier}" encountered an error: ${error.message}.`)
 | 
					        elog.warn(`Node "${node.options.identifier}" encountered an error: ${error.message}.`)
 | 
				
			||||||
       
 | 
					        
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    client.manager.on("nodeDisconnect", (node) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        nodeFinder.setNodeState(node.options.identifier, false)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,12 @@
 | 
				
			|||||||
const { __glob } = require("./global-variables")
 | 
					const { __glob } = require("./global-variables")
 | 
				
			||||||
const { LogType } = require("../modules/sub-log")
 | 
					const { LogType } = require("../modules/sub-log")
 | 
				
			||||||
const fs = require("fs")
 | 
					const fs = require("fs")
 | 
				
			||||||
 | 
					const discord = require("./discord-bot")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const nlog = new LogType("Node-Finder")
 | 
					const nlog = new LogType("Node-Finder")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const nodesState = new Map()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports.getNodes = function () {
 | 
					module.exports.getNodes = function () {
 | 
				
			||||||
        nlog.step.init("find_nodes", "Récupération des nodes de la base de donnée")
 | 
					        nlog.step.init("find_nodes", "Récupération des nodes de la base de donnée")
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -13,9 +16,9 @@ module.exports.getNodes = function () {
 | 
				
			|||||||
                var nodes_data = JSON.parse(fs.readFileSync(__glob.NODES))
 | 
					                var nodes_data = JSON.parse(fs.readFileSync(__glob.NODES))
 | 
				
			||||||
                const nodes_array = new Array()
 | 
					                const nodes_array = new Array()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                for(node of nodes_data) {
 | 
					                for(var node of nodes_data) {
 | 
				
			||||||
                    nodes_array.push(node)
 | 
					                    nodes_array.push(node)
 | 
				
			||||||
 | 
					                    nodesState.set(node.host, false)
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                nlog.log("Récupération de " + nodes_array.length + " nodes dans la base de donnée !")
 | 
					                nlog.log("Récupération de " + nodes_array.length + " nodes dans la base de donnée !")
 | 
				
			||||||
@@ -45,6 +48,48 @@ module.exports.getNodes = function () {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports.getNodesData = function () {
 | 
				
			||||||
 | 
					    nlog.step.init("findu_nodes", "Récupération des nodes pour envoi d'informations!")
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if(fs.existsSync(__glob.NODES)) {
 | 
				
			||||||
 | 
					        try {  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var nodes_data = JSON.parse(fs.readFileSync(__glob.NODES))
 | 
				
			||||||
 | 
					            const nodes_array = new Array()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for(var node of nodes_data) {
 | 
				
			||||||
 | 
					                node.state = nodesState.get(node.host)
 | 
				
			||||||
 | 
					                nodes_array.push(node)
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            nlog.log("Récupération de " + nodes_array.length + " nodes pour envoi d'informations!")
 | 
				
			||||||
 | 
					            nlog.step.end("findu_nodes")
 | 
				
			||||||
 | 
					            return nodes_array
 | 
				
			||||||
 | 
					        } catch(error) {
 | 
				
			||||||
 | 
					            nlog.step.error("findu_nodes", error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        nlog.warn("Fichier de configuration introuvable !")
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            var nodes = {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					           
 | 
				
			||||||
 | 
					            fs.writeFileSync(__glob.NODES, JSON.stringify(nodes, null, 2))
 | 
				
			||||||
 | 
					            nlog.log("Création d'un fichier de base de donnée de nodes ! Redémarrage de l'application nécéssaire !")
 | 
				
			||||||
 | 
					            nlog.step.error("find_nodes", "Redémarrage requis pour lire la nouvelle base de donnée des nodes !")
 | 
				
			||||||
 | 
					            process.exit(0)
 | 
				
			||||||
 | 
					        } catch(error) {
 | 
				
			||||||
 | 
					            nlog.step.error("find_nodes", "Tentative de création du fichier de base de donnée nodes échoué !"  + error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports.addNodes = function (data) {
 | 
					module.exports.addNodes = function (data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    nlog.step.init("add_nodes", "Ajout d'un nouveau noeud dans la base de donnée de nodes : " + data.host)
 | 
					    nlog.step.init("add_nodes", "Ajout d'un nouveau noeud dans la base de donnée de nodes : " + data.host)
 | 
				
			||||||
@@ -59,6 +104,20 @@ module.exports.addNodes = function (data) {
 | 
				
			|||||||
           
 | 
					           
 | 
				
			||||||
            nlog.step.end("add_nodes")
 | 
					            nlog.step.end("add_nodes")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const client = discord.getClient()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(client.manager) {
 | 
				
			||||||
 | 
					                const nodesPresent = client.manager.nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(!nodesPresent.get(data.host)) {
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    client.manager.createNode(data)
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                client.manager.nodes.get(data.host).connect()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          
 | 
					          
 | 
				
			||||||
        } catch(error) {
 | 
					        } catch(error) {
 | 
				
			||||||
            nlog.step.error("add_nodes", error)
 | 
					            nlog.step.error("add_nodes", error)
 | 
				
			||||||
@@ -83,3 +142,107 @@ module.exports.addNodes = function (data) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports.deleteNode = function (data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    nlog.step.init("deleteNodes", "Supression d'un noeud dans la base de donnée de nodes : " + data.host)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    if(fs.existsSync(__glob.NODES)) {
 | 
				
			||||||
 | 
					        try {  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var nodes_data = JSON.parse(fs.readFileSync(__glob.NODES))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var nodeIndex = -1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            for(var node of nodes_data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(node.host == data.host) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    nodeIndex = nodes_data.indexOf(node)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            nodes_data.splice(nodeIndex, 1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const client = discord.getClient()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(client.manager) {
 | 
				
			||||||
 | 
					                const nodesPresent = client.manager.nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(nodesPresent.get(data.host)) {
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    client.manager.destroyNode(data.host)
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            fs.writeFileSync(__glob.NODES, JSON.stringify(nodes_data, null, 2))
 | 
				
			||||||
 | 
					           
 | 
				
			||||||
 | 
					            nlog.step.end("deleteNodes")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          
 | 
				
			||||||
 | 
					        } catch(error) {
 | 
				
			||||||
 | 
					            nlog.step.error("deleteNodes", error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        nlog.warn("Fichier de configuration introuvable !")
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            var nodes = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					           
 | 
				
			||||||
 | 
					            fs.writeFileSync(__glob.NODES, JSON.stringify(nodes, null, 2))
 | 
				
			||||||
 | 
					            nlog.log("Création d'un fichier de base de donnée de nodes ! Redémarrage de l'application nécéssaire !")
 | 
				
			||||||
 | 
					            nlog.step.error("deleteNodes", "Redémarrage requis pour lire la nouvelle base de donnée des nodes !")
 | 
				
			||||||
 | 
					            process.exit(0)
 | 
				
			||||||
 | 
					        } catch(error) {
 | 
				
			||||||
 | 
					            nlog.step.error("deleteNodes", "Tentative de création du fichier de nodes échoué !"  + error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports.reloadNode = function (data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const client = discord.getClient()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(client.manager) {
 | 
				
			||||||
 | 
					        const nodesPresent = client.manager.nodes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if(nodesPresent.get(data.host)) {
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            client.manager.destroyNode(data.host)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        nlog.log("Redémarrage de la node : " + data.host)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        client.manager.createNode(data)
 | 
				
			||||||
 | 
					        client.manager.nodes.get(data.host).connect()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Ajout de l'état des nodes
 | 
				
			||||||
 | 
					 * @param {string} node
 | 
				
			||||||
 | 
					 * @param {boolean} state 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports.setNodeState = function(node, state) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    nodesState.set(node, state)
 | 
				
			||||||
 | 
					    process.emit("UPDATE_NODES")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports.getNodesStates = function() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return nodesState
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,9 +5,10 @@ const log = require("./sub-log");
 | 
				
			|||||||
const auth = require("./sub-auth");
 | 
					const auth = require("./sub-auth");
 | 
				
			||||||
const cook = require("cookie")
 | 
					const cook = require("cookie")
 | 
				
			||||||
const wlog = new LogType("Web")
 | 
					const wlog = new LogType("Web")
 | 
				
			||||||
const subplayer = require(__glob.SUBPLAYER);
 | 
					const subplayer = require('./sub-player');
 | 
				
			||||||
const { List } = require("./sub-list")
 | 
					const { List } = require("./sub-list")
 | 
				
			||||||
const subplaylist = require("./sub-playlist")
 | 
					const subplaylist = require("./sub-playlist")
 | 
				
			||||||
 | 
					const nodesfinder = require("./nodes-finder")
 | 
				
			||||||
var fs = require("fs")
 | 
					var fs = require("fs")
 | 
				
			||||||
var path = require("path")
 | 
					var path = require("path")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -140,6 +141,19 @@ function IOConnection(io) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    const alog = log.getInstance("Authentification")
 | 
					    const alog = log.getInstance("Authentification")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    process.on("UPDATE_NODES", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if(io) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            const data = nodesfinder.getNodesData()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					            io.sockets.emit("ALWAYS/NODES", data)
 | 
				
			||||||
 | 
					        }    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    process.on("MUSIC_UPDATE_STATE", () => {
 | 
					    process.on("MUSIC_UPDATE_STATE", () => {
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        const data = subplayer.updateMusicState()
 | 
					        const data = subplayer.updateMusicState()
 | 
				
			||||||
@@ -317,6 +331,14 @@ function IOConnection(io) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        GetRequest(io, socket, "NODES", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            process.emit("UPDATE_NODES")
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -336,8 +358,100 @@ function IOConnection(io) {
 | 
				
			|||||||
        })
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // SEND REQUEST
 | 
					        // SEND REQUEST
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        socket.on("SEND/NODES/ADD", (data) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var cookies = socket.handshake.headers.cookie
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(cookies) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                cookies = cook.parse(cookies)
 | 
				
			||||||
 | 
					                var token = cookies.token
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const user = auth.getUser(token)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(user.admin == true) {
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    nodesfinder.addNodes(data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    socket.emit("ANSWER/SEND/NODES/ADD", "OK")
 | 
				
			||||||
 | 
					                    process.emit("UPDATE_NODES")
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                io.emit("ANSWER/SEND/USERS/ADD", {"error":"TOKEN_NOT_FINDED"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					           
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        socket.on("SEND/NODES/DELETE", (data) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var cookies = socket.handshake.headers.cookie
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(cookies) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                cookies = cook.parse(cookies)
 | 
				
			||||||
 | 
					                var token = cookies.token
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const user = auth.getUser(token)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(user.admin == true) {
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    nodesfinder.deleteNode(data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    socket.emit("ANSWER/SEND/NODES/DELETE", "OK")
 | 
				
			||||||
 | 
					                    process.emit("UPDATE_NODES")
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                io.emit("ANSWER/SEND/USERS/ADMIN", {"error":"TOKEN_NOT_FINDED"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					           
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        socket.on("SEND/NODES/RELOAD", (data) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var cookies = socket.handshake.headers.cookie
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(cookies) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                cookies = cook.parse(cookies)
 | 
				
			||||||
 | 
					                var token = cookies.token
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                const user = auth.getUser(token)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if(user.admin == true) {
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                    nodesfinder.reloadNode(data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    socket.emit("ANSWER/SEND/NODES/RELOAD", "OK")
 | 
				
			||||||
 | 
					                    process.emit("UPDATE_NODES")
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                io.emit("ANSWER/SEND/NODES/RELOAD", {"error":"TOKEN_NOT_FINDED"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					           
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        socket.on("SEND/USERS/ADMIN", (data) => {
 | 
					        socket.on("SEND/USERS/ADMIN", (data) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					var wasOnNodes = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
settingsBtn.addEventListener("click", () => {
 | 
					settingsBtn.addEventListener("click", () => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    mainView.innerHTML = `
 | 
					    mainView.innerHTML = `
 | 
				
			||||||
@@ -22,15 +24,17 @@ settingsBtn.addEventListener("click", () => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    settings_logs.addEventListener("click", () => {
 | 
					    settings_logs.addEventListener("click", () => {
 | 
				
			||||||
        loadLogs()
 | 
					        loadLogs()
 | 
				
			||||||
 | 
					        wasOnNodes = false
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    settings_connexion.addEventListener("click", () => {
 | 
					    settings_connexion.addEventListener("click", () => {
 | 
				
			||||||
        loadConnexion()
 | 
					        loadConnexion()
 | 
				
			||||||
 | 
					        wasOnNodes = true
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    settings_users.addEventListener("click", () => {
 | 
					    settings_users.addEventListener("click", () => {
 | 
				
			||||||
        loadUsers()
 | 
					        loadUsers()
 | 
				
			||||||
        
 | 
					        wasOnNodes = false
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    settings_logs.style.color = "white"
 | 
					    settings_logs.style.color = "white"
 | 
				
			||||||
@@ -38,19 +42,13 @@ settingsBtn.addEventListener("click", () => {
 | 
				
			|||||||
    function loadUsers() {
 | 
					    function loadUsers() {
 | 
				
			||||||
       
 | 
					       
 | 
				
			||||||
        socket.emit("GET/USERS")
 | 
					        socket.emit("GET/USERS")
 | 
				
			||||||
       
 | 
					    
 | 
				
			||||||
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
        
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function loadLogs() {
 | 
					    function loadLogs() {
 | 
				
			||||||
        settings_content.innerHTML = `
 | 
					        settings_content.innerHTML = `
 | 
				
			||||||
            <select id="logs_selection">
 | 
					            <select id="logs_selection">
 | 
				
			||||||
                <option>Test</option>
 | 
					                <option>NOT CONNECTED</option>
 | 
				
			||||||
                <option>Test</option>
 | 
					 | 
				
			||||||
                <option>Test</option>
 | 
					 | 
				
			||||||
            </select>
 | 
					            </select>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <div id="logs_content" class="logs_content">
 | 
					            <div id="logs_content" class="logs_content">
 | 
				
			||||||
@@ -144,9 +142,9 @@ settingsBtn.addEventListener("click", () => {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    function loadConnexion() {
 | 
					    function loadConnexion() {
 | 
				
			||||||
        settings_content.innerHTML = `
 | 
					        
 | 
				
			||||||
            <p>Connexions</p>
 | 
					
 | 
				
			||||||
        `
 | 
					        socket.emit("GET/NODES")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -168,8 +166,6 @@ settingsBtn.addEventListener("click", () => {
 | 
				
			|||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
socket.on("ALWAYS/USERS",(data) => {
 | 
					socket.on("ALWAYS/USERS",(data) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const settings_content = document.getElementById("settings_content")
 | 
					    const settings_content = document.getElementById("settings_content")
 | 
				
			||||||
@@ -236,4 +232,210 @@ socket.on("ALWAYS/USERS",(data) => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					socket.on("ALWAYS/NODES",(data) => {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /*settings_content.innerHTML = `
 | 
				
			||||||
 | 
					        <div style='width: 100%; text-align: right;'>
 | 
				
			||||||
 | 
					            <button class='primary'><i class='fa fa-plus'></i></button>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <hr>
 | 
				
			||||||
 | 
					        <div class='connexion_div'>
 | 
				
			||||||
 | 
					            <div class='connexion_info'>
 | 
				
			||||||
 | 
					                <div class='connexion_logo'>
 | 
				
			||||||
 | 
					                    <i class='fa fa-wifi'></i>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <p class='connexion_title'>lava2.horizxon.studio</p>
 | 
				
			||||||
 | 
					                <p class='connexion_logo_on'>Connecté</p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div>
 | 
				
			||||||
 | 
					                <button class='list_upSong'><i class="fa-solid fa-rotate-right"></i></button>
 | 
				
			||||||
 | 
					                <button class='list_delete'><i class='fa fa-trash'></i></button>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div class='connexion_div'>
 | 
				
			||||||
 | 
					            <div class='connexion_info'>
 | 
				
			||||||
 | 
					                <div class='connexion_logo'>
 | 
				
			||||||
 | 
					                    <i class='fa fa-wifi'></i>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <p class='connexion_title'>lava2.horizxon.studio</p>
 | 
				
			||||||
 | 
					                <p class='connexion_logo_on'>Connecté</p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div>
 | 
				
			||||||
 | 
					                <button class='list_upSong'><i class="fa-solid fa-rotate-right"></i></button>
 | 
				
			||||||
 | 
					                <button class='list_delete'><i class='fa fa-trash'></i></button>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					            <div class='connexion_div'>
 | 
				
			||||||
 | 
					            <div class='connexion_info'>
 | 
				
			||||||
 | 
					                <div class='connexion_logo'>
 | 
				
			||||||
 | 
					                    <i class='fa fa-wifi'></i>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <p class='connexion_title'>lava2.horizxon.studio</p>
 | 
				
			||||||
 | 
					                <p class='connexion_logo_off'>Déconnecté</p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div>
 | 
				
			||||||
 | 
					                <button class='list_upSong'><i class="fa-solid fa-rotate-right"></i></button>
 | 
				
			||||||
 | 
					                <button class='list_delete'><i class='fa fa-trash'></i></button>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					            <div class='connexion_div'>
 | 
				
			||||||
 | 
					            <div class='connexion_info'>
 | 
				
			||||||
 | 
					                <div class='connexion_logo'>
 | 
				
			||||||
 | 
					                    <i class='fa fa-wifi'></i>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <p class='connexion_title'>lava2.horizxon.studio</p>
 | 
				
			||||||
 | 
					                <p class='connexion_logo_off'>Déconnecté</p>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <div>
 | 
				
			||||||
 | 
					                <button class='list_upSong'><i class="fa-solid fa-rotate-right"></i></button>
 | 
				
			||||||
 | 
					                <button class='list_delete'><i class='fa fa-trash'></i></button>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        `*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    const settings_content = document.getElementById("settings_content")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(settings_content && wasOnNodes) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var dataToPush = new Array()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dataToPush.push(`<div style='width: 100%; text-align: right;'>
 | 
				
			||||||
 | 
					        <button id='an_add' class='primary'><i class='fa fa-plus'></i></button></div><hr>`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dataToPush.push(`
 | 
				
			||||||
 | 
					        <dialog class="report_dialog" id="an_dialog">
 | 
				
			||||||
 | 
					            <div class="rlineclose">
 | 
				
			||||||
 | 
					                <p class="rtitle"><i class="fa fa-wifi"></i> Ajout d'une connexion Lavalink</p>
 | 
				
			||||||
 | 
					                <button id="an_close" class="report_close"><i class="fa-solid fa-xmark"></i></button>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					            <p id='an_info' style='text-align: center; color: red;'></p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <div class="rcontent">
 | 
				
			||||||
 | 
					                <p class="runder">Host</p>
 | 
				
			||||||
 | 
					                <input type='text' id="an_host">
 | 
				
			||||||
 | 
					                <p class="runder">Port</p>
 | 
				
			||||||
 | 
					                <input type='number' id="an_port">
 | 
				
			||||||
 | 
					                <p class="runder">Mot de passe</p>
 | 
				
			||||||
 | 
					                <input type='text' id="an_password">
 | 
				
			||||||
 | 
					                <button id="an_send" class="rsend"><i class="fa-solid fa-plus"></i> Ajouter</button>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					        </dialog>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        `)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        console.log(data)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        for(var node of data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            var stateInput = "<p class='connexion_logo_off'>Déconnecté</p>"
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            if(node.state == true) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                stateInput = "<p class='connexion_logo_on'>Connecté</p>"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            dataToPush.push(`  
 | 
				
			||||||
 | 
					            <div class='connexion_div'>
 | 
				
			||||||
 | 
					                <div class='connexion_info'>
 | 
				
			||||||
 | 
					                    <div class='connexion_logo'>
 | 
				
			||||||
 | 
					                        <i class='fa fa-wifi'></i>
 | 
				
			||||||
 | 
					                    </div>
 | 
				
			||||||
 | 
					                    <p class='connexion_title'>${node.host}</p>
 | 
				
			||||||
 | 
					                    ${stateInput}
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					                <div>
 | 
				
			||||||
 | 
					                    <button id='${data.indexOf(node)}_reload' class='list_upSong'><i class="fa-solid fa-rotate-right"></i></button>
 | 
				
			||||||
 | 
					                    <button id='${data.indexOf(node)}_delete' class='list_delete'><i class='fa fa-trash'></i></button>
 | 
				
			||||||
 | 
					                </div>
 | 
				
			||||||
 | 
					            </div>`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        settings_content.innerHTML = dataToPush.join("")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        const an_dialog = document.getElementById("an_dialog")
 | 
				
			||||||
 | 
					        const an_close = document.getElementById("an_close")
 | 
				
			||||||
 | 
					        const an_add = document.getElementById("an_add")
 | 
				
			||||||
 | 
					        const an_host = document.getElementById("an_host")
 | 
				
			||||||
 | 
					        const an_port = document.getElementById("an_port")
 | 
				
			||||||
 | 
					        const an_password = document.getElementById("an_password")
 | 
				
			||||||
 | 
					        const an_send = document.getElementById("an_send")
 | 
				
			||||||
 | 
					        const an_info = document.getElementById("an_info")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        an_add.addEventListener("click", () => {
 | 
				
			||||||
 | 
					            an_info.innerHTML = ""
 | 
				
			||||||
 | 
					            an_dialog.showModal()
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        an_close.addEventListener("click", () => {
 | 
				
			||||||
 | 
					            an_info.innerHTML = ""
 | 
				
			||||||
 | 
					            an_dialog.close()
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        an_send.addEventListener("click", () => {
 | 
				
			||||||
 | 
					            an_info.innerHTML = ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if(an_host.value != '' && an_port.value != '' && an_password.value != '' ) {
 | 
				
			||||||
 | 
					               
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					                var data = {
 | 
				
			||||||
 | 
					                    "host":an_host.value.replace(" ", ""),
 | 
				
			||||||
 | 
					                    'port': parseInt(an_port.value),
 | 
				
			||||||
 | 
					                    "password": an_password.value,
 | 
				
			||||||
 | 
					                    "retryAmount": 1
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					                send("NODES/ADD", data)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					                an_dialog.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                an_info.innerHTML = "Remplissez toutes les cases !"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for(var node of data) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            let reloadBtn = document.getElementById(data.indexOf(node) + "_reload")
 | 
				
			||||||
 | 
					            let deleteBtn = document.getElementById(data.indexOf(node) + "_delete") 
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            reloadBtn.addEventListener("click", () => {
 | 
				
			||||||
 | 
					                send("NODES/RELOAD", data[reloadBtn.id.replace("_reload", "")])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            deleteBtn.addEventListener("click", () => {
 | 
				
			||||||
 | 
					                console.log(deleteBtn)
 | 
				
			||||||
 | 
					                console.log(data[reloadBtn.id.replace("_reload", "")])
 | 
				
			||||||
 | 
					                send("NODES/DELETE", data[reloadBtn.id.replace("_reload", "")])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					         
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
@@ -1070,7 +1070,63 @@ p {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
.set_user_info img {
 | 
					.set_user_info img {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    width: 3.5vw;
 | 
					    width: 3vw;
 | 
				
			||||||
    margin-right: 10%;
 | 
					    margin-right: 10%;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.connexion_div {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: space-between;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  text-align: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.connexion_info {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  width: 20%;
 | 
				
			||||||
 | 
					  gap: 5%;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.connexion_title {
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.connexion_logo {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  font-size: 200%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.connexion_logo_on {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					  font-family: 'Gunship', sans-serif;
 | 
				
			||||||
 | 
					  font-size: 10px;
 | 
				
			||||||
 | 
					  border-radius: 10px;
 | 
				
			||||||
 | 
					  background-color: #287e00;
 | 
				
			||||||
 | 
					  height: 10%;
 | 
				
			||||||
 | 
					  padding: 2%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.connexion_logo_off {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  display: flex;
 | 
				
			||||||
 | 
					  justify-content: center;
 | 
				
			||||||
 | 
					  align-items: center;
 | 
				
			||||||
 | 
					  font-family: 'Gunship', sans-serif;
 | 
				
			||||||
 | 
					  font-size: 10px;
 | 
				
			||||||
 | 
					  border-radius: 10px;
 | 
				
			||||||
 | 
					  background-color: #7e0000;
 | 
				
			||||||
 | 
					  height: 10%;
 | 
				
			||||||
 | 
					  padding: 2%;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user