From 66c9e1fa320c879efae121aa3ea691aeac5220a2 Mon Sep 17 00:00:00 2001 From: cut0x Date: Fri, 24 Oct 2025 07:25:08 +0200 Subject: [PATCH] Edit method of screen use on serverControlManager.js --- src/utils/serverControlManager.js | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/utils/serverControlManager.js b/src/utils/serverControlManager.js index c14b786..f3b19d7 100644 --- a/src/utils/serverControlManager.js +++ b/src/utils/serverControlManager.js @@ -53,13 +53,26 @@ class ServerControlManager { } } + async getMinecraftScreenName() { + // Cherche la session screen qui finit par .minecraft + const result = await this.executeCommand('screen -ls | grep \.minecraft', 'Recherche session screen Minecraft'); + if (result.success && result.output.trim() !== '') { + // Exemple de sortie : "1294388.minecraft (10/21/25 22:02:21) (Detached)" + const match = result.output.trim().match(/([0-9]+\.minecraft)/); + if (match) return match[1]; + } + // Fallback sur le nom par dĂ©faut + return this.screenName; + } + async reloadWhitelist() { console.log('🔄 Rechargement de la whitelist...'); if (this.useScreen) { - // MĂ©thode screen : commande directe + // Utiliser le nom dynamique de la session screen + const screenSession = await this.getMinecraftScreenName(); const result = await this.executeCommand( - `sudo -u ${this.serverUser} screen -S ${this.screenName} -p 0 -X stuff "whitelist reload\n"`, + `sudo -u ${this.serverUser} screen -S ${screenSession} -p 0 -X stuff "whitelist reload\n"`, 'Rechargement whitelist via commande' ); @@ -192,9 +205,11 @@ class ServerControlManager { async stopServer() { if (this.useScreen) { + // Utiliser le nom dynamique de la session screen + const screenSession = await this.getMinecraftScreenName(); // ArrĂȘter proprement avec la commande stop const stopResult = await this.executeCommand( - `sudo -u ${this.serverUser} screen -S ${this.screenName} -p 0 -X stuff "stop\n"`, + `sudo -u ${this.serverUser} screen -S ${screenSession} -p 0 -X stuff "stop\n"`, 'ArrĂȘt propre du serveur' ); @@ -202,7 +217,7 @@ class ServerControlManager { await new Promise(resolve => setTimeout(resolve, 5000)); const killResult = await this.executeCommand( - `sudo -u ${this.serverUser} screen -S ${this.screenName} -X quit`, + `sudo -u ${this.serverUser} screen -S ${screenSession} -X quit`, 'Fermeture session screen' ); @@ -264,9 +279,10 @@ class ServerControlManager { async sendServerCommand(command) { if (this.useScreen) { - // Envoyer directement via screen + // Utiliser le nom dynamique de la session screen + const screenSession = await this.getMinecraftScreenName(); const result = await this.executeCommand( - `sudo -u ${this.serverUser} screen -S ${this.screenName} -p 0 -X stuff "${command}\n"`, + `sudo -u ${this.serverUser} screen -S ${screenSession} -p 0 -X stuff "${command}\n"`, `Envoi commande: ${command}` );