Version 0.7.3 - Ajout de la modification des nodes
This commit is contained in:
		@@ -253,12 +253,21 @@ function startErelaManager(dlog, config) {
 | 
			
		||||
    // Emitted whenever a node connects
 | 
			
		||||
    client.manager.on("nodeConnect", node => {
 | 
			
		||||
        elog.log(`Connecté au serveur Lavalink : "${node.options.identifier}"` )
 | 
			
		||||
        nodeFinder.setNodeState(node.options.identifier, true)
 | 
			
		||||
    
 | 
			
		||||
   
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    // Emitted whenever a node encountered an error
 | 
			
		||||
    client.manager.on("nodeError", (node, error) => {
 | 
			
		||||
        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 { LogType } = require("../modules/sub-log")
 | 
			
		||||
const fs = require("fs")
 | 
			
		||||
const discord = require("./discord-bot")
 | 
			
		||||
 | 
			
		||||
const nlog = new LogType("Node-Finder")
 | 
			
		||||
 | 
			
		||||
const nodesState = new Map()
 | 
			
		||||
 | 
			
		||||
module.exports.getNodes = function () {
 | 
			
		||||
        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))
 | 
			
		||||
                const nodes_array = new Array()
 | 
			
		||||
 | 
			
		||||
                for(node of nodes_data) {
 | 
			
		||||
                for(var node of nodes_data) {
 | 
			
		||||
                    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 !")
 | 
			
		||||
@@ -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) {
 | 
			
		||||
 | 
			
		||||
    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")
 | 
			
		||||
 | 
			
		||||
            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) {
 | 
			
		||||
            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 cook = require("cookie")
 | 
			
		||||
const wlog = new LogType("Web")
 | 
			
		||||
const subplayer = require(__glob.SUBPLAYER);
 | 
			
		||||
const subplayer = require('./sub-player');
 | 
			
		||||
const { List } = require("./sub-list")
 | 
			
		||||
const subplaylist = require("./sub-playlist")
 | 
			
		||||
const nodesfinder = require("./nodes-finder")
 | 
			
		||||
var fs = require("fs")
 | 
			
		||||
var path = require("path")
 | 
			
		||||
 | 
			
		||||
@@ -140,6 +141,19 @@ function IOConnection(io) {
 | 
			
		||||
 | 
			
		||||
    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", () => {
 | 
			
		||||
    
 | 
			
		||||
        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
 | 
			
		||||
 | 
			
		||||
        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) => {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
var wasOnNodes = false
 | 
			
		||||
 | 
			
		||||
settingsBtn.addEventListener("click", () => {
 | 
			
		||||
 | 
			
		||||
    mainView.innerHTML = `
 | 
			
		||||
@@ -22,15 +24,17 @@ settingsBtn.addEventListener("click", () => {
 | 
			
		||||
 | 
			
		||||
    settings_logs.addEventListener("click", () => {
 | 
			
		||||
        loadLogs()
 | 
			
		||||
        wasOnNodes = false
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    settings_connexion.addEventListener("click", () => {
 | 
			
		||||
        loadConnexion()
 | 
			
		||||
        wasOnNodes = true
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    settings_users.addEventListener("click", () => {
 | 
			
		||||
        loadUsers()
 | 
			
		||||
        
 | 
			
		||||
        wasOnNodes = false
 | 
			
		||||
    })
 | 
			
		||||
 | 
			
		||||
    settings_logs.style.color = "white"
 | 
			
		||||
@@ -38,19 +42,13 @@ settingsBtn.addEventListener("click", () => {
 | 
			
		||||
    function loadUsers() {
 | 
			
		||||
       
 | 
			
		||||
        socket.emit("GET/USERS")
 | 
			
		||||
       
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
    
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function loadLogs() {
 | 
			
		||||
        settings_content.innerHTML = `
 | 
			
		||||
            <select id="logs_selection">
 | 
			
		||||
                <option>Test</option>
 | 
			
		||||
                <option>Test</option>
 | 
			
		||||
                <option>Test</option>
 | 
			
		||||
                <option>NOT CONNECTED</option>
 | 
			
		||||
            </select>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div id="logs_content" class="logs_content">
 | 
			
		||||
@@ -144,9 +142,9 @@ settingsBtn.addEventListener("click", () => {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    function loadConnexion() {
 | 
			
		||||
        settings_content.innerHTML = `
 | 
			
		||||
            <p>Connexions</p>
 | 
			
		||||
        `
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        socket.emit("GET/NODES")
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -168,8 +166,6 @@ settingsBtn.addEventListener("click", () => {
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
socket.on("ALWAYS/USERS",(data) => {
 | 
			
		||||
 | 
			
		||||
    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 {
 | 
			
		||||
 | 
			
		||||
    width: 3.5vw;
 | 
			
		||||
    width: 3vw;
 | 
			
		||||
    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