From cde65baa0b425f6d3ba9045e904fda1bc428185e Mon Sep 17 00:00:00 2001 From: chourmovs Date: Thu, 5 Sep 2024 20:29:13 +0200 Subject: [PATCH] update app.js --- webapp/app.js | 224 +++++++++++++-------------------------- webapp/public/index.html | 110 ++++++++++--------- 2 files changed, 129 insertions(+), 205 deletions(-) diff --git a/webapp/app.js b/webapp/app.js index b39ee4c..f08d324 100644 --- a/webapp/app.js +++ b/webapp/app.js @@ -8,178 +8,98 @@ const { spawn } = require('child_process'); const app = express(); const port = 3000; -// Servir les fichiers statiques depuis le dossier public +// Serve static files from the public directory app.use(express.static(path.join(__dirname, 'public'))); -// Route pour la page d'accueil +// Route for the homepage app.get('/', (req, res) => { - res.sendFile(path.join(__dirname, 'public', 'index.html')); + res.sendFile(path.join(__dirname, 'public', 'index.html')); }); app.get('/mount-nas', (req, res) => { - const networkPath = req.query.path; + const networkPath = req.query.path; - // Commande pour monter le partage NAS en lecture seule sans sudo - const mountCommand = `mount -t cifs -o username=chourmovs,password='3$*ES3KSu4tYtX',file_mode=0777,dir_mode=0777,rw ${networkPath} /mnt/Musique`; + // Command to mount the NAS share as read-only with no sudo + const mountCommand = `mount -t cifs -o username=chourmovs,password='3$*ES3KSu4tYtX',file_mode=0777,dir_mode=0777,rw ${networkPath} /mnt/Music`; - const mountProcess = spawn('sh', ['-c', mountCommand]); + const mountProcess = spawn('sh', ['-c', mountCommand]); - let output = ''; + let output = ''; - mountProcess.stdout.on('data', (data) => { - output += data.toString(); - }); + mountProcess.stdout.on('data', (data) => { + output += data.toString(); + }); - mountProcess.stderr.on('data', (data) => { - output += data.toString(); - }); + mountProcess.stderr.on('data', (data) => { + output += data.toString(); + }); - mountProcess.on('close', (code) => { - if (code !== 0) { - return res.status(500).send(`Erreur lors du montage : ${output}`); - } - res.send(`Partage NAS monté avec succès : ${output}`); - }); -}); - - -app.get('/start-analysis', (req, res) => { - const command = 'blissify init /mnt/Musique'; - const analysisProcess = spawn('sh', ['-c', command]); - - res.setHeader('Content-Type', 'text/plain'); - - analysisProcess.stdout.on('data', (data) => { - res.write(data.toString()); - }); - - analysisProcess.stderr.on('data', (data) => { - res.write(data.toString()); - }); - - analysisProcess.on('close', (code) => { - if (code !== 0) { - res.write(`\nErreur lors de l'exécution de blissify init (code ${code})`); - } else { - res.write(`\nBlissify init exécuté avec succès`); - } - res.end(); - }); + mountProcess.on('close', (code) => { + if (code !== 0) { + return res.status(500).send(`Error mounting share: ${output}`); + } + res.send(`NAS share mounted successfully: ${output}`); + }); }); app.get('/mpc-update', (req, res) => { - const command = 'mpc update'; - const mpcProcess = spawn('sh', ['-c', command]); - - res.setHeader('Content-Type', 'text/plain'); - - mpcProcess.stdout.on('data', (data) => { - res.write(data.toString()); - }); - - mpcProcess.stderr.on('data', (data) => { - res.write(data.toString()); - }); - - mpcProcess.on('close', (code) => { - if (code !== 0) { - res.write(`\nErreur lors de la mise à jour MPC (code ${code})`); - } else { - res.write(`\nMPC mis à jour avec succès`); - } - res.end(); - }); + const command = 'mpc update'; + const mpcProcess = spawn('sh', ['-c', command]); + + res.setHeader('Content-Type', 'text/plain'); + + mpcProcess.stdout.on('data', (data) => { + res.write(data.toString()); + }); + + mpcProcess.stderr.on('data', (data) => { + res.write(data.toString()); + }); + + mpcProcess.on('close', (code) => { + if (code !== 0) { + res.write(`\nError updating MPC (code ${code})`); + } else { + res.write(`\nMPC updated successfully`); + } + res.end(); + }); }); app.get('/blissify-update', (req, res) => { - const command = 'blissify update'; - const updateProcess = spawn('sh', ['-c', command]); - - res.setHeader('Content-Type', 'text/plain'); - - updateProcess.stdout.on('data', (data) => { - res.write(data.toString()); - }); - - updateProcess.stderr.on('data', (data) => { - res.write(data.toString()); - }); - - updateProcess.on('close', (code) => { - if (code !== 0) { - res.write(`\nErreur lors de l'exécution de blissify update (code ${code})`); - } else { - res.write(`\nBlissify update exécuté avec succès`); - } - res.end(); - }); + const command = 'blissify update'; + const updateProcess = spawn('sh', ['-c', command]); + + res.setHeader('Content-Type', 'text/plain'); + + updateProcess.stdout.on('data', (data) => { + res.write(data.toString()); + }); + + updateProcess.stderr.on('data', (data) => { + res.write(data.toString()); + }); + + updateProcess.on('close', (code) => { + if (code !== 0) { + res.write(`\nError executing blissify update (code ${code})`); + } else { + res.write(`\nBlissify update executed successfully`); + } + res.end(); + }); }); -// Route pour chercher l'instance Volumio +// Route to find the Volumio instance app.get('/search-volumio', (req, res) => { - // Exécuter une commande pour scanner le réseau (exemple avec nmap) - exec('nmap -p 22 --open -sV 192.168.1.0/24', (error, stdout, stderr) => { - if (error) { - return res.status(500).send(`Erreur: ${stderr}`); - } - // Analyser stdout pour trouver les instances Volumio - const volumioInstance = stdout.match(/192\.168\.1\.\d+/); // exemple simple de regex - res.send(volumioInstance ? volumioInstance[0] : 'Aucune instance Volumio trouvée'); - }); + // Execute a command to scan the network (example with nmap) + exec('nmap -p 22 --open -sV 192.168.1.0/24', (error, stdout, stderr) => { + if (error) { + return res.status(500).send(`Error: ${stderr}`); + } + // Parse stdout to find Volumio instances + const volumioInstance = stdout.match(/192\.168\.1\.\d+/); // simple example of regex + res.send(volumioInstance ? volumioInstance[0] : 'No Volumio instances found'); + }); }); -// Route pour uploader le fichier song.db vers Volumio via SFTP -app.post('/upload-songdb', (req, res) => { - const conn = new Client(); - const songDbPath = '~/.local/share/bliss-rs/song.db'; // Remplacez par le chemin de votre song.db - const remotePath = '/home/volumio/.local/share/bliss-rs/song.db'; - - conn.on('ready', () => { - conn.sftp((err, sftp) => { - if (err) throw err; - sftp.fastPut(songDbPath, remotePath, (err) => { - if (err) return res.status(500).send(`Erreur: ${err.message}`); - res.send('Upload réussi!'); - conn.end(); - }); - }); - }).connect({ - host: '192.168.1.20', // Adresse IP de l'instance Volumio trouvée - port: 22, - username: 'volumio', - password: 'volumio' // Remplacez par le mot de passe correct - }); -}); - -app.get('/test-command', (req, res) => { - const command = 'ls /mnt/Musique'; // Simple commande de test - const testProcess = spawn('sh', ['-c', command]); - - res.setHeader('Content-Type', 'text/plain'); - - testProcess.stdout.on('data', (data) => { - console.log(`stdout: ${data}`); - res.write(data.toString()); - }); - - testProcess.stderr.on('data', (data) => { - console.log(`stderr: ${data}`); - res.write(data.toString()); - }); - - testProcess.on('close', (code) => { - console.log(`Processus terminé avec code : ${code}`); - if (code !== 0) { - res.write(`\nErreur (code ${code})`); - } else { - res.write(`\nCommande exécutée avec succès`); - } - res.end(); - }); -}); - - -const PORT = 3000; -app.listen(PORT, () => { - console.log(`Serveur en écoute sur le port ${PORT}`); -}); diff --git a/webapp/public/index.html b/webapp/public/index.html index 529d8c9..609a512 100644 --- a/webapp/public/index.html +++ b/webapp/public/index.html @@ -1,73 +1,77 @@ - - - Gestion NAS et Commandes + + + Gestion NAS et Commandes -

Gestion du NAS et des analyses

+

Gestion du NAS et des analyses

-
- - - -
+ +
+ + + +
- - - + + + + -

+  
+  

 
-    
+    });
+