diff --git a/Dockerfile b/Dockerfile index e3408a1..c2ed53c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,4 +18,6 @@ RUN [ ! -f user.json ] && echo '{}' > user.json || true EXPOSE 5053 +VOLUME /app/cdn-app-insider + CMD [ "npm", "start" ] \ No newline at end of file diff --git a/models/Passport-ActiveDirectory.js b/models/Passport-ActiveDirectory.js index 4ae0888..f390334 100644 --- a/models/Passport-ActiveDirectory.js +++ b/models/Passport-ActiveDirectory.js @@ -34,10 +34,7 @@ passport.serializeUser((user, done) => { passport.deserializeUser((id, done) => { const users = getUserData(); - console.log('id:', id); - console.log('users:', users); - - const user = users.find(u => u.name === id.name || u.name === `.${id.name}`); + const user = users.find(u => u.name === id || u.name === `.${id}`); if (user) { return done(null, user); diff --git a/package-lock.json b/package-lock.json index 0fab313..cb5d7f7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "CDN-APP DinawoSR INC", + "name": "@cdn/app-insider-swiftlogic-labs-dinawo", "version": "1.0.9-beta", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "CDN-APP DinawoSR INC", + "name": "@cdn/app-insider-swiftlogic-labs-dinawo", "version": "1.0.9-beta", "license": "ISC", "dependencies": { diff --git a/routes/dpanel.js b/routes/dpanel.js index a776004..bf855d4 100644 --- a/routes/dpanel.js +++ b/routes/dpanel.js @@ -669,7 +669,7 @@ router.post('/dashboard/update-role', authMiddleware, async (req, res) => { router.post('/dashboard/update-setup', authMiddleware, async (req, res) => { try { - let setup = JSON.parse(fs.readFileSync(path.join(__dirname, '../../setup.json'))); + let setup = JSON.parse(fs.readFileSync(path.join(__dirname, '../setup.json'))); if (!req.body.ldap || !req.body.ldap.enabled) { delete setup.ldap; @@ -686,7 +686,7 @@ router.post('/dashboard/update-setup', authMiddleware, async (req, res) => { setup.domain = req.body.domain; setup.uptime = req.body.uptime; - fs.writeFileSync(path.join(__dirname, '../../setup.json'), JSON.stringify(setup, null, 2)); + fs.writeFileSync(path.join(__dirname, '../setup.json'), JSON.stringify(setup, null, 2)); res.redirect('/dpanel/dashboard/admin'); } catch (err) { diff --git a/routes/index.js b/routes/index.js index 9dcb344..f8647bf 100644 --- a/routes/index.js +++ b/routes/index.js @@ -9,6 +9,8 @@ const exec = util.promisify(require('child_process').exec); const authMiddleware = require('../Middlewares/authMiddleware'); const fs = require('fs'); +router.use(express.json()); + router.get('/', (req, res) => { res.render('acces-denied'); }); @@ -19,6 +21,47 @@ router.get('/attachments', (req, res) => { router.get('/checkupdate',authMiddleware, checkUpdates); +router.get('/setup', (req, res) => { + fs.readFile(path.join(__dirname, '../setup.json'), 'utf8', (err, data) => { + if (err) { + ErrorLogger.error('Error reading setup.json:', err); + return res.status(500).json({ success: false, message: 'Error reading setup.json.' }); + } + + const setup = JSON.parse(data); + + if (Object.keys(setup).length === 0 && setup.constructor === Object) { + res.render('setup', { setup }); + } else { + res.status(200).json({ message: 'CDN setup is already done.' }); + } + }); +}); + +router.post('/setup/save', (req, res) => { + const setupData = { + domain: req.body.domain ?? '', + uptime: req.body.uptime ?? '' + }; + + if (!areAllFieldsEmpty(req.body.ldap)) { + setupData.ldap = req.body.ldap; + } + + if (!areAllFieldsEmpty(req.body.discord)) { + setupData.discord = req.body.discord; + } + + fs.writeFile(path.join(__dirname, '../setup.json'), JSON.stringify(setupData, null, 2), (err) => { + if (err) { + ErrorLogger.error('Error writing to setup.json:', err); + return res.status(500).json({ success: false, message: 'Error writing to setup.json.' }); + } + + res.json({ success: true, message: 'Configuration data has been successfully saved.' }); + }); +}); + router.get('/applyupdate',authMiddleware, async (req, res) => { const updateUrl = 'https://apollon.dinawo.fr/api/download/all'; const updateFolder = path.join(__dirname, '..'); @@ -30,12 +73,12 @@ router.get('/applyupdate',authMiddleware, async (req, res) => { logger.info('------After applying the update------'); res.json({ success: true, - message: 'Mise à jour appliquée avec succès. Pensé à redémarrer le serveur pour que la MàJ soit prise en compte. (systemctl restart cdn).' + message: 'Update applied successfully. Remember to restart the server for the update to take effect. (systemctl restart cdn).' }); } catch (error) { ErrorLogger.error('Error applying update:', error); - return res.status(500).json({ success: false, message: 'Erreur lors de l\'application de la mise à jour.' }); + return res.status(500).json({ success: false, message: 'Error applying the update.' }); } }); @@ -63,9 +106,8 @@ router.get('/translateAll', async (req, res) => { res.json(translatedFiles); } catch (error) { - console.error('Erreur lors de la traduction de tous les fichiers EJS :', error.message); - res.status(500).json({ error: 'Erreur de traduction' }); + console.error('Error translating all EJS files:', error.message); + res.status(500).json({ error: 'Translation error' }); } }); - module.exports = router; diff --git a/server.js b/server.js index c3f1658..e748209 100644 --- a/server.js +++ b/server.js @@ -12,18 +12,12 @@ const flash = require('connect-flash'); const fs = require('fs'); const SystemReport = require('./models/reportManager.js'); -let setup = {}; -try { - if (fs.existsSync('setup.json')) { - setup = JSON.parse(fs.readFileSync('setup.json', 'utf8')); - } -} catch (err) { - console.error('Error reading setup.json:', err); -} +let setup; try { setup = JSON.parse(fs.readFileSync('setup.json', 'utf8')); } catch (err) { console.error('Error reading setup.json:', err); + process.exit(1); } if (setup.discord !== undefined) { @@ -34,22 +28,11 @@ if (setup.ldap !== undefined) { require('./models/Passport-ActiveDirectory.js'); } -let user = {}; -try { - if (fs.existsSync('user.json')) { - const data = fs.readFileSync('user.json', 'utf8'); - user = data ? JSON.parse(data) : {}; - } -} catch (err) { - console.error('Error reading user.json:', err); -} - app.use(express.static(path.join(__dirname, 'public'))); app.get(['/user.json', '/file_info.json', '/setup.json'], (req, res) => { - res.status(403).json({ error: 'Access Denied' }); -}); -app.use(express.urlencoded({ extended: true })); + res.status(403).send('Access Denied'); +});app.use(express.urlencoded({ extended: true })); app.use(session({ secret: '63a69c252dfe0bb20650b6365b48dc99ad6c7eac19faed62670e73a071c54236e2faf04ee009919592def437b98d3c726c40a56ef1d8759878c1703a93244aa3', diff --git a/views/setup.ejs b/views/setup.ejs new file mode 100644 index 0000000..ef6753b --- /dev/null +++ b/views/setup.ejs @@ -0,0 +1,249 @@ + + + + + + + + + + Setup CDN + + + + + + +
+

Gestion de la configuration


+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ParamètreValeur

LDAP Settings

Activer LDAP: + +
URL:
Base DN:
Username:
Password:

Discord Settings

Activer Discord: + +
Client ID:
Client Secret:
Identify URL:
Authorized IDs: +

Other Settings

Domain:
Uptime:
+
+ +
+
+
+
+ +
+
+ + + + + + + + + \ No newline at end of file