From d86bf3cc964466c63067f54dfbfb2b77505acac3 Mon Sep 17 00:00:00 2001 From: Hajar RAHMOUNI Date: Mon, 29 Jan 2024 16:37:28 +0100 Subject: [PATCH] =?UTF-8?q?s=C3=A9paration=20client=20serveur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app.js | 136 +------------------------------------------------ app/client.js | 10 ++++ app/serveur.js | 122 ++++++++++++++++++++++++++++++++++++++++++++ app/utils.js | 2 +- 4 files changed, 135 insertions(+), 135 deletions(-) create mode 100644 app/client.js create mode 100644 app/serveur.js diff --git a/app/app.js b/app/app.js index 9cda4b0..f02a402 100644 --- a/app/app.js +++ b/app/app.js @@ -1,134 +1,2 @@ -const express = require('express'); -const crypto = require('crypto'); -const redis = require('redis'); -const WebSocket = require('ws'); -const http = require('http'); -const path = require('path'); -const bodyParser = require('body-parser'); - -const {generateSimulatedHash, sendHashToSlave} = require('./utils'); - -const app = express(); - -app.use(express.json()); -app.use(bodyParser.json()); -app.use(bodyParser.urlencoded({extended: true})); - -// le client Redis -const client = redis.createClient({ - url: 'redis://redis:6379' -}); - -client.on('error', (err) => console.log('Erreur Redis Client', err)); - -// etablissement de la connexion Redis -async function connectRedis() { - try { - await client.connect(); - } catch (err) { - console.error('Erreur de connexion Redis:', err); - process.exit(1); - } -} - -connectRedis(); - -// Création du serveur HTTP -const server = http.createServer(app); - -// Création du serveur WebSocket en attachant au serveur HTTP -const wss = new WebSocket.Server({server}); - -// Gestionnaire d'ouverture de la connexion WebSocket -wss.on('connection', (ws) => { - console.log('Connexion WebSocket avec un client établie'); - - // Gestion des messages WebSocket - ws.on('message', async (message) => { - console.log('Message reçu du client:', message.toString('utf-8')); - const decodedMessage = message.toString('utf-8'); - - // Vérifiez si le message commence par "found " - if (decodedMessage.startsWith('found ')) { - // Extrait le hash MD5 de la partie "found " du message - const md5Hash = decodedMessage.substring(6, 38); - const text = decodedMessage.substring(39); - - // Stocke le hash MD5 dans Redis - await client.set(md5Hash, text); - } - }); -}); - -app.get('/', (req, res) => { - res.sendFile(path.join(__dirname, 'index.html')); -}); - -app.post('/generateHash', async (req, res) => { - const difficulty = req.body.complexity; - - if (!difficulty) { - return res.status(400).json({error: 'Missing data in the request.'}); - } - - const hash = generateSimulatedHash(difficulty); - const searchToRedis = await client.get(hash); - - if (searchToRedis === null) { - wss.clients.forEach((client) => { - if (client.readyState === WebSocket.OPEN) { - sendHashToSlave(hash, client); - } - }); - } else { - console.log('Le mot de passe a été trouvé dans la base de données Redis' , searchToRedis); - } - - res.redirect('/'); -}); - -app.post('/generateHashOfPassword', async (req, res) => { - try { - const password = req.body.password; - - if (!password) { - return res.status(400).json({error: 'Missing data in the request.'}); - } - - const hash = crypto.createHash('md5').update(password).digest('hex'); - - const searchToRedis = await client.get(hash); - - if (searchToRedis === null) { - // Envoi du texte au service esclave via WebSocket - wss.clients.forEach((client) => { - if (client.readyState === WebSocket.OPEN) { - sendHashToSlave(hash, client); - } - }); - }else { - console.log('Le mot de passe a été trouvé dans la base de données Redis', searchToRedis); - } - - res.redirect('/'); - } catch (err) { - res.status(500).json({error: 'Erreur du serveur'}); - } -}); - - -const PORT = 3000; -server.listen(PORT, () => { - console.log(`Serveur démarré sur le port ${PORT}`); -}); - - -const socket = new WebSocket('ws://127.0.0.1:3000'); - -socket.addEventListener('open', (event) => { - console.log('Connexion WebSocket établie avec le serveur'); -}); - -socket.addEventListener('message', (event) => { - console.log('Message reçu du serveur:', event.data); -}); \ No newline at end of file +require('./client.js'); +require('./serveur.js'); diff --git a/app/client.js b/app/client.js new file mode 100644 index 0000000..ab6a09e --- /dev/null +++ b/app/client.js @@ -0,0 +1,10 @@ +const WebSocket = require('ws'); +const socket = new WebSocket('ws://127.0.0.1:3000'); + +socket.addEventListener('open', (event) => { + console.log('Connexion WebSocket établie avec le serveur'); +}); + +socket.addEventListener('message', (event) => { + console.log('Message reçu du serveur:', event.data); +}); diff --git a/app/serveur.js b/app/serveur.js new file mode 100644 index 0000000..a1180bd --- /dev/null +++ b/app/serveur.js @@ -0,0 +1,122 @@ +const express = require('express'); +const crypto = require('crypto'); +const redis = require('redis'); +const WebSocket = require('ws'); +const http = require('http'); +const path = require('path'); +const bodyParser = require('body-parser'); + +const {generateSimulatedHash, sendHashToSlave} = require('./utils'); + +const app = express(); + +app.use(express.json()); +app.use(bodyParser.json()); +app.use(bodyParser.urlencoded({extended: true})); + +// le client Redis +const client = redis.createClient({ + url: 'redis://redis:6379' +}); + +client.on('error', (err) => console.log('Erreur Redis Client', err)); + +// etablissement de la connexion Redis +async function connectRedis() { + try { + await client.connect(); + } catch (err) { + console.error('Erreur de connexion Redis:', err); + process.exit(1); + } +} + +connectRedis(); + +// Création du serveur HTTP +const server = http.createServer(app); + +// Création du serveur WebSocket en attachant au serveur HTTP +const wss = new WebSocket.Server({server}); + +// Gestionnaire d'ouverture de la connexion WebSocket +wss.on('connection', (ws) => { + console.log('Connexion WebSocket avec un client établie'); + + // Gestion des messages WebSocket + ws.on('message', async (message) => { + console.log('Message reçu du client:', message.toString('utf-8')); + const decodedMessage = message.toString('utf-8'); + + // Vérifiez si le message commence par "found " + if (decodedMessage.startsWith('found ')) { + // Extrait le hash MD5 de la partie "found " du message + const md5Hash = decodedMessage.substring(6, 38); + const text = decodedMessage.substring(39); + + // Stocke le hash MD5 dans Redis + await client.set(md5Hash, text); + } + }); +}); + +app.get('/', (req, res) => { + res.sendFile(path.join(__dirname, 'index.html')); +}); + +app.post('/generateHash', async (req, res) => { + const difficulty = req.body.complexity; + + if (!difficulty) { + return res.status(400).json({error: 'Missing data in the request.'}); + } + + const hash = generateSimulatedHash(difficulty); + const searchToRedis = await client.get(hash); + + if (searchToRedis === null) { + wss.clients.forEach((client) => { + if (client.readyState === WebSocket.OPEN) { + sendHashToSlave(hash, client); + } + }); + } else { + console.log('Le mot de passe a été trouvé dans la base de données Redis' , searchToRedis); + } + + res.redirect('/'); +}); + +app.post('/generateHashOfPassword', async (req, res) => { + try { + const password = req.body.password; + + if (!password) { + return res.status(400).json({error: 'Missing data in the request.'}); + } + + const hash = crypto.createHash('md5').update(password).digest('hex'); + + const searchToRedis = await client.get(hash); + + if (searchToRedis === null) { + // Envoi du texte au service esclave via WebSocket + wss.clients.forEach((client) => { + if (client.readyState === WebSocket.OPEN) { + sendHashToSlave(hash, client); + } + }); + } else { + console.log('Le mot de passe a été trouvé dans la base de données Redis', searchToRedis); + } + + res.redirect('/'); + } catch (err) { + res.status(500).json({error: 'Erreur du serveur'}); + } +}); + +const PORT = 3000; +server.listen(PORT, () => { + console.log(`Serveur démarré sur le port ${PORT}`); +}); diff --git a/app/utils.js b/app/utils.js index 64808da..d8f3f04 100644 --- a/app/utils.js +++ b/app/utils.js @@ -17,7 +17,7 @@ function generateSimulatedHash(difficulty) { } function sendHashToSlave(hash, client) { - client.send("search " + hash + " a 9999999999"); + client.send("search " + hash + " send hash"); } module.exports = { -- GitLab