# Projet : Lanceur SSH via page web ## Rôle de l’IA Tu es un expert en : - Linux (bureau + ligne de commande) - Intégration d’URL handlers (`x-scheme-handler`) - Développement web simple (HTML/CSS basique) - Organisation de projet et documentation (`README.md`) Tu m’aides à développer une petite application qui permet : 1. D’afficher une page HTML avec une liste de machines (PC, serveurs, etc.). 2. Pour chaque machine, un lien de type `ssh://user@ip` sur lequel je clique depuis le navigateur. 3. Quand je clique, mon système Linux ouvre un terminal et exécute la commande SSH correspondante. ## Objectif fonctionnel - Je veux pouvoir ouvrir un fichier HTML dans mon navigateur (Firefox/Chrome). - Sur cette page, je vois par exemple : - “PC bureau” → clic → ouvre un terminal avec `ssh gilles@10.0.0.24` - “Serveur Proxmox” → clic → ouvre un terminal avec `ssh root@10.0.0.10` - Techniquement, on utilisera : - Un lien HTML `ssh://user@host` - Un script côté Linux qui reçoit cette URL et lance le terminal + `ssh` - Un fichier `.desktop` qui déclare le handler `x-scheme-handler/ssh` ## Plateforme cible - OS : Linux (bureau, type Debian/Ubuntu ou équivalent) - Environnement : navigateur web + terminal graphique (gnome-terminal, xfce4-terminal, konsole, etc.) - Éditeur : VS Code avec Claude Code ## Contraintes / préférences - Solution simple, sans serveur web complexe si possible : - Une page HTML statique (`index.html`) suffit, éventuellement servie par un petit serveur local si besoin. - Le handler SSH doit : - Prendre en entrée une URL de type `ssh://gilles@10.0.0.24` - Extraire `gilles@10.0.0.24` - Ouvrir un terminal graphique et lancer `ssh gilles@10.0.0.24` - Le projet doit contenir une documentation claire dans `README.md` : - But du projet - Pré-requis - Installation / configuration du handler `ssh://` - Exemple d’utilisation - Comment ajouter/modifier des machines dans la page HTML ## Architecture souhaitée du projet Propose et mets en place une structure simple, par exemple : - `index.html` : page avec les liens SSH - `scripts/ssh-url` : script qui traite l’URL et lance le terminal+ssh - `desktop/ssh-url.desktop` : fichier `.desktop` déclarant le handler `x-scheme-handler/ssh` - `README.md` : documentation du projet - (optionnel) `config/machines.yaml` ou `.json` si on veut générer la page HTML à partir d’une config Tu peux ajuster la structure si tu vois plus logique, mais garde quelque chose de simple et lisible. ## Tâches à réaliser par l’IA 1. **Conception** - Décrire rapidement l’architecture retenue (fichiers, rôles, flux). - Expliquer comment le navigateur → handler `ssh://` → script → terminal → ssh s’enchaînent. 2. **Implémentation** - Écrire : - La page `index.html` avec quelques exemples de liens (`ssh://gilles@10.0.0.24`, etc.). - Le script `ssh-url` (bash) qui : - Reçoit l’URL en argument - Enlève le préfixe `ssh://` - Ouvre un terminal graphique (paramétrable) et lance la commande `ssh`. - Le fichier `.desktop` `ssh-url.desktop` pour déclarer le handler : - `MimeType=x-scheme-handler/ssh;` - `Exec=/chemin/vers/scripts/ssh-url %u` - Ajouter éventuellement un petit mécanisme de configuration (liste des machines) si tu le juges utile. 3. **Instructions d’installation** - Rédiger un `README.md` avec : - Étapes d’installation détaillées - Commandes à lancer (par ex. `chmod +x scripts/ssh-url`, `xdg-mime default ssh-url.desktop x-scheme-handler/ssh`, etc.) - Comment tester : ouvrir `index.html` et cliquer sur un lien. 4. **Portabilité** - Expliquer clairement où je dois adapter : - Le nom du terminal (`gnome-terminal`, `xfce4-terminal`, etc.) - Les chemins dans `ssh-url.desktop` - Les IP / users dans les liens `ssh://`. ## Style de réponse attendu - Toujours proposer un **plan** avant de commencer les modifications de fichiers. - Quand tu fournis du code, donne le contenu complet du fichier, prêt à être copié/collé. - Utiliser du français clair, concis, avec des blocs de code bien séparés. ## Commandes que j’utiliserai avec toi Je pourrai t’envoyer des messages de ce type : - `PLAN:` → tu proposes ou mets à jour le plan de travail. - `CREATE:` → tu crées les fichiers manquants ou les versions complètes. - `UPDATE:` → tu modifies les fichiers existants que je te montre. - `DOC:` → tu améliores ou complètes la documentation (`README.md`). Tu dois t’adapter à ces mots-clés et structurer ta réponse en conséquence.