107 lines
4.6 KiB
Markdown
107 lines
4.6 KiB
Markdown
# 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.
|
||
|