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.
Correction d'un bug qui n'intervenait que dans une situation précise
mais qui faisait que la fonction de déconnexion ne se lançait pas et
laissait de ce fait les fichiers de configurations générés dans les
répertoires sans les supprimer.
Explications :
Si lors de la connexion avec l'ancienne version (ouverture du premier
terminal parent) vous effectuez un CTRL+C (que vous tuez le programme)
alors les commandes "trap" sensées faire le nettoyage par la fonction
identities_destroy n'étaient pas mises en place.
Si par la suite vous lanciez "identities_create" dans le terminal sans
resourcer ce dernier, la fonction identities_create se serait exécutée
normalement, mais les commandes trap ne seraient toujours pas en place.
Dans cette situation, lors d'une déconnexion, le nettoyage par la
fonction "identities_destroy" n'intervient pas. Bien que les variables
et les clés SSH soient en mémoire vive et de ce fait de facto protégés
et non affectés par ce problème, les fichiers placés dans les différents
répertoires eux ne sont pas nettoyés.
Avec la nouvelle version de l'utilitaire, j'ai supprimée le bloc de
condition exécuté à la fin afin d'intégrer les commandes trap au sein
de la fonction identities_create, à des endroits stratégiques pour que
la mise en place des commandes trap s'effectue peu importe si la
fonction est tuée ou non, et à quel moment.
La différenciation entre terminal parent et enfant est également prise
en compte au sein de la fonction identities_create, faisant du bloc de
condition final de la version précédente une partie inutile du code.
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'
```
Amélioration de l'expression régulière utilisée pour rechercher les
fichiers générés par l'autologger.
Les fichiers échappant précédemment à la suppression sont désomrais
inclus également.
- Déplacement des définitions de variables de l'email et du domaine de
l'instance bitwarden en début de script pour plus de lisibilité.
- Modification du test de comparaison de longueur dans la condition
servant à déterminer si un token de session était bien déjà présent ou
non pour une version plus optimisée proposée par shellcheck.
- Ajout d'une boucle supprimant les fichiers générés par les méthodes
décrites dans la documentation afin de ne laisser aucune trace après
une déconnexion du terminal.
- Suppression d'un echo de test dans la ligne trap kill utilisée pour
supprimer les agents ssh ouverts dans des fenêtres n'existant plus.
Modification également de la commande trap kill afin que la valeur de
$SSH_AGENT_PID ne soit résolue qu'au moment de l'invocation de la
commande et non au moment de l'enregistrement de la fonction dans
l'environnement du terminal.
Ajout de la condition trap utilisant la fonction identities_destroy en
cas de fermeture du TTY parent par la commande exit.
Cela permettra de fermer les terminaux sans devoir toujours penser à
utiliser manuellement **"identities_destroy"**
Modification du script de base pour la compatibilità avec SH.
En Bash, les tests dans les conditions if son plus surs et sÃcurisÃs en
utilisant les "[[ condition ]]".
Cependant ces derniers sont une spÃcificità supportÃe uniquement dans
Bash et non SH.
SH ayant une plus grande compatibilitéavec le reste des shells, il faut
de ce fait que cet utilitaire y soit adaptÃ.