From 6d286dce46bcad5fedf5cfb374acb8397e26a8b6 Mon Sep 17 00:00:00 2001 From: Siphonight Date: Thu, 13 Nov 2025 19:49:09 +0100 Subject: [PATCH] =?UTF-8?q?Correction=20changement=20cassant=20introduit?= =?UTF-8?q?=20dans=20la=20version=20pr=C3=A9c=C3=A9dente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correction d'un problème introduit dans le correctif précédent. Les terminaux SH et ZSH déclenchaient la fonction de nettoyage "identities_destroy" dès la sortie de la fonction "identities_create". Auparavant, la commande trap était éxecutée en dehors des fonctions et donc la sortie de la fonction n'équivalait pas à un EXIT. Ce comportement n'affectait pas les utilisateurs sous Bash, dont la gestion des subshells est différente. Cette correction revoit l'intégralité du script et supprime la fonction devenue obsolète "identities_create" au profit d'un code exécuté directement. Cela permet également de mieux réarrager le code et de définir la fonction "identities_destroy" dès le lancement du script. --- bw_cli_autolog.sh | 128 +++++++++++++++++++++++----------------------- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/bw_cli_autolog.sh b/bw_cli_autolog.sh index b7c45d8..4dae452 100644 --- a/bw_cli_autolog.sh +++ b/bw_cli_autolog.sh @@ -1,70 +1,14 @@ #!/bin/sh -identities_create() { - # IDENTITES - Bitwarden_Email="" - Bitwarden_Server="" - Inception_Detect=0 +# Variables à définir par l'utilisateur. +Bitwarden_Email="" +Bitwarden_Server="" - if [ -z "${BW_Session}" ] || [ "${#BW_Session}" -lt 10 ]; then - trap identities_destroy EXIT - Local_Version="2.2.6" - Latest_Version=$(curl -s "https://gitea.cloudyfy.fr/Siphonight/bw-cli_autologger/src/branch/main/bw_cli_autolog.sh" | grep -m1 "Local_Version" | cut -d ';' -f 2 | cut -d '&' -f 1) - if [ "${Local_Version}" != "${Latest_Version}" ]; then - tput setaf 1 - echo "Votre version de l'utilitaire n'est pas à jour." - echo "Version locale : ${Local_Version} | Dernière version : ${Latest_Version}" - echo "Récupérez la dernière version sur https://gitea.cloudyfy.fr/Siphonight/bw-cli_autologger ." - else - tput setaf 2 - echo "Votre utilitaire est à jour avec la dernière version ! Happy Connect =)" - fi - tput setaf 4 - echo "Bitwarden CLI autologger version ${Local_Version}" - echo "Lancement du autologin (ne prenez pas en compte les tokens, ils sont gérés automatiquement)." - tput sgr0 - identities_destroy - bw config server "${Bitwarden_Server}" - # shellcheck disable=SC2155 - export BW_Session="$(bw login "${Bitwarden_Email}" | tee /dev/tty | grep -m1 '==' | cut -d '"' -f 2)" - Inception_Detect=1 - fi - - BW_List=$(bw list items --session "${BW_Session}") - if [ "${BW_List}" != "" ]; then - - if [ "${Inception_Detect}" != "1" ]; then - trap 'kill $SSH_AGENT_PID' EXIT - unset BW_Session - fi - - # shellcheck disable=SC2009 - if [ "$(ps -ax | grep 'sh -c while true; do sleep 10; bw sync -f; done' | grep -cv 'grep')" = "0" ]; then - nohup sh -c 'while true; do sleep 10; bw sync -f; done' >/dev/null 2>&1 & - fi - - tput setaf 4 - echo "" - echo "Bitwarden connecté, mise en place des identités..." - tput sgr0 - - eval "$(ssh-agent)" - - # shellcheck disable=SC3037 - printf "%s" "${BW_List}" | jq -r '.[] | select(.name=="identities - configs") | .notes' >"${HOME}"/.identities-loaded.sh - chmod 700 "${HOME}"/.identities-loaded.sh - # shellcheck disable=SC1091 - . "${HOME}"/.identities-loaded.sh - - unset BW_List - - else - tput setaf 4 - echo "Bitwarden non connecté, les identités n'ont pas été mises en place." - tput sgr0 - fi -} +# Variables internes au script +Inception_Detect=0 # Détection de terminaux parents/enfants +Local_Version="2.2.7" +# Fonction de suppression et nettoyage des identités identities_destroy() { tput setaf 4 echo "Déconnexion des identités en cours..." @@ -83,4 +27,60 @@ identities_destroy() { tput sgr0 } -identities_create +# Processus de création des identités +if [ -z "${BW_Session}" ] || [ "${#BW_Session}" -lt 10 ]; then + trap identities_destroy EXIT + Latest_Version=$(curl -s "https://gitea.cloudyfy.fr/Siphonight/bw-cli_autologger/src/branch/main/bw_cli_autolog.sh" | grep -m1 "Local_Version" | cut -d ';' -f 2 | cut -d '&' -f 1) + if [ "${Local_Version}" != "${Latest_Version}" ]; then + tput setaf 1 + echo "Votre version de l'utilitaire n'est pas à jour." + echo "Version locale : ${Local_Version} | Dernière version : ${Latest_Version}" + echo "Récupérez la dernière version sur https://gitea.cloudyfy.fr/Siphonight/bw-cli_autologger ." + else + tput setaf 2 + echo "Votre utilitaire est à jour avec la dernière version ! Happy Connect =)" + fi + tput setaf 4 + echo "Bitwarden CLI autologger version ${Local_Version}" + echo "Lancement du autologin (ne prenez pas en compte les tokens, ils sont gérés automatiquement)." + tput sgr0 + identities_destroy + bw config server "${Bitwarden_Server}" + # shellcheck disable=SC2155 + export BW_Session="$(bw login "${Bitwarden_Email}" | tee /dev/tty | grep -m1 '==' | cut -d '"' -f 2)" + Inception_Detect=1 +fi + +BW_List=$(bw list items --session "${BW_Session}") +if [ "${BW_List}" != "" ]; then + + if [ "${Inception_Detect}" != "1" ]; then + trap 'kill $SSH_AGENT_PID' EXIT + unset BW_Session + fi + + # shellcheck disable=SC2009 + if [ "$(ps -ax | grep 'sh -c while true; do sleep 10; bw sync -f; done' | grep -cv 'grep')" = "0" ]; then + nohup sh -c 'while true; do sleep 10; bw sync -f; done' >/dev/null 2>&1 & + fi + + tput setaf 4 + echo "" + echo "Bitwarden connecté, mise en place des identités..." + tput sgr0 + + eval "$(ssh-agent)" + + # shellcheck disable=SC3037 + printf "%s" "${BW_List}" | jq -r '.[] | select(.name=="identities - configs") | .notes' >"${HOME}"/.identities-loaded.sh + chmod 700 "${HOME}"/.identities-loaded.sh + # shellcheck disable=SC1091 + . "${HOME}"/.identities-loaded.sh + + unset BW_List + +else + tput setaf 4 + echo "Bitwarden non connecté, les identités n'ont pas été mises en place." + tput sgr0 +fi