Compare commits
2 Commits
f7592bf0cb
...
66c9e1fa32
| Author | SHA1 | Date | |
|---|---|---|---|
| 66c9e1fa32 | |||
| bed036ea2c |
2
.env
2
.env
@ -14,7 +14,7 @@ MINECRAFT_SERVER_IP=valloic.dev:25565
|
||||
MINECRAFT_WHITELIST_PATH=/opt/minecraft/server/whitelist.json
|
||||
|
||||
USE_SCREEN=true
|
||||
SERVER_JAR=fabric-server.jar
|
||||
SERVER_JAR=fabric-server-launch.jar
|
||||
JAVA_ARGS=-Xmx2G -Xms1G
|
||||
USE_SCREEN=true
|
||||
MINECRAFT_SERVER_PATH=/opt/minecraft/server
|
||||
32
.env.example
32
.env.example
@ -1,32 +0,0 @@
|
||||
# Configuration du bot Discord
|
||||
DISCORD_TOKEN=votre_token_discord
|
||||
CLIENT_ID=votre_client_id
|
||||
GUILD_ID=votre_guild_id
|
||||
OWNER_ID=votre_user_id
|
||||
|
||||
# Configuration des rôles et channels
|
||||
ROLE_WAITER_ID=id_du_role_attente
|
||||
ROLE_VERIFIED_ID=id_du_role_verifie
|
||||
CHANNEL_REQUEST_ACCESS_ID=id_channel_demandes
|
||||
CHANNEL_LOGS_ID=id_channel_logs
|
||||
|
||||
# Configuration du serveur Minecraft
|
||||
MINECRAFT_SERVER_HOST=votre_serveur.com
|
||||
MINECRAFT_SERVER_PORT=25565
|
||||
MINECRAFT_WHITELIST_PATH=/chemin/vers/whitelist.json
|
||||
MINECRAFT_SERVICE_NAME=minecraft
|
||||
|
||||
# Configuration du mode serveur
|
||||
USE_SCREEN=true
|
||||
# true = utilise screen (plus flexible, commandes directes)
|
||||
# false = utilise systemctl (plus robuste, redémarrage pour whitelist)
|
||||
|
||||
# Configuration des chemins serveur (pour VPS)
|
||||
MINECRAFT_SERVER_PATH=/opt/minecraft/server
|
||||
MINECRAFT_BACKUP_PATH=/opt/minecraft/backups
|
||||
|
||||
# Configuration Java et serveur
|
||||
SERVER_JAR=fabric-server.jar
|
||||
# Autres options: server.jar, paper.jar, spigot.jar, forge-server.jar
|
||||
JAVA_ARGS=-Xmx2G -Xms1G
|
||||
# Arguments Java personnalisés
|
||||
@ -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}`
|
||||
);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user