Ajout de filtre + amélioration de l'interface

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.
This commit is contained in:
Siphonight 2025-02-16 14:54:12 +01:00
parent c80c422e54
commit 54a9eeacd5
3 changed files with 41 additions and 7 deletions

View File

@ -4,7 +4,7 @@ FROM alpine:3.20.0 AS monosphere-builder
#Setting default settings, please change them at run #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 #Defining build settings

View File

@ -25,6 +25,7 @@ function secure_file_editor() {
;; ;;
*) *)
clear
echo "Selection invalide." echo "Selection invalide."
;; ;;
esac esac
@ -54,6 +55,7 @@ function sessions_viewer() {
if [[ ${choice} == "quit" ]] || [[ ${choice} == "${users_counter}" ]]; then if [[ ${choice} == "quit" ]] || [[ ${choice} == "${users_counter}" ]]; then
main_menu main_menu
elif [[ -z ${choice} ]] || [[ -z ${users_map[${choice}]} ]]; then elif [[ -z ${choice} ]] || [[ -z ${users_map[${choice}]} ]]; then
clear
echo "Sélection invalide." echo "Sélection invalide."
else else
local selected_option local selected_option
@ -77,6 +79,7 @@ function sessions_viewer() {
if [[ ${choice} == "quit" ]] || [[ ${choice} == "${sessions_counter}" ]]; then if [[ ${choice} == "quit" ]] || [[ ${choice} == "${sessions_counter}" ]]; then
sessions_viewer sessions_viewer
elif [[ -z ${choice} ]] || [[ -z ${sessions_map[${choice}]} ]]; then elif [[ -z ${choice} ]] || [[ -z ${sessions_map[${choice}]} ]]; then
clear
echo "Sélection invalide." echo "Sélection invalide."
else else
local selected_session local selected_session
@ -100,6 +103,7 @@ function servers_access_control() {
case "${choice}" in case "${choice}" in
"1") "1")
clear
Authorization_Files_List=$(find /opt/public/servers/. -type f ! -name 'authorized_servers.txt' | cut -d "/" -f 6) 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 "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}" echo -e "Ci dessous la liste des fichiers d'authentification existants :\n${Authorization_Files_List}"
@ -118,6 +122,7 @@ function servers_access_control() {
;; ;;
"2") "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." 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" secure_file_editor "/opt/public/servers/authorized_servers.txt"
;; ;;
@ -127,6 +132,7 @@ function servers_access_control() {
;; ;;
*) *)
clear
echo "Sélection invalide." echo "Sélection invalide."
;; ;;
esac esac
@ -142,6 +148,7 @@ function admin_rights_control() {
} }
function main_menu() { function main_menu() {
clear
ADMIN_RIGHTS_PATH="opt/public/rights" ADMIN_RIGHTS_PATH="opt/public/rights"
ADMIN_RIGHTS_FILE="/${ADMIN_RIGHTS_PATH}/admin_rights.txt" ADMIN_RIGHTS_FILE="/${ADMIN_RIGHTS_PATH}/admin_rights.txt"
CONNECTED_ADMIN="$(whoami)" CONNECTED_ADMIN="$(whoami)"
@ -184,6 +191,7 @@ function main_menu() {
echo "Déconnexion du bastion." echo "Déconnexion du bastion."
exit 0 exit 0
elif [[ -z ${choice} ]] || [[ -z ${adminrights_map[${choice}]} ]]; then elif [[ -z ${choice} ]] || [[ -z ${adminrights_map[${choice}]} ]]; then
clear
echo "Sélection invalide." echo "Sélection invalide."
else else
local selected_option local selected_option
@ -191,10 +199,12 @@ function main_menu() {
case "$(echo "${selected_option}" | cut -d ' ' -f 1)" in case "$(echo "${selected_option}" | cut -d ' ' -f 1)" in
"sessionswatch_admins") "sessionswatch_admins")
clear
sessions_viewer sessions_viewer
;; ;;
"serverscontrol_admins") "serverscontrol_admins")
clear
servers_access_control servers_access_control
;; ;;
# #
@ -203,6 +213,7 @@ function main_menu() {
# ;; # ;;
# #
"adminscontrol_admins") "adminscontrol_admins")
clear
admin_rights_control 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." echo -e "Un problème de configuration a été détecté sur \nles options du droit administrateur sélectionné.\nVeuillez contacter votre administrateur."
;; ;;
esac esac

View File

@ -20,7 +20,10 @@ if [[ -z ${USER_SERVERS} ]]; then
fi fi
function main_menu() { function main_menu() {
if [[ -z $choice ]] || [[ ${choice} == "null" ]]; then
clear
echo "Veuillez sélectionner un serveur auquel vous connecter :" echo "Veuillez sélectionner un serveur auquel vous connecter :"
fi
counter=1 counter=1
declare -A server_map declare -A server_map
@ -31,21 +34,39 @@ function main_menu() {
server_user=$(echo "${line}" | cut -d ' ' -f 4) server_user=$(echo "${line}" | cut -d ' ' -f 4)
server_authmethod=$(echo "${line}" | cut -d ' ' -f 6) server_authmethod=$(echo "${line}" | cut -d ' ' -f 6)
server_auth=$(echo "${line}" | cut -d ' ' -f 7) server_auth=$(echo "${line}" | cut -d ' ' -f 7)
server_map[${counter}]="${ip} ${port} ${server_user} ${server_authmethod} ${server_auth}" 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}" echo "${counter}) ${custom_name} - ${server_user} ${ip}:${port}"
fi
counter=$((counter + 1)) counter=$((counter + 1))
done <<<"${USER_SERVERS}" done <<<"${USER_SERVERS}"
if [[ -z $choice ]] || [[ ${choice} == "null" ]]; then
echo "${counter}) Tapez 'quit' ou ${counter} pour vous déconnecter." echo "${counter}) Tapez 'quit' ou ${counter} pour vous déconnecter."
echo "f) Tapez 'f'<nom de l'hote> 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 if [[ ${choice} == "quit" ]] || [[ ${choice} == "${counter}" ]]; then
echo "Déconnexion du bastion." echo "Déconnexion du bastion."
exit 0 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 elif [[ -z ${choice} ]] || [[ -z ${server_map[${choice}]} ]]; then
echo "Sélection invalide." echo "Sélection invalide."
choice="null"
else else
clear
local selected_server local selected_server
selected_server="${server_map[${choice}]}" selected_server="${server_map[${choice}]}"
echo "Connexion à $(echo "${selected_server}" | cut -d " " -f -3)..." echo "Connexion à $(echo "${selected_server}" | cut -d " " -f -3)..."
@ -65,6 +86,7 @@ function main_menu() {
else 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." 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 fi
choice="null"
fi fi
} }