- Remplacer fallback SERVER_DIR de '/home/innotex/Documents/...' à '/mc-server' - Remplacer RCON_HOST de 'localhost' à '172.17.0.1' (Docker bridge gateway) - 8 fichiers corrigés: server.js + 7 routes - Localhost n'est pas accessible depuis Docker vers l'host - 172.17.0.1 est la gateway Docker qui permet au container d'accéder l'host
119 lines
3.2 KiB
JavaScript
119 lines
3.2 KiB
JavaScript
const express = require('express');
|
|
const fs = require('fs-extra');
|
|
const path = require('path');
|
|
|
|
const router = express.Router();
|
|
const SERVER_DIR = process.env.SERVER_DIR || '/mc-server';
|
|
|
|
function isAuthenticated(req, res, next) {
|
|
if (req.session.user) {
|
|
next();
|
|
} else {
|
|
res.status(401).json({ error: 'Non authentifié' });
|
|
}
|
|
}
|
|
|
|
router.get('/', isAuthenticated, async (req, res) => {
|
|
try {
|
|
const serverPropsFile = path.join(SERVER_DIR, 'server.properties');
|
|
|
|
if (!await fs.pathExists(serverPropsFile)) {
|
|
return res.status(404).json({ error: 'server.properties non trouvé' });
|
|
}
|
|
|
|
const content = await fs.readFile(serverPropsFile, 'utf-8');
|
|
const lines = content.split('\n');
|
|
const properties = {};
|
|
|
|
lines.forEach(line => {
|
|
if (line && !line.startsWith('#')) {
|
|
const [key, ...valueParts] = line.split('=');
|
|
properties[key.trim()] = valueParts.join('=').trim();
|
|
}
|
|
});
|
|
|
|
res.json({ properties });
|
|
|
|
} catch (error) {
|
|
console.error('Erreur serveur:', error);
|
|
res.status(500).json({ error: 'Erreur serveur' });
|
|
}
|
|
});
|
|
|
|
router.post('/update', isAuthenticated, async (req, res) => {
|
|
try {
|
|
const { property, value } = req.body;
|
|
|
|
if (!property || value === undefined) {
|
|
return res.status(400).json({ error: 'Données manquantes' });
|
|
}
|
|
|
|
const serverPropsFile = path.join(SERVER_DIR, 'server.properties');
|
|
let content = await fs.readFile(serverPropsFile, 'utf-8');
|
|
const lines = content.split('\n');
|
|
|
|
let found = false;
|
|
const newContent = lines.map(line => {
|
|
if (line.startsWith(property + '=')) {
|
|
found = true;
|
|
return `${property}=${value}`;
|
|
}
|
|
return line;
|
|
}).join('\n');
|
|
|
|
if (!found) {
|
|
content = newContent + '\n' + property + '=' + value;
|
|
} else {
|
|
content = newContent;
|
|
}
|
|
|
|
await fs.writeFile(serverPropsFile, content, 'utf-8');
|
|
res.json({ message: 'Propriété mise à jour' });
|
|
|
|
} catch (error) {
|
|
console.error('Erreur mise à jour:', error);
|
|
res.status(500).json({ error: 'Erreur serveur' });
|
|
}
|
|
});
|
|
|
|
router.post('/settings', isAuthenticated, async (req, res) => {
|
|
try {
|
|
const { key, value } = req.body;
|
|
|
|
if (!key || value === undefined) {
|
|
return res.status(400).json({ error: 'Données manquantes' });
|
|
}
|
|
|
|
const serverPropsFile = path.join(SERVER_DIR, 'server.properties');
|
|
let content = await fs.readFile(serverPropsFile, 'utf-8');
|
|
const lines = content.split('\n');
|
|
|
|
let found = false;
|
|
const newContent = lines.map(line => {
|
|
if (line.trim() && !line.startsWith('#')) {
|
|
const [lineKey] = line.split('=');
|
|
if (lineKey.trim() === key) {
|
|
found = true;
|
|
return `${key}=${value}`;
|
|
}
|
|
}
|
|
return line;
|
|
}).join('\n');
|
|
|
|
if (!found) {
|
|
content = newContent + '\n' + key + '=' + value;
|
|
} else {
|
|
content = newContent;
|
|
}
|
|
|
|
await fs.writeFile(serverPropsFile, content, 'utf-8');
|
|
res.json({ message: 'Paramètre mis à jour' });
|
|
|
|
} catch (error) {
|
|
console.error('Erreur modification paramètre:', error);
|
|
res.status(500).json({ error: 'Erreur serveur' });
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|