bw-cli_autologger/bw_cli_autolog.sh
Elden Ivanouski 9662cff696 Correction de bug, fichier non supprimés
Correction d'un but faisant que certains fichiers n'étaient pas
supprimés correctement si un espace était présent en début de ligne lors
de leur déclaration dans le fichier ".identities-loaded.sh".

Afin de les rendre plus sécurisées et robustes aux caractères spéciaux
et à la présence d'espacements, les détections des fichiers générés par
le script pour le processus de suppression utilisent des guillemets
simples, faisant que tout caractère est interprété de façon littérale
par la fonction.

De ce fait :
```bash
rm -rf ' /home/secrets'
```
n'est pas équivalent à :
```bash
rm -rf '/home/secrets'
```
2025-11-10 08:21:23 +01:00

91 lines
2.7 KiB
Bash

#!/bin/sh
identities_create() {
# IDENTITES
Bitwarden_Email="<EMAIL_DE_CONNEXION_A_BITWARDEN>"
Bitwarden_Server="<URL_DE_L_INSTANCE_BITWARDEN>"
Inception_Detect=0
if [ -z "${BW_Session}" ] || [ "${#BW_Session}" -lt 10 ]; then
Local_Version="2.2.5"
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
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
}
identities_destroy() {
tput setaf 4
echo "Déconnexion des identités en cours..."
bw logout
ssh-add -D
pkill ssh-agent
echo "Suppression des fichiers générés..."
# shellcheck disable=SC2016
grep -in "printf.*\"\%s\".*\"\$BW_List\"" "${HOME}"/.identities-loaded.sh | grep ">" | cut -d ">" -f 2 | sed -e "s,\~,${HOME},g ; s,\"\$HOME\",${HOME},g ; s,^\ ,,g" | while IFS= read -r each; do
rm -rf "${each}"
done
unset BW_Session
echo "Déconnexion des identités terminée"
tput sgr0
}
identities_create
if [ -n "${BW_Session}" ]; then
trap identities_destroy EXIT
else
trap 'kill $SSH_AGENT_PID' EXIT
fi