From 2a0fcda9f112177b623e33949a024ef53d53842e Mon Sep 17 00:00:00 2001 From: didier Date: Sun, 4 Oct 2026 19:22:00 +0200 Subject: [PATCH] iinteractif --- bin/gestUsers.sh | 180 +++++++++++++++++++++++++---------------------- 1 file changed, 97 insertions(+), 83 deletions(-) diff --git a/bin/gestUsers.sh b/bin/gestUsers.sh index 5a4d1de..e16d5e1 100755 --- a/bin/gestUsers.sh +++ b/bin/gestUsers.sh @@ -516,73 +516,88 @@ createMail() { QUOTA=1 TRUE_KAZ=TRUE fait=0 - # On demande le mail souhaite on regarde si c' est valide et si ça existe déjà - while [ $fait -eq 0 ] - do - clear - echo "----------------------------------------------------------------------" - printKazMsg "${ACTION_EN_COURS}" - echo "----------------------------------------------------------------------" - read -p "Mail souhaité (r ou R pour quitter ) : " EMAIL_SOUHAITE - [[ ${EMAIL_SOUHAITE} =~ ^[rRqQ]$ ]] && Main - EMAIL_SOUHAITE=$(unaccent utf8 ${EMAIL_SOUHAITE}) - if [[ ${EMAIL_SOUHAITE} =~ ${regexMail} ]] - then - ldapsearch -H ldap://${LDAP_IP} \ - -x -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" \ - -w "${LDAP_ADMIN_PASSWORD}" \ - -b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=${EMAIL_SOUHAITE}))" cn | grep ^cn | sed -e 's/^cn: //' >$TFILE_EMAILS - if grep -q "^${EMAIL_SOUHAITE}$" "${TFILE_EMAILS}" + # si c'est une demande de création non interactive + # la valeur de CREATE_AUTO doit être à TRUE + CREATE_AUTO=${1} + EMAIL_SOUHAITE=${2} + EMAIL_SECOURS=${3} + # Si on est en interactif, On demande le mail souhaite on regarde si c' est valide et si ça existe déjà + if [ "${CREATE_AUTO}" != "TRUE" ] + then + while [ $fait -eq 0 ] + do + clear + echo "----------------------------------------------------------------------" + printKazMsg "${ACTION_EN_COURS}" + echo "----------------------------------------------------------------------" + read -p "Mail souhaité (r ou R pour quitter ) : " EMAIL_SOUHAITE + [[ ${EMAIL_SOUHAITE} =~ ^[rRqQ]$ ]] && Main + EMAIL_SOUHAITE=$(unaccent utf8 ${EMAIL_SOUHAITE}) + if [[ ${EMAIL_SOUHAITE} =~ ${regexMail} ]] then - printKazError " - Le mail ${EMAIL_SOUHAITE} existe déjà" - fait=0 - elif ! grep $(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//') ${KAZ_CONF_DIR}/autorized-domains.txt >/dev/null - then - printKazMsg "Le domaine n' est pas dans la liste autorisée" + ldapsearch -H ldap://${LDAP_IP} \ + -x -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" \ + -w "${LDAP_ADMIN_PASSWORD}" \ + -b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=${EMAIL_SOUHAITE}))" cn | grep ^cn | sed -e 's/^cn: //' >$TFILE_EMAILS + if grep -q "^${EMAIL_SOUHAITE}$" "${TFILE_EMAILS}" + then + printKazError " - Le mail ${EMAIL_SOUHAITE} existe déjà" + fait=0 + elif ! grep $(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//') ${KAZ_CONF_DIR}/autorized-domains.txt >/dev/null + then + printKazMsg "Le domaine n' est pas dans la liste autorisée" + sleep 2 + fait=0 + else + fait=1 + fi + else + printKazError " - Mail invalide !" sleep 2 fait=0 - else - fait=1 fi - else - printKazError " - Mail invalide !" - sleep 2 - fait=0 - fi - done + done + else + echo "on aura fait les tests avant ou la c'est comme on veut" + fi # on renseigne le domaine en cours pour les options qui concernent pas le domaine kaz.bzh # ---------------------------------------------------------------------- DOMAINE_EN_COURS=$(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//') echo " ---- Domaine: " ${DOMAINE_EN_COURS} ---- # ---------------------------------------------------------------------- - # On demande le mail de secours et on teste si c' est un mail valide - fait=0 - while [ $fait -eq 0 ] - do - read -p "Mail de secours : " EMAIL_SECOURS - if [[ ${EMAIL_SECOURS} =~ ${regexMail} ]] && [ "${EMAIL_SECOURS}" != "" ] - then - fait=1 - else - printKazError "Mail invalide" - fait=0 - fi - if [ "${EMAIL_SECOURS}" = "${EMAIL_SOUHAITE}" ] - then - echo -e "${RED}Le mail de secours ne peut pas etre le meme que le mail demande${NC}" - fait=0 - fi - done - # On demande le prenom - while [ "${PRENOM}" = "" ] - do - read -p "Prenom : " PRENOM - done - # On demande le nom - while [ "${NOM}" = "" ] - do - read -p "Nom : " NOM - done + # Si on est en interactif, On demande le mail de secours, le nom et prenom et on teste si c' est un mail valide + if [ "${CREATE_AUTO}" != "TRUE" ] + then + fait=0 + while [ $fait -eq 0 ] + do + read -p "Mail de secours : " EMAIL_SECOURS + if [[ ${EMAIL_SECOURS} =~ ${regexMail} ]] && [ "${EMAIL_SECOURS}" != "" ] + then + fait=1 + else + printKazError "Mail invalide" + fait=0 + fi + if [ "${EMAIL_SECOURS}" = "${EMAIL_SOUHAITE}" ] + then + echo -e "${RED}Le mail de secours ne peut pas etre le meme que le mail demande${NC}" + fait=0 + fi + done + # On demande le prenom + while [ "${PRENOM}" = "" ] + do + read -p "Prenom : " PRENOM + done + # On demande le nom + while [ "${NOM}" = "" ] + do + read -p "Nom : " NOM + done + else + echo "on invente un nom et prénom et on aura testé avant si le mail de secours est valide" + fi # On constitue l' ident kaz pour le ldap IDENT_KAZ=$(unaccent utf8 "${PRENOM,,}.${NOM,,}") # on créé le mot de passe @@ -591,21 +606,24 @@ createMail() { LDAPUSER=$(echo ${EMAIL_SOUHAITE} | awk -F '@' '{print $1}') LDAPDOMAIN=$(echo ${EMAIL_SOUHAITE} | awk -F '@' '{print $2}') LDAPPASS=$(mkpasswd -m sha512crypt ${PASSWORD}) - [ "${DOMAINE_EN_COURS}" != "${domain}" ] && TRUE_KAZ=FALSE - echo "${GREEN}Mail souhaité : ${NC}${EMAIL_SOUHAITE}" - echo "${GREEN}Mail secours : ${NC}${EMAIL_SECOURS}" - echo "${GREEN}Prénom : ${NC}${PRENOM}" - echo "${GREEN}Nom : ${NC}${NOM}" - echo "${GREEN}Mot de passe : ${NC}${PASSWORD}" - RCREATION="" - repRegEx='^[oOnN]$' - while ! [[ ${RCREATION} =~ ${repRegEx} ]] - do - read -p "Création ? o/n : " RCREATION - done - if [ ${RCREATION} = "n" ] || [ ${RCREATION} = "N" ] - then - Main + if [ "${CREATE_AUTO}" != "TRUE" ] + then + [ "${DOMAINE_EN_COURS}" != "${domain}" ] && TRUE_KAZ=FALSE + echo "${GREEN}Mail souhaité : ${NC}${EMAIL_SOUHAITE}" + echo "${GREEN}Mail secours : ${NC}${EMAIL_SECOURS}" + echo "${GREEN}Prénom : ${NC}${PRENOM}" + echo "${GREEN}Nom : ${NC}${NOM}" + echo "${GREEN}Mot de passe : ${NC}${PASSWORD}" + RCREATION="" + repRegEx='^[oOnN]$' + while ! [[ ${RCREATION} =~ ${repRegEx} ]] + do + read -p "Création ? o/n : " RCREATION + done + if [ ${RCREATION} = "n" ] || [ ${RCREATION} = "N" ] + then + Main + fi fi echo "echo -e '\n\ndn: cn=${EMAIL_SOUHAITE},ou=users,${ldap_root}\n\ changeType: add\n\ @@ -647,16 +665,12 @@ Bonne journée" ExpMail ${EMAIL_SECOURS} "Creation de ${EMAIL_SOUHAITE}" ${MSG_CREATION_MAIL} PostMattermost "création du compte ${EMAIL_SOUHAITE} avec l' adresse de secours ${EMAIL_SECOURS}" "Creation-Comptes" IFS=${OLDIFS} -echo " --------------------------------------------------------------------" -echo "! INFO : !" -echo "! Le Mot de passe !" -echo "! Est dans le fichier !" -echo "! ${TFILE_CREATE_MAIL} !" -echo " --------------------------------------------------------------------" -echo -read -p " - ENTREE pour continuer - " -# Retour au menu principal -Main +# si non interactif on fait une pause pour afficher une eventuelle erreur +if [ "${CREATE_AUTO}" != "TRUE" ] +then + read -p " - ENTREE pour continuer - " + createMail +fi } createAlias() {