const express = require('express'); const fs = require('fs'); const path = require('path'); const router = express.Router(); const fileUpload = require('express-fileupload'); const authMiddleware = require('../../../Middlewares/authMiddleware'); const { loggers } = require('winston'); const ncp = require('ncp'); const util = require('util'); const ncpAsync = util.promisify(ncp.ncp); const configFile = fs.readFileSync(path.join(__dirname, '../../../data', 'setup.json'), 'utf-8') const config = JSON.parse(configFile); const bodyParser = require('body-parser'); const crypto = require('crypto'); const os = require('os'); const { getUserData, getSetupData } = require('../../../Middlewares/watcherMiddleware'); const { logger, logRequestInfo, ErrorLogger, authLogger } = require('../../../config/logs'); let setupData = getSetupData(); let userData = getUserData(); router.use(bodyParser.json()); const User = require('../../../data/user.json'); const setup = JSON.parse(fs.readFileSync(path.join(__dirname, '../../../data', 'setup.json'), 'utf-8')); router.get('/', authMiddleware, async (req, res) => { try { const data = fs.readFileSync(path.join(__dirname, '../../../data', 'user.json'), 'utf8'); const users = JSON.parse(data); const user = users.find(user => user.name === req.user.name); if (!user || user.role !== 'admin') { console.log('Access denied'); return res.status(403).json({ message: "You do not have the necessary rights to access this resource." }); } // Calculer les stats pour le dashboard admin let foldersCount = 0; let totalSize = 0; try { const fileInfoData = fs.readFileSync(path.join(__dirname, '../../../data', 'file_info.json'), 'utf8'); const fileInfo = JSON.parse(fileInfoData); // Compter les dossiers users.forEach(u => { const userFolderPath = path.join(__dirname, '../../../cdn-files', u.name); if (fs.existsSync(userFolderPath)) { const folders = fs.readdirSync(userFolderPath, { withFileTypes: true }) .filter(dirent => dirent.isDirectory()); foldersCount += folders.length; } }); // Calculer l'espace total utilisé totalSize = fileInfo.reduce((sum, item) => sum + (item.size || 0), 0); } catch (err) { console.warn('Could not read file_info.json:', err.message); } // Stats système const uptime = process.uptime(); const memoryUsage = process.memoryUsage(); const cpuUsage = process.cpuUsage(); res.render('paramAdmin', { user: user, users: User, setup: setup, stats: { foldersCount, totalSize, uptime, memoryUsage: Math.round(memoryUsage.heapUsed / 1024 / 1024), // MB cpuUsage: Math.round((cpuUsage.user + cpuUsage.system) / 1000) // ms } }); } catch (err) { console.error(err); res.status(500).send('Server Error'); } }); module.exports = router;