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;