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) => {
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user