From a0b44af705d05084b86f020fc2bf6703a9aa4512 Mon Sep 17 00:00:00 2001 From: didier Date: Sun, 4 Oct 2026 21:24:19 +0200 Subject: [PATCH] =?UTF-8?q?version=20du=20script=20avec=20option=20-c=20po?= =?UTF-8?q?ur=20une=20cr=C3=A9ation=20de=20mail=20en=20non=20intereactif?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/gestUsers.sh | 110 +++++++++++++++++++++++++++++++---------------- 1 file changed, 73 insertions(+), 37 deletions(-) diff --git a/bin/gestUsers.sh b/bin/gestUsers.sh index dc2de96..3de3fa4 100755 --- a/bin/gestUsers.sh +++ b/bin/gestUsers.sh @@ -3,7 +3,8 @@ # Ki : Did # koi : gestion globale des users Kaz mais aussi les users d'autres domaines hébergés -KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd) +#KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd) +KAZ_ROOT=/kaz . $KAZ_ROOT/bin/.commonFunctions.sh setKazVars @@ -31,7 +32,7 @@ LISTMASTER=$(echo ${LISTMASTERS} | cut -d',' -f1) #### Test du serveur sur lequel s' execute le script #### -echo ${site} | grep -E 'prod1|dev' || { echo "Le script ne fonctionne que sur Prod1 et Dev ";exit;} +echo ${site} | grep -E 'prod1|dev' >/dev/null 2>&1 || { echo "Le script ne fonctionne que sur Prod1 et Dev ";exit;} ############################## TFILE_EMAILS=$(mktemp /tmp/$RACINE.XXXXXXXXX.TFILE_EMAILS) @@ -62,8 +63,8 @@ PostMattermost() { . $KAZ_KEY_DIR/env-mattermostAdmin PostM=$1 CHANNEL=$2 - TEAMID=$(curl -s -H "Authorization: Bearer ${mattermost_token}" "${URL_AGORA_API}/teams/name/${EQUIPE}" | jq -r .id ) - CHANNELID=$(curl -s -H "Authorization: Bearer ${mattermost_token}" ${URL_AGORA_API}/teams/${TEAMID}/channels/name/${CHANNEL} | jq -r .id ) + TEAMID=$(curl -s -H "Authorization: Bearer ${mattermost_token}" "${URL_AGORA_API}/teams/name/${EQUIPE}" | jq -r .id ) + CHANNELID=$(curl -s -H "Authorization: Bearer ${mattermost_token}" ${URL_AGORA_API}/teams/${TEAMID}/channels/name/${CHANNEL} | jq -r .id ) curl -s i-X POST -i -H "Authorization: Bearer ${mattermost_token}" -d "{\"channel_id\":\"${CHANNELID}\",\"message\":\"${PostM}\"}" "${URL_AGORA_API}/posts" >/dev/null 2>&1 } @@ -521,7 +522,8 @@ createMail() { 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à + # Si on est en interactif, On demande le mail souhaite le mail secours et on demande le nom et prenom + # et on regarde si c' est valide et si ça existe déjà if [ "${CREATE_AUTO}" != "TRUE" ] then while [ $fait -eq 0 ] @@ -535,39 +537,33 @@ createMail() { 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}" - 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 + 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 fi 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} ---- - # ---------------------------------------------------------------------- - # 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 + # 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} ---- + # ---------------------------------------------------------------------- fait=0 while [ $fait -eq 0 ] do @@ -596,7 +592,32 @@ createMail() { 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" + echo "on invente un nom et prénom" + ERRMAILAUTO="" + # on renseigne DOMAINE EN COURS pour cette partie de script ( puisque l'autre déclaration se fait dasn la boucle interactive + DOMAINE_EN_COURS=$(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//') + NOM=kaz + PRENOM=$(echo ${EMAIL_SOUHAITE} | sed -e 's/@.*$//') + # on cherche le mail dans l'annuaire + 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 + ERRMAILAUTO="${ERRMAILAUTO} Le mail ${EMAIL_SOUHAITE} existe déjà" + fi + if ! grep $(echo ${EMAIL_SOUHAITE} | sed -e 's/^.*@//') ${KAZ_CONF_DIR}/autorized-domains.txt >/dev/null + then + ERRMAILAUTO="${ERRMAILAUTO} Le domaine ${DOMAINE_EN_COURS} n' est pas dans la liste autorisée" + fi + if [ ! -z "${ERRMAILAUTO}" ] + then + PostMattermost "Erreur de script auto : ${ERRMAILAUTO}" "Creation-Comptes" + echo "Erreur de script auto : ${ERRMAILAUTO}" + exit + fi + fi # On constitue l' ident kaz pour le ldap IDENT_KAZ=$(unaccent utf8 "${PRENOM,,}.${NOM,,}") @@ -649,6 +670,7 @@ agoraEnabled: ${TRUE_KAZ}\n\ userPassword: {CRYPT}${LDAPPASS}\n\n' | ldapmodify -c -H ldap://${LDAP_IP} -D \"cn=${LDAP_ADMIN_USERNAME},${ldap_root}\" -x -w ${LDAP_ADMIN_PASSWORD}" >${TFILE_CREATE_MAIL} # on execute le fichier avec les données ldap pour créer l' entrée dans l' annuaire bash ${TFILE_CREATE_MAIL} >/dev/null +#DID # on colle le compte et le mot de passe dans le fichier echo "Création de : ${EMAIL_SOUHAITE} avec le mot de passe : ${PASSWORD}" >>${TFILE_CREATE_MAIL} OLDIFS=${IFS} @@ -675,7 +697,20 @@ fi createMailAuto() { - echo + echo $@ + if [ "$#" -ne "3" ] + then + echo "$0 pas assez d'arguments" + PostMattermost "Erreur de script $0 ,constacter les sysadmins " "Creation-Comptes" + exit 1 + fi + if [[ ${2} =~ ${regexMail} ]] && [[ ${3} =~ ${regexMail} ]] + then + createMail TRUE ${2} ${3} + else + echo "Les mails sont invalides" + PostMattermost "Erreur de script $0 ,les mails demandés sont malformés" "Creation-Comptes" + fi } createAlias() { @@ -1181,6 +1216,9 @@ updateUser() { usage () { printKazMsg "$PRG [-h] [-v]" printKazMsg "script de gestion des kaznautes" + printKazMsg " -c permet de créer un mail avec son mail de secours en non intereactif" + printKazMsg " syntax : $0 -c mail mailsecours" + printKazMsg " exemple $0 user@kaz.bzh user@apple.fr" printKazMsg " -h aide sur ce script" printKazMsg " -v version du script." } @@ -1223,9 +1261,7 @@ case "$CHOICE" in '2' ) updateUser ;; - '3' ) - # echo "La fonction est supprimée" - # read -p "==> Entrée pour continuer <==" + '3' ) gestPassword ;; '4' )