iajout du -r reset mot de passe en mode non interctif
This commit is contained in:
+88
-68
@@ -3,8 +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=/kaz
|
||||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
|
||||
#KAZ_ROOT=/kaz
|
||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||
setKazVars
|
||||
|
||||
@@ -14,7 +14,7 @@ setKazVars
|
||||
. $KAZ_KEY_DIR/env-sympaServ
|
||||
. $KAZ_KEY_DIR/env-paheko
|
||||
|
||||
VERSION="04-10-2026"
|
||||
VERSION="20-10-2026"
|
||||
PRG=$(basename $0)
|
||||
RACINE=$(echo $PRG | awk '{print $1}')
|
||||
IFS=' '
|
||||
@@ -205,10 +205,10 @@ infoEmail() {
|
||||
ldapsearch -H ldap://${LDAP_IP} -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i mailquota | cut -c 11-60
|
||||
echo -ne "${NC}"
|
||||
echo -ne " - Place disque des mails : "
|
||||
cd ${DOCK_VOL}/postfix_mailData/_data/${DOMAINE_EN_COURS}
|
||||
echo -ne "${GREEN}"
|
||||
du -sh $(echo ${CHOIX_MAIL} | sed -e 's/@.*//') | cut -c 1-4
|
||||
echo -ne "${NC}"
|
||||
cd ${DOCK_VOL}/postfix_mailData/_data/${DOMAINE_EN_COURS}
|
||||
echo -ne "${GREEN}"
|
||||
[ -d ${CHOIX_MAIL} ] && du -sh $(echo ${CHOIX_MAIL} | sed -e 's/@.*//') | cut -c 1-4
|
||||
echo -ne "${NC}"
|
||||
echo -n " - Quota Nextcloud (Ldap) : "
|
||||
echo -ne "${GREEN}"
|
||||
ldapsearch -H ldap://${LDAP_IP} -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${LDAP_ADMIN_PASSWORD}" -b "cn=${CHOIX_MAIL},ou=users,${ldap_root}" | grep -i nextcloudquota | cut -c 17-60
|
||||
@@ -395,11 +395,13 @@ searchDestroy() {
|
||||
|
||||
gestPassword() {
|
||||
ACTION_EN_COURS="Gestion du mot de passe d'un compte"
|
||||
searchEmail
|
||||
# si on a passé un argument à la fonction on force le mail
|
||||
# on est mode non interactif
|
||||
[ -z "${1}" ] && searchEmail || CHOIX_MAIL="${1}"
|
||||
#cree un mdp acceptable par postfix/nc/mattermost
|
||||
PASSWORD=_`apg -n 1 -m 10 -M NCL -d`_
|
||||
COMPTE_A_MODIFIER=${CHOIX_MAIL}
|
||||
# On considère le mot de passe de secours de ldap
|
||||
# On considère le mot de passe de secours de ldap
|
||||
MAIL_SECOURS=$(ldapsearch -H ldap://${LDAP_IP} \
|
||||
-x -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" \
|
||||
-w "${LDAP_ADMIN_PASSWORD}" \
|
||||
@@ -410,76 +412,91 @@ gestPassword() {
|
||||
else
|
||||
ADRESSE_SEC="OUI"
|
||||
fi
|
||||
##############################################################################
|
||||
# on cherche le moyen de savoir si ce mail est le mail dans une orga
|
||||
# si c' est le cas ça veut dire qu' il faut changer le mot de passe dans le cloud de l' orga
|
||||
rm -rf /tmp/FICMAILORGA*
|
||||
EMAIL_ORGA_TROUVE=0
|
||||
EMAIL_ORGA_TROUVE=$(curl -s ${URL_PAHEKO}/api/sql -d "SELECT id FROM users where emails_Rattaches like '%$CHOIX_MAIL%' ;" | jq .results[].id | wc -l)
|
||||
if [ $EMAIL_ORGA_TROUVE -ge 1 ]
|
||||
# si on est mode non interactif
|
||||
if [ -z "${1}" ]
|
||||
then
|
||||
##############################################################################
|
||||
# on cherche le moyen de savoir si ce mail est le mail dans une orga
|
||||
# si c' est le cas ça veut dire qu' il faut changer le mot de passe dans le cloud de l' orga
|
||||
rm -rf /tmp/FICMAILORGA*
|
||||
EMAIL_ORGA_TROUVE=0
|
||||
EMAIL_ORGA_TROUVE=$(curl -s ${URL_PAHEKO}/api/sql -d "SELECT id FROM users where emails_Rattaches like '%$CHOIX_MAIL%' ;" | jq .results[].id | wc -l)
|
||||
if [ $EMAIL_ORGA_TROUVE -ge 1 ]
|
||||
then
|
||||
printKazError "L'adresse apparait dans plusieurs orga comme mails rattaché IL EST PREFERABLE DE REPONDRE NON !!!"
|
||||
fi
|
||||
##########################################################################
|
||||
read -p "ON CONTINUE ? [ o / n ]: " SEARCH_RESET_INPUT
|
||||
if [ "$SEARCH_RESET_INPUT" = "n" ] || [ "$SEARCH_RESET_INPUT" = "N" ]
|
||||
then
|
||||
clear
|
||||
gestPassword
|
||||
fi
|
||||
echo -e "$GREEN Mail de secours = $RED ${MAIL_SECOURS} ${NC}"
|
||||
##########################################################################
|
||||
read -p "ON CONTINUE ? [ o / n ]: " SEARCH_RESET_INPUT
|
||||
if [ "$SEARCH_RESET_INPUT" = "n" ] || [ "$SEARCH_RESET_INPUT" = "N" ]
|
||||
then
|
||||
clear
|
||||
gestPassword
|
||||
fi
|
||||
else
|
||||
# on est en mode non interactif donc on force la réponse précedente à oui
|
||||
SEARCH_RESET_INPUT="o"
|
||||
fi
|
||||
if [ "$SEARCH_RESET_INPUT" = "o" ] || [ "$SEARCH_RESET_INPUT" = "O" ]
|
||||
then
|
||||
USER_NEXTCLOUD_MODIF=$(curl -s -X GET -H 'OCS-APIRequest:true' $httpProto://admin:$NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users?search=${COMPTE_A_MODIFIER} | grep element | sed -e 's/[ \<\>\/]//g' -e 's/element//g')
|
||||
echo -e "$GREEN Compte à modifier = $RED ${COMPTE_A_MODIFIER} ${NC}"
|
||||
echo -e "$GREEN Mail de secours = $RED ${MAIL_SECOURS} ${NC}"
|
||||
echo -e "$GREEN Compte $RED $(searchMattermost $COMPTE_A_MODIFIER) ${NC}"
|
||||
echo -e "$GREEN Compte Nextcloud $RED ${USER_NEXTCLOUD_MODIF} ${NC}"
|
||||
echo -e "$GREEN Le mot de passe sera = $RED ${PASSWORD} ${NC}"
|
||||
|
||||
#maj du mdp sur mattermost avec l'api et non plus avec mmctl
|
||||
#docker exec -ti mattermostServ bin/mmctl user change-password $(searchMattermost ${COMPTE_A_MODIFIER}) -p ${PASSWORD} >/dev/null 2>&1
|
||||
USER_ID=$(searchMattermost "${COMPTE_A_MODIFIER}")
|
||||
#echo "user_id = "$USER_ID
|
||||
|
||||
. "$KAZ_KEY_DIR/env-mattermostAdmin"
|
||||
#il arrive que l'api MM sorte un 401, je boucle
|
||||
while true
|
||||
do
|
||||
HTTP_CODE=$(curl -sS -o /dev/null -w "%{http_code}" \
|
||||
-X PUT \
|
||||
-H "Authorization: Bearer ${mattermost_token}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"${URL_AGORA_API}/users/${USER_ID}/password" \
|
||||
-d "{\"new_password\":\"${PASSWORD}\"}")
|
||||
|
||||
#echo "Mattermost : HTTP <${HTTP_CODE}>"
|
||||
|
||||
if [ "${HTTP_CODE}" = "200" ]
|
||||
then
|
||||
USER_ID_MATTERMOST=$(searchMattermost $COMPTE_A_MODIFIER)
|
||||
[ $(echo ${USER_ID_MATTERMOST} | grep "missing") ] && USER_ID_MATTERMOST=""
|
||||
# on passe la message de résumé en mode non intéractif
|
||||
if [ -z "${1}" ]
|
||||
then
|
||||
echo -e "$GREEN Compte à modifier = $RED ${COMPTE_A_MODIFIER} ${NC}"
|
||||
echo -e "$GREEN Mail de secours = $RED ${MAIL_SECOURS} ${NC}"
|
||||
echo -e "$GREEN ID Mattermost $RED ${USER_ID_MATTERMOST} ${NC}"
|
||||
echo -e "$GREEN Compte Nextcloud $RED ${USER_NEXTCLOUD_MODIF} ${NC}"
|
||||
echo -e "$GREEN Le mot de passe sera = $RED ${PASSWORD} ${NC}"
|
||||
read -p "entrée pour continuer"
|
||||
fi
|
||||
#maj du mdp sur mattermost avec l'api si l'id n'est pas vide
|
||||
if [ "${USER_ID_MATTERMOST}" != "" ]
|
||||
then
|
||||
USER_ID_MATTERMOST=$(searchMattermost "${COMPTE_A_MODIFIER}")
|
||||
. "$KAZ_KEY_DIR/env-mattermostAdmin"
|
||||
#il arrive que l'api MM sorte un 401, je boucle
|
||||
while true
|
||||
do
|
||||
HTTP_CODE=$(curl -sS -o /dev/null -w "%{http_code}" \
|
||||
-X PUT \
|
||||
-H "Authorization: Bearer ${mattermost_token}" \
|
||||
-H "Content-Type: application/json" \
|
||||
"${URL_AGORA_API}/users/${USER_ID_MATTERMOST}/password" \
|
||||
-d "{\"new_password\":\"${PASSWORD}\"}")
|
||||
if [ "${HTTP_CODE}" = "200" ]
|
||||
then
|
||||
break
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "${HTTP_CODE}" = "401" ]
|
||||
then
|
||||
echo "Authentification Mattermost refusée, nouvelle tentative dans 2 secondes..."
|
||||
sleep 2
|
||||
else
|
||||
echo "ERREUR : changement du mot de passe Mattermost : HTTP ${HTTP_CODE}"
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
|
||||
curl -H 'OCS-APIREQUEST: true' -X PUT $httpProto://admin:$NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users/${USER_NEXTCLOUD_MODIF} -d key=password -d value=${PASSWORD} >/dev/null 2>&1
|
||||
if [ "${HTTP_CODE}" = "401" ]
|
||||
then
|
||||
echo "Authentification Mattermost refusée, nouvelle tentative dans 2 secondes..."
|
||||
sleep 2
|
||||
else
|
||||
echo "ERREUR : changement du mot de passe Mattermost : HTTP ${HTTP_CODE}"
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
# si le user nextcloud n'est pas vide alors on lui change son mot de passe
|
||||
if [ "${USER_NEXTCLOUD_MODIF}" != "" ]
|
||||
then
|
||||
curl -H 'OCS-APIREQUEST: true' -X PUT $httpProto://admin:$NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users/${USER_NEXTCLOUD_MODIF} -d key=password -d value=${PASSWORD} >/dev/null 2>&1
|
||||
fi
|
||||
# on fait un mot de passe pour ldap en shacrypt
|
||||
pass=$(mkpasswd -m sha512crypt ${PASSWORD})
|
||||
echo -e "\n\ndn: cn=${COMPTE_A_MODIFIER},ou=users,${ldap_root}\n\
|
||||
changeType: modify\n\
|
||||
replace: userPassword\n\
|
||||
userPassword: {CRYPT}${pass}\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${LDAP_ADMIN_PASSWORD}"
|
||||
echo -e "Envoi d'un message dans mattermost pour la modification du mot de passe"
|
||||
userPassword: {CRYPT}${pass}\n\n" | ldapmodify -c -H ldap://${LDAP_IP} -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${LDAP_ADMIN_PASSWORD}" >/dev/null 2>&1
|
||||
[ -z "${1}" ] && echo -e "Envoi d'un message dans mattermost pour la modification du mot de passe"
|
||||
PostMattermost "Le mot de passe du compte ${COMPTE_A_MODIFIER} a été modifié" "Creation-Comptes"
|
||||
if [ ${ADRESSE_SEC} == "OUI" ]
|
||||
then
|
||||
echo -e "Envoi d'un message à l' adresse de secours : $GREEN${MAIL_SECOURS}${NC}"
|
||||
[ -z "${1}" ] && echo -e "Envoi d'un message à l' adresse de secours : $GREEN${MAIL_SECOURS}${NC}"
|
||||
MAIL_CHANG="
|
||||
Hello,
|
||||
|
||||
@@ -498,16 +515,13 @@ Ainsi, tout le monde pourra répondre mais aussi bénéficier des réponses appo
|
||||
|
||||
Bonne journée 😉
|
||||
"
|
||||
ExpMail ${MAIL_SECOURS} "Modification du compte" "${MAIL_CHANG}"
|
||||
read -p " ---------------------- Appuyer sur une touche pour continuer -------------------------"
|
||||
|
||||
ExpMail ${MAIL_SECOURS} "Modification du compte" "${MAIL_CHANG}"
|
||||
fi
|
||||
if [ ${ADRESSE_SEC} == "NON" ]
|
||||
then
|
||||
echo -e "${RED} Pas d adresse de secours ${NC}"
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
createMail() {
|
||||
@@ -1217,6 +1231,8 @@ usage () {
|
||||
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 " -r permet de reset un mot de passe de compte en mode non interactif"
|
||||
printKazMsg " syntax : $0 -r mail"
|
||||
printKazMsg " -h aide sur ce script"
|
||||
printKazMsg " -v version du script."
|
||||
}
|
||||
@@ -1312,6 +1328,10 @@ case "$1" in
|
||||
createMailAuto $@
|
||||
exit
|
||||
;;
|
||||
'-r' )
|
||||
[[ ${2} =~ ${regexMail} ]] && gestPassword $2 || echo "le 2ème argument doit être un mail"
|
||||
exit
|
||||
;;
|
||||
esac
|
||||
|
||||
# on teste la présence du domaine du site dans le fichier autorized-domains.txt
|
||||
|
||||
Reference in New Issue
Block a user