Update v1.1.1-beta1
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing

This commit is contained in:
2025-06-14 22:01:39 +02:00
parent 440cc4b9eb
commit de8c5ccb84
24 changed files with 8037 additions and 1292 deletions

View File

@@ -32,9 +32,42 @@ function sendDiscordWebhook(url, req, statusCode) {
const allowedIps = setupData[0].allowedIps || [];
const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
// Skip monitoring for localhost/local IPs
const localIps = ['127.0.0.1', '::1', 'localhost', '::ffff:127.0.0.1'];
if (localIps.includes(ip)) {
return;
}
// Skip monitoring for Chrome DevTools requests
if (req.originalUrl.includes('.well-known/appspecific/com.chrome.devtools.json')) {
return;
}
// Skip monitoring for legitimate API endpoints
const legitimateEndpoints = [
'/api/dpanel/dashboard/profilpicture',
'/api/dpanel/dashboard/backgroundcustom',
'/api/dpanel/collaboration',
'/api/dpanel/users/search',
'/dpanel/dashboard/profil',
'/build-metadata',
'/api/dpanel/collaboration/add',
'/api/dpanel/collaboration/remove',
'/api/dpanel/collaboration/users'
];
if (legitimateEndpoints.some(endpoint => req.originalUrl.includes(endpoint))) {
return;
}
// Skip monitoring if IP is allowed
if (isIpAllowed(ip, allowedIps)) {
return;
} else {
}
// Skip monitoring for authenticated users on dashboard routes
if (req.user && req.originalUrl.startsWith('/dpanel/dashboard')) {
return;
}
const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`;

View File

@@ -3,49 +3,65 @@ const chokidar = require('chokidar');
const fs = require('fs');
const { logger, ErrorLogger, logRequestInfo } = require('../config/logs');
// Define file paths
const userFilePath = path.resolve(__dirname, '../data/user.json');
const setupFilePath = path.resolve(__dirname, '../data/setup.json');
const collaborationFilePath = path.resolve(__dirname, '../data/collaboration.json');
let userData, setupData;
// Initialize data objects
let userData, setupData, collaborationData;
// Load initial user data
try {
userData = JSON.parse(fs.readFileSync(userFilePath, 'utf-8'));
} catch (error) {
ErrorLogger.error(`Error parsing user.json: ${error}`);
}
// Load initial setup data
try {
setupData = JSON.parse(fs.readFileSync(setupFilePath, 'utf-8'));
} catch (error) {
ErrorLogger.error(`Error parsing setup.json: ${error}`);
}
const watcher = chokidar.watch([userFilePath, setupFilePath], {
// Load initial collaboration data
try {
collaborationData = JSON.parse(fs.readFileSync(collaborationFilePath, 'utf-8'));
} catch (error) {
ErrorLogger.error(`Error parsing collaboration.json: ${error}`);
}
// Set up file watcher
const watcher = chokidar.watch([userFilePath, setupFilePath, collaborationFilePath], {
persistent: true
});
// Handle file changes
watcher.on('change', (filePath) => {
let modifiedFile;
if (filePath === userFilePath) {
try {
try {
if (filePath === userFilePath) {
userData = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
modifiedFile = 'user.json';
} catch (error) {
logger.error(`Error parsing user.json: ${error}`);
}
} else if (filePath === setupFilePath) {
try {
} else if (filePath === setupFilePath) {
setupData = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
modifiedFile = 'setup.json';
} catch (error) {
logger.error(`Error parsing setup.json: ${error}`);
} else if (filePath === collaborationFilePath) {
collaborationData = JSON.parse(fs.readFileSync(filePath, 'utf-8'));
modifiedFile = 'collaboration.json';
}
logger.info(`File ${modifiedFile} has been modified`);
} catch (error) {
ErrorLogger.error(`Error parsing ${modifiedFile}: ${error}`);
}
logger.info(`File ${modifiedFile} has been modified`);
});
// Export data access functions
module.exports = {
getUserData: () => Promise.resolve(userData),
getSetupData: () => Promise.resolve(setupData)
getSetupData: () => Promise.resolve(setupData),
getCollaborationData: () => Promise.resolve(collaborationData)
};