Skip to content

Commit

Permalink
Merge pull request #1 from chourmovs/beta
Browse files Browse the repository at this point in the history
Beta
  • Loading branch information
chourmovs authored Sep 1, 2024
2 parents cb24f69 + 89fe055 commit 1680e92
Show file tree
Hide file tree
Showing 3 changed files with 124 additions and 9 deletions.
36 changes: 36 additions & 0 deletions .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Build and Push Docker Image

on:
push:
branches:
- main # Déclenche le workflow à chaque push sur la branche "main"
pull_request:
branches:
- main # Déclenche le workflow à chaque pull request vers la branche "main"

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: yourdockerhubusername/blissify-webapp:latest

- name: Image details
run: docker images
19 changes: 10 additions & 9 deletions .dockerfile → Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,29 @@ FROM archlinux:latest

# Étape 2 : Mettre à jour les paquets et installer les dépendances
RUN pacman -Syu --noconfirm \
&& pacman -S --noconfirm base-devel clang ffmpeg git curl
&& pacman -S --noconfirm base-devel clang ffmpeg git curl nodejs npm

# Étape 3 : Installer Rust via rustup
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
ENV PATH="/root/.cargo/bin:${PATH}"

# Étape 4 : Cloner et compiler blissify-rs
WORKDIR /app
RUN git clone https://github.com/yourusername/blissify-rs.git .
RUN git clone https://github.com/Polochon-street/blissify-rs.git .
RUN cargo build --release

# Étape 5 : Créer une webapp pour interagir avec blissify-rs
# Par exemple, utiliser un framework léger comme Express.js ou Actix-web (si vous préférez rester en Rust)
# Étape 5 : Configurer et installer les dépendances de la webapp
WORKDIR /app/webapp

# Initialiser le projet Node.js et installer les dépendances
RUN npm init -y
RUN npm install express child_process ssh2 sftp-upload

# Ajouter votre code de webapp ici, par exemple :
# Copier les fichiers de la webapp dans l'image
COPY ./webapp /app/webapp
WORKDIR /app/webapp
RUN npm install
RUN npm run build

# Exposer le port 3000
EXPOSE 3000

# Commande pour démarrer la webapp
CMD ["npm", "start"]
CMD ["node", "app.js"]
78 changes: 78 additions & 0 deletions app/webapp/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
const express = require('express');
const { exec } = require('child_process');
const Client = require('ssh2').Client;
const path = require('path');
const sftpUpload = require('sftp-upload');

const app = express();
app.use(express.static('public')); // Servir les fichiers statiques comme HTML, CSS, JS

// Route pour rechercher la bibliothèque musicale
app.get('/search-music', (req, res) => {
// Implémentation pour rechercher la bibliothèque musicale
exec('find /path/to/network -type d', (error, stdout, stderr) => {
if (error) {
return res.status(500).send(`Erreur: ${stderr}`);
}
res.send(stdout); // Retourne la liste des répertoires trouvés
});
});

// Route pour lancer l'analyse
app.get('/start-analysis', (req, res) => {
const command = 'blissify init';
const analysis = exec(command);

analysis.stdout.on('data', (data) => {
res.write(data);
});

analysis.stderr.on('data', (data) => {
res.write(`Erreur: ${data}`);
});

analysis.on('close', (code) => {
res.end(`\nProcessus terminé avec le code: ${code}`);
});
});

// Route pour chercher l'instance Volumio
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');
});
});

// Route pour uploader le fichier song.db vers Volumio via SFTP
app.post('/upload-songdb', (req, res) => {
const conn = new Client();
const songDbPath = '/path/to/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.100', // Adresse IP de l'instance Volumio trouvée
port: 22,
username: 'volumio',
password: 'volumio' // Remplacez par le mot de passe correct
});
});

const PORT = 3000;
app.listen(PORT, () => {
console.log(`Serveur en écoute sur le port ${PORT}`);
});

0 comments on commit 1680e92

Please sign in to comment.