Note: We appreciate your feedback and bug reports to continue improving our platform. Thank you for your continued support!
This commit is contained in:
@@ -4,33 +4,16 @@ 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 osUtils = require('os-utils');
|
||||
const Convert = require('ansi-to-html');
|
||||
const convert = new Convert()
|
||||
const convert = new Convert();
|
||||
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('/', (req, res) => {
|
||||
res.status(400).json({ error: 'Bad Request. The request cannot be fulfilled due to bad syntax or missing parameters.' });
|
||||
});
|
||||
|
||||
|
||||
function clean(obj) {
|
||||
for (var propName in obj) {
|
||||
if (obj[propName] === null || obj[propName] === undefined || obj[propName] === '') {
|
||||
@@ -44,20 +27,74 @@ function clean(obj) {
|
||||
}
|
||||
}
|
||||
|
||||
function validateIP(ip) {
|
||||
if (!ip) return false;
|
||||
|
||||
if (ip.includes('/')) {
|
||||
const [addr, bits] = ip.split('/');
|
||||
const bitsNum = parseInt(bits);
|
||||
|
||||
if (isIPv4(addr)) {
|
||||
return bitsNum >= 0 && bitsNum <= 32;
|
||||
} else if (isIPv6(addr)) {
|
||||
return bitsNum >= 0 && bitsNum <= 128;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return isIPv4(ip) || isIPv6(ip);
|
||||
}
|
||||
|
||||
function isIPv4(ip) {
|
||||
const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/;
|
||||
if (!ipv4Regex.test(ip)) return false;
|
||||
|
||||
const parts = ip.split('.');
|
||||
return parts.every(part => {
|
||||
const num = parseInt(part);
|
||||
return num >= 0 && num <= 255;
|
||||
});
|
||||
}
|
||||
|
||||
function isIPv6(ip) {
|
||||
const ipv6Regex = /^(?:(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,7}:|(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:){1,5}(?::[0-9a-fA-F]{1,4}){1,2}|(?:[0-9a-fA-F]{1,4}:){1,4}(?::[0-9a-fA-F]{1,4}){1,3}|(?:[0-9a-fA-F]{1,4}:){1,3}(?::[0-9a-fA-F]{1,4}){1,4}|(?:[0-9a-fA-F]{1,4}:){1,2}(?::[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:(?:(?::[0-9a-fA-F]{1,4}){1,6})|:(?:(?::[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(?::[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(?:ffff(?::0{1,4}){0,1}:){0,1}(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])|(?:[0-9a-fA-F]{1,4}:){1,4}:(?:(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(?:25[0-5]|(?:2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;
|
||||
return ipv6Regex.test(ip);
|
||||
}
|
||||
|
||||
router.get('/', (req, res) => {
|
||||
res.status(400).json({ error: 'Bad Request. The request cannot be fulfilled due to bad syntax or missing parameters.' });
|
||||
});
|
||||
|
||||
router.post('/', authMiddleware, async (req, res) => {
|
||||
try {
|
||||
|
||||
let setup = JSON.parse(fs.readFileSync(path.join(__dirname, '../../../data', 'setup.json'), 'utf-8'));
|
||||
|
||||
if (req.body.allowedIps) {
|
||||
const ipsArray = Array.isArray(req.body.allowedIps) ? req.body.allowedIps : [req.body.allowedIps];
|
||||
|
||||
req.body.allowedIps = ipsArray
|
||||
.filter(ip => ip && ip.trim())
|
||||
.filter(ip => validateIP(ip.trim()))
|
||||
.map(ip => ip.trim());
|
||||
|
||||
console.log('IPs validées:', req.body.allowedIps);
|
||||
}
|
||||
|
||||
clean(req.body);
|
||||
setup[0] = req.body;
|
||||
setup[0] = {
|
||||
...setup[0],
|
||||
...req.body
|
||||
};
|
||||
|
||||
|
||||
fs.writeFileSync(path.join(__dirname, '../../../data', 'setup.json'), JSON.stringify(setup, null, 2), 'utf-8');
|
||||
fs.writeFileSync(
|
||||
path.join(__dirname, '../../../data', 'setup.json'),
|
||||
JSON.stringify(setup, null, 2),
|
||||
'utf-8'
|
||||
);
|
||||
|
||||
res.redirect('/dpanel/dashboard/admin/settingsetup');
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
console.error('Erreur lors de la mise à jour de la configuration:', err);
|
||||
res.status(500).send('Server Error');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -40,9 +40,9 @@ router.post('/', authMiddleware, async (req, res) => {
|
||||
user.role = role;
|
||||
}
|
||||
|
||||
fs.writeFileSync(path.join(__dirname, '../../../data/user.js'), JSON.stringify(User, null, 2));
|
||||
fs.writeFileSync(path.join(__dirname, '../../../data/user.json'), JSON.stringify(User, null, 2));
|
||||
|
||||
res.redirect('/dpanel/dashboard/admin');
|
||||
res.status(200).json({ message: 'Operation successful' });
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
res.status(500).send('Server Error');
|
||||
|
||||
@@ -81,6 +81,17 @@ router.get('/', authMiddleware, async (req, res) => {
|
||||
};
|
||||
});
|
||||
|
||||
function formatFileSize(fileSizeInBytes) {
|
||||
if (fileSizeInBytes < 1024 * 1024) {
|
||||
return `${(fileSizeInBytes / 1024).toFixed(2)} Ko`;
|
||||
} else if (fileSizeInBytes < 1024 * 1024 * 1024) {
|
||||
return `${(fileSizeInBytes / (1024 * 1024)).toFixed(2)} Mo`;
|
||||
} else {
|
||||
return `${(fileSizeInBytes / (1024 * 1024 * 1024)).toFixed(2)} Go`;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const availableExtensions = Array.from(new Set(fileDetails.map(file => file.extension)));
|
||||
|
||||
res.render('dashboard', { files: fileDetails, folders, extensions: availableExtensions, allFolders: folders, folderName: folderName, fileInfoNames: fileInfoNames });
|
||||
|
||||
14
routes/denied.js
Normal file
14
routes/denied.js
Normal file
@@ -0,0 +1,14 @@
|
||||
const express = require('express');
|
||||
const router = express.Router();
|
||||
const path = require('path');
|
||||
const { logger, ErrorLogger, logRequestInfo } = require('../config/logs');
|
||||
const util = require('util');
|
||||
const fs = require('fs');
|
||||
|
||||
router.use(express.json());
|
||||
|
||||
router.get('/', (req, res) => {
|
||||
res.render('acces-denied');
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
@@ -8,7 +8,7 @@ const fs = require('fs');
|
||||
router.use(express.json());
|
||||
|
||||
router.get('/', (req, res) => {
|
||||
res.render('acces-denied');
|
||||
res.render('promote');
|
||||
});
|
||||
|
||||
router.get('/attachments', (req, res) => {
|
||||
|
||||
@@ -5,6 +5,7 @@ const { logApiRequest } = require('../config/logs.js');
|
||||
const discordWebhookSuspisiousAlertMiddleware = require('../Middlewares/discordWebhookSuspisiousAlertMiddleware.js');
|
||||
|
||||
const indexRoute = require('./index.js');
|
||||
const deniedRoute = require('./denied.js');
|
||||
const DpanelDashboardRoute = require('./Dpanel/Dashboard/index.js');
|
||||
const DpanelFolderRoute = require('./Dpanel/Folder/index.js');
|
||||
const DpanelUploadRoute = require('./Dpanel/Upload.js');
|
||||
@@ -78,6 +79,6 @@ router.use('/auth/activedirectory',discordWebhookSuspisiousAlertMiddleware, acti
|
||||
router.use('/auth/discord',discordWebhookSuspisiousAlertMiddleware, discordRoute);
|
||||
|
||||
|
||||
router.use('/*', logAndBanSuspiciousActivity, indexRoute);
|
||||
router.use('/*', logAndBanSuspiciousActivity, deniedRoute);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user