From 199f5f7ebb068f229f853215249d7b1e3b34d155 Mon Sep 17 00:00:00 2001 From: Siphonight Date: Sat, 6 Sep 2025 19:47:13 +0200 Subject: [PATCH] Correction de la fonction de recherche de serveurs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correction apportée dans la liste de recherche des noms de serveurs : (utilisable en tapant f) Cette correction inclut : - Un inversement de la liste des configurations de serveurs en entrée du bloc for utilisé pour lister les serveurs et chercher la chaine de caractères dans les noms de serveurs. - Ajout d'une commande "echo" dans la ligne de comparaison entre les valeurs du filtre entré et du nom du serveur. En effet, sans la commande "echo" dans la partie droite de la comparaison, Bash ajoute systématiquement les backslash, ce qui casse le méchanisme de comparaison et donne de ce fait toujours un résultat faux. Concernant l'inversement de la liste, utiliser simplement "${server_map[@]}" affiche une map inversée par rapport à ce qui avait été entré dans le bloc de création de cette map. Pour corriger ce problème, une ligne d'inversement à été nécessaire : > printf '%s\n' "${server_map[@]}" | tac | cut -d " " -f 6 --- Dockerfile | 2 +- README.md | 9 +++++---- server_menu.sh | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 22bc8ce..23845ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ FROM alpine:3.20.0 AS monosphere-builder #Setting default settings, please change them at run -ARG MONOSPHERE_VERSION="3.4.10 Alpha" +ARG MONOSPHERE_VERSION="3.4.11 Alpha" #Defining build settings diff --git a/README.md b/README.md index dafe882..1e05ff4 100644 --- a/README.md +++ b/README.md @@ -39,9 +39,10 @@ Voici une liste des différentes fonctionnalités déjà en place sur le bastion - Création et configuration automatisée du bastion au lancement (ce conteneur est entièrement stateless, signifiant qu'il peut être redéployé sans souci, les configurations de ce dernier étant sous forme de fichiers). - Support des utilisateurs de connexion multiples pour les hôtes distants. -- Support pour la connexion par clés SSH (le support pour la connexion automatisée en mot de passe est prévu.) +- Support pour la connexion par clés SSH et mots de passe sur les hôtes distants. - Sessions enregistrées et visionnables par les administrateurs du bastion ayant les autorisation appropriées. - Support pour l'execution de scripts personalisés au lancement du conteneur. +- Recherche possible par nom de serveur distant dans la liste des serveurs du menu de connexion. (utile en cas de plusieurs serveurs configurés). ## Pourquoi choisir ce bastion ? @@ -58,13 +59,13 @@ Voici une liste des différentes fonctionnalités déjà en place sur le bastion Ci-dessous une liste non exhaustive des objectifs des prochaines mises à jour du projet: - [ ] Ajouter une option pour le transfert de fichiers au travers du bastion vers les machines distantes. -- [ ] Ajouter une option de recherche d'hôtes distants dans la liste des serveurs. +- [x] Ajouter une option de recherche d'hôtes distants dans la liste des serveurs. - [ ] Ajouter une option sous forme de variable d'environnement pour fournir au bastion les clés d'hôtes des machines distantes. (avec un mode confiance, strict ou test par exemple) - [ ] Ajouter le support pour un serveur LDAP. (Objectif sur le long terme) - [ ] Ajouter un système de mise à jour automatique dans le conteneur, évitant ainsi les redéploiements. - [x] Ajouter la possibilité de revenir dans le menu des serveurs après une déconnexion d'une machine distante. - [ ] Ajouter un système de cluster avec master/slave et synchronisation entre les nodes. -- [ ] Améliorer le système de journalisation du déploiement du bastion, avec les erreurs de déploiement affichées lors de la connexion des utilisateurs internes. +- [x] Améliorer le système de journalisation du déploiement du bastion, avec les erreurs de déploiement affichées lors de la connexion des utilisateurs internes. - [x] Ajouter un menu d'administration et de gestion lors de la connexion des utilisateurs internes du bastion. - [x] Créer des rôles administrateur/inspecteur avec des droits différents au sein du bastion. @@ -264,7 +265,7 @@ Ce fichier devra avoir la syntaxe suivante pour chacune de ses lignes : Explication des valeurs possibles : - **Nom de l'utilisateur** : Définit le nom de l'utilisateur. Ce dernier doit être entièrement en minuscules et peut contenir des carachtères alphanumériques. -- **1** : Permet de définir le compte comme étant celui d'un tuilisateur. +- **1** : Permet de définir le compte comme étant celui d'un utilisateur. - **hash du mot de passe** : Champ pour entrer le mot de passe de l'utilisateur au format hashé si il en a un. Il est possible de ne pas donner de mot de passe à l'utilisateur en mettant "0" à cet endroit. Dans ce cas le mot de passe ce cet utilisateur sera le nom de lui même (par exemple, l'utilisateur sans mot de passe "user1" aura de ce fait pour mot de passe "user1"). Pour obtenir le hash du mot de passe que vous souhaitez utiliser pour cet utilisateur, lancez la commande ci dessous dans un terminal sous Linux et utilisez son résultat EXACT comme valeur pour ce champ : ```bash diff --git a/server_menu.sh b/server_menu.sh index 96c1735..a974c62 100644 --- a/server_menu.sh +++ b/server_menu.sh @@ -55,8 +55,8 @@ function main_menu() { filter=$(echo "${choice}" | cut -c2-) find_counter=0 echo "=====Résultats du filtre=====" - for host in "${server_map[@]}"; do - if [[ $(echo "${host}" | awk '{print $(NF)}' | grep -m 1 -o "${filter}" | head -1) == "${filter}" ]]; then + for host in $(printf '%s\n' "${server_map[@]}" | tac | cut -d " " -f 6); do + if [[ $(echo "${host}" | awk '{print $(NF)}' | grep -m 1 -o "${filter}" | head -1) == $(echo "${filter}") ]]; then echo "${find_counter}) $(echo ${server_map[${find_counter}]} | awk '{print $(NF)}') - $(echo ${server_map[${find_counter}]} | cut -d ' ' -f 3) $(echo ${server_map[${find_counter}]} | cut -d ' ' -f 1):$(echo ${server_map[${find_counter}]} | cut -d ' ' -f 2)" fi find_counter=$((find_counter + 1))