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 }