Refactor Dockerfile and docker-compose.yml to use new directory structure and update volume paths
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
55
Middlewares/discordWebhookSuspisiousAlertMiddleware.js
Normal file
55
Middlewares/discordWebhookSuspisiousAlertMiddleware.js
Normal file
@@ -0,0 +1,55 @@
|
||||
const axios = require('axios');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const setupFilePath = path.join(__dirname, '../data', 'setup.json');
|
||||
const setupData = JSON.parse(fs.readFileSync(setupFilePath, 'utf-8'));
|
||||
|
||||
function sendDiscordWebhook(url, req, statusCode) {
|
||||
const fullUrl = `${req.protocol}://${req.get('host')}${req.originalUrl}`;
|
||||
|
||||
const ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
|
||||
|
||||
const statusEmoji = statusCode === 200 ? '✅' : '❌';
|
||||
const statusMessage = `**Statut:** ${statusEmoji} (${statusCode})`;
|
||||
|
||||
const timestamp = new Date().toLocaleString('fr-FR', { timeZone: 'UTC', hour12: false });
|
||||
const userAgent = req.get('User-Agent');
|
||||
|
||||
const { v4: uuidv4 } = require('uuid');
|
||||
|
||||
const webhookId = uuidv4();
|
||||
|
||||
const userId = req.user ? req.user.id : 'Inconnu';
|
||||
const userName = req.user ? req.user.name : 'Inconnu';
|
||||
|
||||
const data = {
|
||||
embeds: [{
|
||||
title: "📡 Requête API",
|
||||
description: "Une requête API a été effectuée. Voici les détails :",
|
||||
color: 16753920,
|
||||
fields: [{
|
||||
name: `🔎 Détails de la requête\n\n`,
|
||||
value: `🔗 **URL:** ${fullUrl}\n\n🚦 ${statusMessage}\n\n🌐 **IP**: ${ip}\n\n🔧 **Méthode**: ${req.method}\n\n⏰ **Heure**: ${timestamp}\n\n🕵️ **Agent utilisateur**: ${userAgent}\n\n👤 **Utilisateur**: ${userName} (*ID: ${userId}*)`,
|
||||
inline: false
|
||||
}],
|
||||
footer: {
|
||||
text: `📚 Journal des requêtes API | ${webhookId}`
|
||||
}
|
||||
}]
|
||||
};
|
||||
|
||||
axios.post(url, data)
|
||||
.catch((error) => {
|
||||
console.error(`Erreur lors de l'envoi du webhook à Discord: ${error}`);
|
||||
});
|
||||
}
|
||||
|
||||
function discordWebhookSuspisiousAlertMiddleware(req, res, next) {
|
||||
res.on('finish', () => {
|
||||
const discordWebhookUrl = setupData[0].webhooks_discord;
|
||||
sendDiscordWebhook(discordWebhookUrl, req, res.statusCode);
|
||||
});
|
||||
next();
|
||||
}
|
||||
|
||||
module.exports = discordWebhookSuspisiousAlertMiddleware;
|
||||
Reference in New Issue
Block a user