4.6 KiB
4.6 KiB
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 :
- D’afficher une page HTML avec une liste de machines (PC, serveurs, etc.).
- Pour chaque machine, un lien de type
ssh://user@ipsur lequel je clique depuis le navigateur. - 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
- “PC bureau” → clic → ouvre un terminal avec
- 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
.desktopqui déclare le handlerx-scheme-handler/ssh
- Un lien HTML
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.
- Une page HTML statique (
- 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
- Prendre en entrée une URL de type
- 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 SSHscripts/ssh-url: script qui traite l’URL et lance le terminal+sshdesktop/ssh-url.desktop: fichier.desktopdéclarant le handlerx-scheme-handler/sshREADME.md: documentation du projet- (optionnel)
config/machines.yamlou.jsonsi 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
-
Conception
- Décrire rapidement l’architecture retenue (fichiers, rôles, flux).
- Expliquer comment le navigateur → handler
ssh://→ script → terminal → ssh s’enchaînent.
-
Implémentation
- Écrire :
- La page
index.htmlavec 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
.desktopssh-url.desktoppour déclarer le handler :MimeType=x-scheme-handler/ssh;Exec=/chemin/vers/scripts/ssh-url %u
- La page
- Ajouter éventuellement un petit mécanisme de configuration (liste des machines) si tu le juges utile.
- Écrire :
-
Instructions d’installation
- Rédiger un
README.mdavec :- É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.htmlet cliquer sur un lien.
- Rédiger un
-
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://.
- Le nom du terminal (
- Expliquer clairement où je dois adapter :
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.