modif des notifications en cas d'erreurs par mail et sur mattermost

This commit is contained in:
2026-01-20 17:02:53 +01:00
parent c1696bbc6b
commit 3f9e643984

View File

@@ -1,12 +1,12 @@
#!/bin/bash #!/bin/bash
# Ki : did pour créer le fichier createusers.txt
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd) # kan : le 20 janvier 2026
#KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
KAZ_ROOT=/kaz
. $KAZ_ROOT/bin/.commonFunctions.sh . $KAZ_ROOT/bin/.commonFunctions.sh
setKazVars setKazVars
. $DOCKERS_ENV . $DOCKERS_ENV
. $KAZ_KEY_DIR/env-paheko . $KAZ_KEY_DIR/env-paheko
. $KAZ_KEY_DIR/env-kaz . $KAZ_KEY_DIR/env-kaz
@@ -20,10 +20,9 @@ TFILE_INT_PAHEKO_IDFILE=$(mktemp /tmp/XXXXXXXX_TFILE_INT_PAHEKO_IDFILE.json)
FILE_CREATEUSER="$KAZ_ROOT/tmp/createUser.txt" FILE_CREATEUSER="$KAZ_ROOT/tmp/createUser.txt"
FILE_NOTIFICATION="${KAZ_TEMP_DIR}/${PRG}.txt" FILE_NOTIFICATION="${KAZ_TEMP_DIR}/${PRG}.txt"
sep=' ' sep=' '
ERRMSG=""
#trap "rm -f ${TFILE_INT_PAHEKO_IDFILE} ${TFILE_INT_PAHEKO_ACTION} " 0 1 2 3 15
############################################ Fonctions ####################################################### ############################################ Fonctions #######################################################
TEXTE=" TEXTE="
# -- fichier de création des comptes KAZ # -- fichier de création des comptes KAZ
# -- # --
@@ -52,11 +51,19 @@ TEXTE="
# exemple pour un compte asso de l'orga gogol avec le service dédié NC uniquement + une équipe dans l'agora # exemple pour un compte asso de l'orga gogol avec le service dédié NC uniquement + une équipe dans l'agora
# dupont ; jean-louis; jean-louis.dupont@kaz.bzh ; gregomondo@kaz.bzh; gogol ; O; O; N; N; N; N;N;;gogol_team; 10 # dupont ; jean-louis; jean-louis.dupont@kaz.bzh ; gregomondo@kaz.bzh; gogol ; O; O; N; N; N; N;N;;gogol_team; 10
" "
PostMattermost() {
PostM=$1
CHANNEL="kaz:Creation-Comptes"
. $KAZ_KEY_DIR/env-mattermostAdmin
docker exec -ti ${mattermostServName} bin/mmctl --suppress-warnings auth login $httpProto://$URL_AGORA --name local-server --username $mattermost_user --password $mattermost_pass >/dev/null 2>&1
docker exec -ti mattermostServ bin/mmctl post create ${CHANNEL} --message ${PostM} >/dev/null 2>&1
}
ExpMail() { ExpMail() {
MAIL_DEST=$1 MAIL_DEST=$1
MAIL_SUJET=$2 MAIL_SUJET=$2
MAIL_TEXTE=$3 MAIL_TEXTE=$3
printf "Subject:${MAIL_SUJET}\n${MAIL_TEXTE}" | msmtp ${MAIL_DEST} echo "$MAIL_TEXTE" | mail -s ${MAIL_SUJET} ${MAIL_DEST}
} }
Int_paheko_Action() { Int_paheko_Action() {
@@ -84,10 +91,9 @@ Int_paheko_Action() {
eval $VAL_GAR=$(jq .$VAL_GAR ${TFILE_INT_PAHEKO_IDFILE}) eval $VAL_GAR=$(jq .$VAL_GAR ${TFILE_INT_PAHEKO_IDFILE})
done done
################################ ################################
# test du mail valide en $domain # test du mail valide en $domain : si oui on remplie la variable ERRMSG et on créé le fichier de notification"
echo ${email} | grep -i "${domain}" >/dev/null || { echo "Erreur : le mail ${email} n'est pas en ${domain}"; exit ;} echo ${email} | grep -i "${domain}" >/dev/null || { ERRMSG="- Le mail ${email} n'est pas en ${domain}";touch ${FILE_NOTIFICATION} 2>/dev/null;}
################################ ################################
#comme tout va bien on continue
#on compte le nom de champs dans la zone nom pour gérer les noms et prénoms composés #on compte le nom de champs dans la zone nom pour gérer les noms et prénoms composés
# si il y a 3 champs, on associe les 2 premieres valeurs avec un - et on laisse le 3ème identique # si il y a 3 champs, on associe les 2 premieres valeurs avec un - et on laisse le 3ème identique
# si il y a 4 champs on associe les 1 et le 2 avec un tiret et le 3 et 4 avec un tiret # si il y a 4 champs on associe les 1 et le 2 avec un tiret et le 3 et 4 avec un tiret
@@ -99,18 +105,11 @@ Int_paheko_Action() {
if [[ "$nom_orga" = null ]] || [[ "$nom_orga" != null && "$id_service" = "7" ]] if [[ "$nom_orga" = null ]] || [[ "$nom_orga" != null && "$id_service" = "7" ]]
then then
[ "$OPTION" = "silence" ] || echo -e "${NC}Abonné ${GREEN}${nom}${NC}" [ "$OPTION" = "silence" ] || echo -e "${NC}Abonné ${GREEN}${nom}${NC}"
#si lactivité est membre rattaché on affiche a quelle orga il est rattaché
if [ "$id_service" = "7" ] && [ "$OPTION" != "silence" ] && [ "$nom_orga" != null ]
then
echo -e "${NC}Orga Rattachée : ${GREEN}${nom_orga}${NC}"
fi
COMPTE_NOM=$(echo $nom | awk -F' ' '{for (i=1; i != NF; i++); print i;}') COMPTE_NOM=$(echo $nom | awk -F' ' '{for (i=1; i != NF; i++); print i;}')
echo "${COMPTE_NOM}"
case "${COMPTE_NOM}" in case "${COMPTE_NOM}" in
0|1) 0|1)
echo "Il faut corriger le champ nom (il manque un nom ou prénom) de paheko" ERRMSG="${ERRMSG} - Il faut corriger le champ nom (il manque un nom ou prénom)"
echo "je quitte et supprime le fichier ${FILE_CREATEUSER}"
rm -f $FILE_CREATEUSER
exit 2
;; ;;
2) 2)
nom_ok=$(echo $nom | awk -F' ' '{print $1}') nom_ok=$(echo $nom | awk -F' ' '{print $1}')
@@ -122,13 +121,9 @@ Int_paheko_Action() {
for i in ${nom}; do grep -q '^[A-Z]*$' <<<"${i}" && nom_ok="${nom_ok}${sep}${i}" || prenom_ok="${prenom_ok}${sep}${i}"; done for i in ${nom}; do grep -q '^[A-Z]*$' <<<"${i}" && nom_ok="${nom_ok}${sep}${i}" || prenom_ok="${prenom_ok}${sep}${i}"; done
nom_ok="${nom_ok#${sep}}" nom_ok="${nom_ok#${sep}}"
prenom_ok="${prenom_ok#${sep}}" prenom_ok="${prenom_ok#${sep}}"
if [ -z "${nom_ok}" ] || [ -z "${prenom_ok}" ]; then if [ -z "${nom_ok}" ] || [ -z "${prenom_ok}" ]
ERRMSG="Erreur : Il faut corriger le champ nom qui contient plus de 2 infos dans paheko" then
OLDIFS=${IFS} ERRMSG="${ERRMSG} - Il faut corriger le champ nom qui contient plus de 2 infos"
IFS=''
[ "${IP_MAIL}" = "true" ] && ExpMail ${IP_MAILDEST} "Erreur dans la fiche paheko" "${ERRMSG}" || echo ${ERRMSG}
rm -f $FILE_CREATEUSER
exit
fi fi
esac esac
# comme l' orga est à null nom orga est a vide, pas d' admin orga, on met dans l' agora générale # comme l' orga est à null nom orga est a vide, pas d' admin orga, on met dans l' agora générale
@@ -148,12 +143,7 @@ Int_paheko_Action() {
# test des caractères autorisés dans le nom d' orga: lettres, chiffres et/ou le tiret # test des caractères autorisés dans le nom d' orga: lettres, chiffres et/ou le tiret
if ! [[ "${nom_ok}" =~ ^[[:alnum:]-]+$ ]] if ! [[ "${nom_ok}" =~ ^[[:alnum:]-]+$ ]]
then then
OLDIFS=${IFS} ERRMSG="${ERRMSG} - L' orga doit être avec des lettres et/ou des chiffres. Le séparateur doit être le tiret"
IFS=''
ERRMSG="Erreur : l' orga doit être avec des lettres et/ou des chiffres. Le séparateur doit être le tiret"
[ "${IP_MAIL}" = "true" ] && ExpMail ${IP_MAILDEST} "Erreur dans la fiche Paheko" "${ERRMSG}" || echo ${ERRMSG}
rm -f $FILE_CREATEUSER
exit 2
fi fi
prenom_ok=organisation prenom_ok=organisation
equipe_agora=$nom_orga equipe_agora=$nom_orga
@@ -170,8 +160,27 @@ Int_paheko_Action() {
wordpress=$(echo $wordpress | sed -e 's/0/N/g' | sed -e 's/1/O/g') wordpress=$(echo $wordpress | sed -e 's/0/N/g' | sed -e 's/1/O/g')
agora=$(echo $agora | sed -e 's/0/N/g' | sed -e 's/1/O/g') agora=$(echo $agora | sed -e 's/0/N/g' | sed -e 's/1/O/g')
docuwiki=$(echo $docuwiki | sed -e 's/0/N/g' | sed -e 's/1/O/g') docuwiki=$(echo $docuwiki | sed -e 's/0/N/g' | sed -e 's/1/O/g')
# et enfin on écrit dans le fichier # et enfin on écrit dans le fichier si pas d'erreurs
if ! [[ -z ${ERRMSG} ]]
then
OLDIFS=${IFS}
IFS=''
# si l'envoi de mail est ok et qu'on a pas déjà écrit alors on envoi un mail
if [[ "${IP_MAIL}" = "true" && "$(cat ${FILE_NOTIFICATION})" -ne "1" ]]
then
ExpMail ${IP_MAILDEST} "Erreur dans la fiche paheko" "${ERRMSG}"
PostMattermost "Erreur dans la fiche paheko ${email}"
echo 1 >${FILE_NOTIFICATION}
fi
IFS=${OLDIFS}
[ "$OPTION" = "silence" ] || echo ${ERRMSG}
exit
else
# on créé le fichier et on met 0 le fichier de notification
echo "$nom_ok;$prenom_ok;$email;$email_secours;$nom_orga;$admin_orga;$cloud;$paheko;$wordpress;$agora;$docuwiki;$nc_base;$groupe_nc_base;$equipe_agora;$quota_disque">>${FILE_CREATEUSER} echo "$nom_ok;$prenom_ok;$email;$email_secours;$nom_orga;$admin_orga;$cloud;$paheko;$wordpress;$agora;$docuwiki;$nc_base;$groupe_nc_base;$equipe_agora;$quota_disque">>${FILE_CREATEUSER}
#on met 0 dans le fichier de notifiction
echo 0 >${FILE_NOTIFICATION}
fi
done done
else else
[ "$OPTION" = "silence" ] || echo "Rien à créer" [ "$OPTION" = "silence" ] || echo "Rien à créer"
@@ -179,5 +188,7 @@ Int_paheko_Action() {
fi fi
} }
# Main # Main
# on créé le fichier de notif au cas ou il serait éffacé
touch ${FILE_NOTIFICATION} >/dev/null 2>&1
Int_paheko_Action "A créer" "silence" Int_paheko_Action "A créer" "silence"
exit 0 exit 0