ajout de la suppression en non interactif

This commit is contained in:
Didier committed 2026-11-01 11:49:41 +01:00
1 parent 390b0e5db2
commit 4cd82fb5bf
1 file changed
+125 -81
+125 -81
View File
@@ -14,7 +14,7 @@ setKazVars
. $KAZ_KEY_DIR/env-sympaServ
. $KAZ_KEY_DIR/env-paheko
VERSION="20-10-2026"
VERSION="01-11-2026"
PRG=$(basename $0)
RACINE=$(echo $PRG | awk '{print $1}')
IFS=' '
@@ -142,8 +142,8 @@ searchMattermost() {
. $KAZ_KEY_DIR/env-mattermostAdmin
curl -s -H "Authorization: Bearer ${mattermost_token}" "${URL_AGORA_API}/users/email/${1}" >${TFILE_CPT_MATTERMOST} 2>/dev/null
REP_SEARCH_MATTERMOST=$(jq -r .id ${TFILE_CPT_MATTERMOST})
if [ ! -z ${REP_SEARCH_MATTERMOST} ]
then
if [ ! -z ${REP_SEARCH_MATTERMOST} ]
then
if [ "$2" = "DETAILS" ]
then
echo -e -n "${RED} Compte : ${GREEN} " ; jq -r .username ${TFILE_CPT_MATTERMOST}
@@ -152,9 +152,9 @@ searchMattermost() {
else
echo "${REP_SEARCH_MATTERMOST}"
fi
else
echo ""
fi
else
echo ""
fi
}
@@ -163,9 +163,9 @@ infoEmail() {
while :
do
clear
echo "------------------------------------------------"
echo "------------------------------------------------"
printKazMsg "${ACTION_EN_COURS}"
echo "------------------------------------------------"
echo "------------------------------------------------"
read -p "Alias ou Mail ? (R pour retour ou M/A [M] :" RINFOMAIL
case ${RINFOMAIL} in
"" | M | m )
@@ -270,9 +270,12 @@ infoEmail() {
}
searchDestroy() {
ACTION_EN_COURS="Suppression d'un compte"
ACTION_EN_COURS="Suppression d'un compte"
DEL_AUTO=${1}
DEL_MAIL=${2}
if [ "${DEL_AUTO}" != "TRUE" ]
then
clear
#TODO pourquoi REP_SEARCH_DESTROY=$(searchEmail) ne marche pas et fait déconner la fonction search_mail, j' en suis la à m' esbaudir
CHOIX_MAIL=""
searchEmail
REP_SEARCH_DESTROY=$CHOIX_MAIL
@@ -284,29 +287,47 @@ searchDestroy() {
echo "Mail de secours = ${MAIL_SECOURS}"
echo "Domaine en cours : ${DOMAINE_EN_COURS}"
echo "--------------------------------- SUPPRESION ----------------------------------------"
else
MAIL_SECOURS=$(ldapsearch -H ldap://${LDAP_IP} \
-x -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" \
-w "${LDAP_ADMIN_PASSWORD}" \
-b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=*${DEL_MAIL}*))" | grep ^mailDeSecours | sed -e 's/^mailDeSecours: //')
REP_SEARCH_DESTROY=$(ldapsearch -H ldap://${LDAP_IP} \
-x -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" \
-w "${LDAP_ADMIN_PASSWORD}" \
-b "${ldap_root}" "(&(objectclass=inetOrgPerson)(cn=*${DEL_MAIL}*))" | grep ^cn | sed -e 's/cn: //' )
[ "${REP_SEARCH_DESTROY}" = "" ] && exit 1
fi
while :
do
echo "----------------------------------------------------------------------"
printKazMsg "${GREEN}${ACTION_EN_COURS}${NC}"
echo "----------------------------------------------------------------------"
echo -e "${BLINK} TOUT RETOUR EN ARRIERE EST IMPOSSIBLE ${NC}"
read -p "ON CONTINUE ? [ o / n ]: " SEARCH_DESTROY_INPUT
if [ "$SEARCH_DESTROY_INPUT" = "n" ] || [ "$SEARCH_DESTROY_INPUT" = "N" ]
# Si on est en intarctif on affiche la demande de validation
if [ "${DEL_AUTO}" != "TRUE" ]
then
searchDestroy
echo "----------------------------------------------------------------------"
printKazMsg "${GREEN}${ACTION_EN_COURS}${NC}"
echo "----------------------------------------------------------------------"
echo -e "${BLINK} TOUT RETOUR EN ARRIERE EST IMPOSSIBLE ${NC}"
read -p "ON CONTINUE ? [ o / n ]: " SEARCH_DESTROY_INPUT
if [ "$SEARCH_DESTROY_INPUT" = "n" ] || [ "$SEARCH_DESTROY_INPUT" = "N" ]
then
searchDestroy
fi
else
# sinon on force la réponse à oui
SEARCH_DESTROY_INPUT="o"
fi
if [ "$SEARCH_DESTROY_INPUT" = "o" ] || [ "$SEARCH_DESTROY_INPUT" = "O" ]
then
####################################################################################################################
# si le domaine en cours est Kaz alors on cherche dans mattermost, dans nextcloud et on supprime
# le mail dans sympa
# si le domaine en cours est Kaz alors on cherche dans mattermost, dans nextcloud et on supprime
# le mail dans sympa
####################################################################################################################
if [ "${DOMAINE_EN_COURS}" = "${domain}" ]
then
MM_USER_ID=$(searchMattermost $REP_SEARCH_DESTROY)
if [ ! -z ${MM_USER_ID} ]
then
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} trouvé dans mattermost ${NC}"
[ "${DEL_AUTO}" != "TRUE" ] && echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} trouvé dans mattermost ${NC}"
status_del=$(curl -s --request DELETE \
--header 'Accept: application/json' \
-H "Authorization: Bearer ${mattermost_token}" \
@@ -315,80 +336,80 @@ searchDestroy() {
then
printKazMsg "Suppresion ok"
else
printKazError -e "Erreur de suppression"
fi
echo " ----------------- "
printKazError -e "Erreur de suppression"
fi
echo " ----------------- "
else
echo "Rien a supprimer dans mattermost"
[ "${DEL_AUTO}" != "TRUE" ] && echo "Rien a supprimer dans mattermost"
fi
echo -e "${NC}"
echo -e "Recherche de ${GREEN} ${REP_SEARCH_DESTROY} ${NC} dans nextcloud"
USER_NEXTCLOUD_SUPPR=$(curl -s -X GET -H 'OCS-APIRequest:true' $httpProto://admin:$NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users?search=${REP_SEARCH_DESTROY} | grep element | sed -s 's/[ \<\>\/]//g' | sed 's/element//g')
if [ ! -z ${USER_NEXTCLOUD_SUPPR} ]
then
printKazMsg "le user trouvé est : ${USER_NEXTCLOUD_SUPPR}"
echo -e "${RED} Suppresion de ${USER_NEXTCLOUD_SUPPR}"
if [ "${DEL_AUTO}" != "TRUE" ]
then
[ "${DEL_AUTO}" != "TRUE" ] && printKazMsg "le user trouvé est : ${USER_NEXTCLOUD_SUPPR}"
[ "${DEL_AUTO}" != "TRUE" ] && echo -e "${RED} Suppresion de ${USER_NEXTCLOUD_SUPPR}"
fi
curl -H 'OCS-APIREQUEST: true' -X DELETE $httpProto://admin:$NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users/${USER_NEXTCLOUD_SUPPR} >/dev/null 2>&1
if [ "$?" -eq "0" ]
then
printKazMsg "Suppresion ok"
else
printKazError "Erreur de suppression"
printKazMsg "Suppresion ok"
else
printKazError "Erreur de suppression"
fi
else
printKazMsg "Rien à supprimer dans Nextcloud"
[ "${DEL_AUTO}" != "TRUE" ] && printKazMsg "Rien à supprimer dans Nextcloud"
fi
echo -e "${NC}"
echo ""
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} et ${MAIL_SECOURS} dans la liste info de sympa"
echo -e "${NC}"
echo ""
#avec ancien client soap
#docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${SOAP_USER} --trusted_application_password=${SOAP_PASSWORD} --proxy_vars=USER_EMAIL=${LISTMASTER} --service=del --service_parameters="${NL_LIST},${REP_SEARCH_DESTROY}"
#docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --trusted_application=${SOAP_USER} --trusted_application_password=${SOAP_PASSWORD} --proxy_vars=USER_EMAIL=${LISTMASTER} --service=del --service_parameters="${NL_LIST},${MAIL_SECOURS}"
#avec nouveau client soap
docker exec -i sympaServ sympa test soap --trusted_application=${SOAP_USER} --trusted_application_password=${SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=del --service_parameters=\"${NL_LIST},${REP_SEARCH_DESTROY}\" ${httpProto}://${URL_LISTE}/sympasoap
docker exec -i sympaServ sympa test soap --trusted_application=${SOAP_USER} --trusted_application_password=${SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=del --service_parameters=\"${NL_LIST},${MAIL_SECOURS}\" ${httpProto}://${URL_LISTE}/sympasoap
echo -e "${NC}"
echo ""
[ "${DEL_AUTO}" != "TRUE" ] && echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} et ${MAIL_SECOURS} dans la liste info de sympa"
echo -e "${NC}"
echo ""
docker exec -i sympaServ sympa test soap --trusted_application=${SOAP_USER} --trusted_application_password=${SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=del --service_parameters=\"${NL_LIST},${REP_SEARCH_DESTROY}\" ${httpProto}://${URL_LISTE}/sympasoap
docker exec -i sympaServ sympa test soap --trusted_application=${SOAP_USER} --trusted_application_password=${SOAP_PASSWORD} --proxy_vars=\"USER_EMAIL=${LISTMASTER}\" --service=del --service_parameters=\"${NL_LIST},${MAIL_SECOURS}\" ${httpProto}://${URL_LISTE}/sympasoap
echo -e "${NC}"
echo ""
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans le serveur de mail"
echo -e "${NC}"
echo ""
else
echo "-------------------------------"
echo "Le domaine n' est pas Kaz.bzh"
echo "-------------------------------"
echo -e "${NC}"
echo ""
[ "${DEL_AUTO}" != "TRUE" ] && echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans le serveur de mail"
echo -e "${NC}"
echo ""
fi
############################## - Fin du cas de Kaz ##########################################################################################
echo -e "${NC}"
echo ""
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans le ldap"
echo -e "${NC}"
echo ""
ldapdelete -H ldap://${LDAP_IP} -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${LDAP_ADMIN_PASSWORD}" "cn=${REP_SEARCH_DESTROY},ou=users,${ldap_root}"
if [ "$?" -eq "0" ]
then
printKazMsg "Suppresion ok"
cd ${DOCK_VOL}/postfix_mailData/_data/${DOMAINE_EN_COURS}
USER_DEL_MAIL=$(echo ${REP_SEARCH_DESTROY} | sed -e 's/@.*//')
echo "Suppression des données ${USER_DEL_MAIL}"
rm -rf ${USER_DEL_MAIL} 2>/dev/null
sleep 2
else
printKazError "Erreur de suppression"
fi
printKazMsg "Envoi d'un message dans mattermost pour la suppression du compte"
PostMattermost "Le compte ${REP_SEARCH_DESTROY} est supprimé , mail envoyé à ${MAIL_SECOURS}" "Creation-Comptes"
MAIL_SUPPR="Le compte ${REP_SEARCH_DESTROY} est supprimé"
OLDIFS=${IFS}
IFS=''
ExpMail ${MAIL_SECOURS} "Suppression de Compte" ${MAIL_SUPPR}
echo -e "${NC}"
IFS=${OLDIFS}
echo -e "${NC}"
echo ""
[ "${DEL_AUTO}" != "TRUE" ] && echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans le ldap"
echo -e "${NC}"
echo ""
ldapdelete -H ldap://${LDAP_IP} -D "cn=${LDAP_ADMIN_USERNAME},${ldap_root}" -x -w "${LDAP_ADMIN_PASSWORD}" "cn=${REP_SEARCH_DESTROY},ou=users,${ldap_root}"
if [ "$?" -eq "0" ]
then
[ "${DEL_AUTO}" != "TRUE" ] && printKazMsg "Suppresion ok"
cd ${DOCK_VOL}/postfix_mailData/_data/${DOMAINE_EN_COURS}
USER_DEL_MAIL=$(echo ${REP_SEARCH_DESTROY} | sed -e 's/@.*//')
[ "${DEL_AUTO}" != "TRUE" ] && echo "Suppression des données ${USER_DEL_MAIL}"
rm -rf ${USER_DEL_MAIL} 2>/dev/null
sleep 2
else
[ "${DEL_AUTO}" != "TRUE" ] && printKazError "Erreur de suppression"
fi
[ "${DEL_AUTO}" != "TRUE" ] && printKazMsg "Envoi d'un message dans mattermost pour la suppression du compte"
PostMattermost "Le compte ${REP_SEARCH_DESTROY} est supprimé , mail envoyé à ${MAIL_SECOURS}" "Creation-Comptes"
MAIL_SUPPR="Le compte ${REP_SEARCH_DESTROY} est supprimé"
OLDIFS=${IFS}
IFS=''
ExpMail ${MAIL_SECOURS} "Suppression de Compte" ${MAIL_SUPPR}
echo -e "${NC}"
IFS=${OLDIFS}
# si on est en interactif on affiche le message
if [ "${DEL_AUTO}" != "TRUE" ]
then
read -p " ---------------------- Appuyer sur une touche pour continuer -------------------------"
searchDestroy
else
exit 0
fi
fi
done
}
@@ -712,19 +733,36 @@ createMailAuto()
{
if [ "$#" -ne "3" ]
then
echo "$0 pas assez d'arguments"
PostMattermost "Erreur de script $0 ,constacter les sysadmins " "Creation-Comptes"
echo "CreateMail : $0 pas assez d'arguments"
PostMattermost "CreateMail : 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"
echo "Createmail : Les mails sont invalides"
PostMattermost "CreateMail : Erreur de script $0 ,les mails demandés sont malformés" "Creation-Comptes"
fi
}
delMailauto()
{
if [ "$#" -ne "2" ]
then
echo "DelMail : $0 pas assez d'arguments"
PostMattermost "Delmail : Erreur de script $0 ,constacter les sysadmins " "Creation-Comptes"
exit 1
fi
if [[ ${2} =~ ${regexMail} ]]
then
searchDestroy TRUE ${2}
else
echo "DelMail : Les mails sont invalides"
PostMattermost "Delmail : Erreur de script $0 ,les mails demandés sont malformés" "Creation-Comptes"
fi
}
createAlias() {
ACTION_EN_COURS="création d' un alias de messagerie"
fait=0
@@ -1226,11 +1264,13 @@ updateUser() {
##############################################################################################################
##############################################################################################################
usage () {
echo "$PRG [-c] [-h] [-r] [-v]"
echo "$PRG [-c] [-d] [-h] [-r] [-v]"
echo "script de gestion des kaznautes"
echo " -c permet de créer un mail avec son mail de secours en non intereactif"
echo " syntax : $0 -c mail mailsecours"
echo " exemple $0 user@kaz.bzh user@apple.fr"
echo " -d permet de supprimer un compte en non intereactif"
echo " syntax : $0 -d mail"
echo " -r permet de reset un mot de passe de compte en mode non interactif"
echo " syntax : $0 -r mail"
echo " -h aide sur ce script"
@@ -1340,6 +1380,10 @@ case "$1" in
[[ ${2} =~ ${regexMail} ]] && gestPassword $2 || echo "le 2ème argument doit être un mail"
exit
;;
'-d' )
delMailauto $@
exit
;;
esac
# on teste la présence du domaine du site dans le fichier autorized-domains.txt