iajout du -r reset mot de passe en mode non interctif
This commit is contained in:
+43
-23
@@ -3,8 +3,8 @@
|
|||||||
# Ki : Did
|
# Ki : Did
|
||||||
# koi : gestion globale des users Kaz mais aussi les users d'autres domaines hébergés
|
# 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=/kaz
|
||||||
. $KAZ_ROOT/bin/.commonFunctions.sh
|
. $KAZ_ROOT/bin/.commonFunctions.sh
|
||||||
setKazVars
|
setKazVars
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ setKazVars
|
|||||||
. $KAZ_KEY_DIR/env-sympaServ
|
. $KAZ_KEY_DIR/env-sympaServ
|
||||||
. $KAZ_KEY_DIR/env-paheko
|
. $KAZ_KEY_DIR/env-paheko
|
||||||
|
|
||||||
VERSION="04-10-2026"
|
VERSION="20-10-2026"
|
||||||
PRG=$(basename $0)
|
PRG=$(basename $0)
|
||||||
RACINE=$(echo $PRG | awk '{print $1}')
|
RACINE=$(echo $PRG | awk '{print $1}')
|
||||||
IFS=' '
|
IFS=' '
|
||||||
@@ -207,7 +207,7 @@ infoEmail() {
|
|||||||
echo -ne " - Place disque des mails : "
|
echo -ne " - Place disque des mails : "
|
||||||
cd ${DOCK_VOL}/postfix_mailData/_data/${DOMAINE_EN_COURS}
|
cd ${DOCK_VOL}/postfix_mailData/_data/${DOMAINE_EN_COURS}
|
||||||
echo -ne "${GREEN}"
|
echo -ne "${GREEN}"
|
||||||
du -sh $(echo ${CHOIX_MAIL} | sed -e 's/@.*//') | cut -c 1-4
|
[ -d ${CHOIX_MAIL} ] && du -sh $(echo ${CHOIX_MAIL} | sed -e 's/@.*//') | cut -c 1-4
|
||||||
echo -ne "${NC}"
|
echo -ne "${NC}"
|
||||||
echo -n " - Quota Nextcloud (Ldap) : "
|
echo -n " - Quota Nextcloud (Ldap) : "
|
||||||
echo -ne "${GREEN}"
|
echo -ne "${GREEN}"
|
||||||
@@ -395,7 +395,9 @@ searchDestroy() {
|
|||||||
|
|
||||||
gestPassword() {
|
gestPassword() {
|
||||||
ACTION_EN_COURS="Gestion du mot de passe d'un compte"
|
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
|
#cree un mdp acceptable par postfix/nc/mattermost
|
||||||
PASSWORD=_`apg -n 1 -m 10 -M NCL -d`_
|
PASSWORD=_`apg -n 1 -m 10 -M NCL -d`_
|
||||||
COMPTE_A_MODIFIER=${CHOIX_MAIL}
|
COMPTE_A_MODIFIER=${CHOIX_MAIL}
|
||||||
@@ -410,6 +412,9 @@ gestPassword() {
|
|||||||
else
|
else
|
||||||
ADRESSE_SEC="OUI"
|
ADRESSE_SEC="OUI"
|
||||||
fi
|
fi
|
||||||
|
# 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
|
# 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
|
# si c' est le cas ça veut dire qu' il faut changer le mot de passe dans le cloud de l' orga
|
||||||
@@ -420,6 +425,7 @@ gestPassword() {
|
|||||||
then
|
then
|
||||||
printKazError "L'adresse apparait dans plusieurs orga comme mails rattaché IL EST PREFERABLE DE REPONDRE NON !!!"
|
printKazError "L'adresse apparait dans plusieurs orga comme mails rattaché IL EST PREFERABLE DE REPONDRE NON !!!"
|
||||||
fi
|
fi
|
||||||
|
echo -e "$GREEN Mail de secours = $RED ${MAIL_SECOURS} ${NC}"
|
||||||
##########################################################################
|
##########################################################################
|
||||||
read -p "ON CONTINUE ? [ o / n ]: " SEARCH_RESET_INPUT
|
read -p "ON CONTINUE ? [ o / n ]: " SEARCH_RESET_INPUT
|
||||||
if [ "$SEARCH_RESET_INPUT" = "n" ] || [ "$SEARCH_RESET_INPUT" = "N" ]
|
if [ "$SEARCH_RESET_INPUT" = "n" ] || [ "$SEARCH_RESET_INPUT" = "N" ]
|
||||||
@@ -427,20 +433,29 @@ gestPassword() {
|
|||||||
clear
|
clear
|
||||||
gestPassword
|
gestPassword
|
||||||
fi
|
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" ]
|
if [ "$SEARCH_RESET_INPUT" = "o" ] || [ "$SEARCH_RESET_INPUT" = "O" ]
|
||||||
then
|
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')
|
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')
|
||||||
|
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 Compte à modifier = $RED ${COMPTE_A_MODIFIER} ${NC}"
|
||||||
echo -e "$GREEN Mail de secours = $RED ${MAIL_SECOURS} ${NC}"
|
echo -e "$GREEN Mail de secours = $RED ${MAIL_SECOURS} ${NC}"
|
||||||
echo -e "$GREEN Compte $RED $(searchMattermost $COMPTE_A_MODIFIER) ${NC}"
|
echo -e "$GREEN ID Mattermost $RED ${USER_ID_MATTERMOST} ${NC}"
|
||||||
echo -e "$GREEN Compte Nextcloud $RED ${USER_NEXTCLOUD_MODIF} ${NC}"
|
echo -e "$GREEN Compte Nextcloud $RED ${USER_NEXTCLOUD_MODIF} ${NC}"
|
||||||
echo -e "$GREEN Le mot de passe sera = $RED ${PASSWORD} ${NC}"
|
echo -e "$GREEN Le mot de passe sera = $RED ${PASSWORD} ${NC}"
|
||||||
|
read -p "entrée pour continuer"
|
||||||
#maj du mdp sur mattermost avec l'api et non plus avec mmctl
|
fi
|
||||||
#docker exec -ti mattermostServ bin/mmctl user change-password $(searchMattermost ${COMPTE_A_MODIFIER}) -p ${PASSWORD} >/dev/null 2>&1
|
#maj du mdp sur mattermost avec l'api si l'id n'est pas vide
|
||||||
USER_ID=$(searchMattermost "${COMPTE_A_MODIFIER}")
|
if [ "${USER_ID_MATTERMOST}" != "" ]
|
||||||
#echo "user_id = "$USER_ID
|
then
|
||||||
|
USER_ID_MATTERMOST=$(searchMattermost "${COMPTE_A_MODIFIER}")
|
||||||
. "$KAZ_KEY_DIR/env-mattermostAdmin"
|
. "$KAZ_KEY_DIR/env-mattermostAdmin"
|
||||||
#il arrive que l'api MM sorte un 401, je boucle
|
#il arrive que l'api MM sorte un 401, je boucle
|
||||||
while true
|
while true
|
||||||
@@ -449,11 +464,8 @@ gestPassword() {
|
|||||||
-X PUT \
|
-X PUT \
|
||||||
-H "Authorization: Bearer ${mattermost_token}" \
|
-H "Authorization: Bearer ${mattermost_token}" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
"${URL_AGORA_API}/users/${USER_ID}/password" \
|
"${URL_AGORA_API}/users/${USER_ID_MATTERMOST}/password" \
|
||||||
-d "{\"new_password\":\"${PASSWORD}\"}")
|
-d "{\"new_password\":\"${PASSWORD}\"}")
|
||||||
|
|
||||||
#echo "Mattermost : HTTP <${HTTP_CODE}>"
|
|
||||||
|
|
||||||
if [ "${HTTP_CODE}" = "200" ]
|
if [ "${HTTP_CODE}" = "200" ]
|
||||||
then
|
then
|
||||||
break
|
break
|
||||||
@@ -468,18 +480,23 @@ gestPassword() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
done
|
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
|
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})
|
pass=$(mkpasswd -m sha512crypt ${PASSWORD})
|
||||||
echo -e "\n\ndn: cn=${COMPTE_A_MODIFIER},ou=users,${ldap_root}\n\
|
echo -e "\n\ndn: cn=${COMPTE_A_MODIFIER},ou=users,${ldap_root}\n\
|
||||||
changeType: modify\n\
|
changeType: modify\n\
|
||||||
replace: userPassword\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}"
|
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
|
||||||
echo -e "Envoi d'un message dans mattermost pour la modification du mot de passe"
|
[ -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"
|
PostMattermost "Le mot de passe du compte ${COMPTE_A_MODIFIER} a été modifié" "Creation-Comptes"
|
||||||
if [ ${ADRESSE_SEC} == "OUI" ]
|
if [ ${ADRESSE_SEC} == "OUI" ]
|
||||||
then
|
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="
|
MAIL_CHANG="
|
||||||
Hello,
|
Hello,
|
||||||
|
|
||||||
@@ -499,15 +516,12 @@ Ainsi, tout le monde pourra répondre mais aussi bénéficier des réponses appo
|
|||||||
Bonne journée 😉
|
Bonne journée 😉
|
||||||
"
|
"
|
||||||
ExpMail ${MAIL_SECOURS} "Modification du compte" "${MAIL_CHANG}"
|
ExpMail ${MAIL_SECOURS} "Modification du compte" "${MAIL_CHANG}"
|
||||||
read -p " ---------------------- Appuyer sur une touche pour continuer -------------------------"
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
if [ ${ADRESSE_SEC} == "NON" ]
|
if [ ${ADRESSE_SEC} == "NON" ]
|
||||||
then
|
then
|
||||||
echo -e "${RED} Pas d adresse de secours ${NC}"
|
echo -e "${RED} Pas d adresse de secours ${NC}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
createMail() {
|
createMail() {
|
||||||
@@ -1217,6 +1231,8 @@ usage () {
|
|||||||
printKazMsg " -c permet de créer un mail avec son mail de secours en non intereactif"
|
printKazMsg " -c permet de créer un mail avec son mail de secours en non intereactif"
|
||||||
printKazMsg " syntax : $0 -c mail mailsecours"
|
printKazMsg " syntax : $0 -c mail mailsecours"
|
||||||
printKazMsg " exemple $0 user@kaz.bzh user@apple.fr"
|
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 " -h aide sur ce script"
|
||||||
printKazMsg " -v version du script."
|
printKazMsg " -v version du script."
|
||||||
}
|
}
|
||||||
@@ -1312,6 +1328,10 @@ case "$1" in
|
|||||||
createMailAuto $@
|
createMailAuto $@
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
|
'-r' )
|
||||||
|
[[ ${2} =~ ${regexMail} ]] && gestPassword $2 || echo "le 2ème argument doit être un mail"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# on teste la présence du domaine du site dans le fichier autorized-domains.txt
|
# on teste la présence du domaine du site dans le fichier autorized-domains.txt
|
||||||
|
|||||||
Reference in New Issue
Block a user