Version 0.7.3 - Ajout de la modification des nodes
This commit is contained in:
parent
8e167da16f
commit
b0e61fc7f8
@ -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%;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user