From 54a9eeacd52b211851dc1a0ad4a5930b6be55092 Mon Sep 17 00:00:00 2001 From: Siphonight Date: Sun, 16 Feb 2025 14:54:12 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20filtre=20+=20am=C3=A9lioration=20d?= =?UTF-8?q?e=20l'interface?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajout de la possibilité de filtrer les hôtes par leur nom dans le menu de sélection des serveurs de connexion. Ajout de clear dans les menus de serveur et admin afin de rendre l'interface plus lisible pour les utilisateurs. --- Dockerfile | 2 +- admin_menu.sh | 14 +++++++++++++- server_menu.sh | 32 +++++++++++++++++++++++++++----- 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8d6104d..db7392a 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.3.9 Alpha" +ARG MONOSPHERE_VERSION="3.4.9 Alpha" #Defining build settings diff --git a/admin_menu.sh b/admin_menu.sh index c0e6e5c..f6d0343 100644 --- a/admin_menu.sh +++ b/admin_menu.sh @@ -25,6 +25,7 @@ function secure_file_editor() { ;; *) + clear echo "Selection invalide." ;; esac @@ -54,6 +55,7 @@ function sessions_viewer() { if [[ ${choice} == "quit" ]] || [[ ${choice} == "${users_counter}" ]]; then main_menu elif [[ -z ${choice} ]] || [[ -z ${users_map[${choice}]} ]]; then + clear echo "Sélection invalide." else local selected_option @@ -70,13 +72,14 @@ function sessions_viewer() { echo "${sessions_counter}) ${session_name}" sessions_counter=$((sessions_counter + 1)) done <<<"${Available_Sessions}" - + echo "${sessions_counter}) Tapez 'quit' ou ${sessions_counter} pour vous revenir au choix d'utilisateur." read -r -p "Votre choix (1-${sessions_counter}): " choice if [[ ${choice} == "quit" ]] || [[ ${choice} == "${sessions_counter}" ]]; then sessions_viewer elif [[ -z ${choice} ]] || [[ -z ${sessions_map[${choice}]} ]]; then + clear echo "Sélection invalide." else local selected_session @@ -100,6 +103,7 @@ function servers_access_control() { case "${choice}" in "1") + clear Authorization_Files_List=$(find /opt/public/servers/. -type f ! -name 'authorized_servers.txt' | cut -d "/" -f 6) echo -e "Le ficher d'authentification qui sera crée ou modifié sera placé dans le répertoire \"/opt/public/servers/\" du bastion.\nle nom de ce dernier ne doit pas comporter de \"/\", être vide ou être égal à \"authorized_servers.txt\"." echo -e "Ci dessous la liste des fichiers d'authentification existants :\n${Authorization_Files_List}" @@ -118,6 +122,7 @@ function servers_access_control() { ;; "2") + clear echo -e "Veuillez bien vérifier la syntaxe de votre configuration avant de valider cette dernière.\nPour plus d'informations, consultez la documentation de Monosphere." secure_file_editor "/opt/public/servers/authorized_servers.txt" ;; @@ -127,6 +132,7 @@ function servers_access_control() { ;; *) + clear echo "Sélection invalide." ;; esac @@ -142,6 +148,7 @@ function admin_rights_control() { } function main_menu() { + clear ADMIN_RIGHTS_PATH="opt/public/rights" ADMIN_RIGHTS_FILE="/${ADMIN_RIGHTS_PATH}/admin_rights.txt" CONNECTED_ADMIN="$(whoami)" @@ -184,6 +191,7 @@ function main_menu() { echo "Déconnexion du bastion." exit 0 elif [[ -z ${choice} ]] || [[ -z ${adminrights_map[${choice}]} ]]; then + clear echo "Sélection invalide." else local selected_option @@ -191,10 +199,12 @@ function main_menu() { case "$(echo "${selected_option}" | cut -d ' ' -f 1)" in "sessionswatch_admins") + clear sessions_viewer ;; "serverscontrol_admins") + clear servers_access_control ;; # @@ -203,6 +213,7 @@ function main_menu() { # ;; # "adminscontrol_admins") + clear admin_rights_control ;; @@ -212,6 +223,7 @@ function main_menu() { # ;; *) + clear echo -e "Un problème de configuration a été détecté sur \nles options du droit administrateur sélectionné.\nVeuillez contacter votre administrateur." ;; esac diff --git a/server_menu.sh b/server_menu.sh index 76d9627..609a642 100644 --- a/server_menu.sh +++ b/server_menu.sh @@ -20,7 +20,10 @@ if [[ -z ${USER_SERVERS} ]]; then fi function main_menu() { - echo "Veuillez sélectionner un serveur auquel vous connecter :" + if [[ -z $choice ]] || [[ ${choice} == "null" ]]; then + clear + echo "Veuillez sélectionner un serveur auquel vous connecter :" + fi counter=1 declare -A server_map @@ -31,21 +34,39 @@ function main_menu() { server_user=$(echo "${line}" | cut -d ' ' -f 4) server_authmethod=$(echo "${line}" | cut -d ' ' -f 6) server_auth=$(echo "${line}" | cut -d ' ' -f 7) - server_map[${counter}]="${ip} ${port} ${server_user} ${server_authmethod} ${server_auth}" - echo "${counter}) ${custom_name} - ${server_user} ${ip}:${port}" + server_map[${counter}]="${ip} ${port} ${server_user} ${server_authmethod} ${server_auth} ${custom_name}" + if [[ -z $choice ]] || [[ ${choice} == "null" ]]; then + echo "${counter}) ${custom_name} - ${server_user} ${ip}:${port}" + fi counter=$((counter + 1)) done <<<"${USER_SERVERS}" - echo "${counter}) Tapez 'quit' ou ${counter} pour vous déconnecter." + if [[ -z $choice ]] || [[ ${choice} == "null" ]]; then + echo "${counter}) Tapez 'quit' ou ${counter} pour vous déconnecter." + echo "f) Tapez 'f' pour filtrer les entrées." - read -r -p "Votre choix (1-${counter}): " choice + read -r -p "Votre choix (1-${counter}) : " choice + fi if [[ ${choice} == "quit" ]] || [[ ${choice} == "${counter}" ]]; then echo "Déconnexion du bastion." exit 0 + elif [[ $(echo "${choice}" | cut -c1-1) == "f" ]]; then + filter=$(echo "${choice}" | cut -c2-) + find_counter=1 + 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 + 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)) + done + read -r -p "Votre choix (1-${counter}) : " choice elif [[ -z ${choice} ]] || [[ -z ${server_map[${choice}]} ]]; then echo "Sélection invalide." + choice="null" else + clear local selected_server selected_server="${server_map[${choice}]}" echo "Connexion à $(echo "${selected_server}" | cut -d " " -f -3)..." @@ -65,6 +86,7 @@ function main_menu() { else echo -e "Un problème de configuration a été détecté sur \nles options de connexion à l'hôte selectionné.\nVeuillez contacter votre administrateur." fi + choice="null" fi }