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
ARG MONOSPHERE_VERSION="3.3.9 Alpha"
ARG MONOSPHERE_VERSION="3.4.9 Alpha"
#Defining build settings

View File

@ -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

View File

@ -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'<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
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
}