Ensemble des services de KAZ
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

698 lines
28 KiB

#!/bin/bash
#kan: 30/03/2021
#koi: créer les users dans le système KAZ, le KazWorld, to become a kaznaute, a kaaaaaaaznaute!
#ki : fab
#fonctionnement:
# vérification de l'existence du fichier des demandes et création si absent
# on garnit les variables
# on vérifie les variables
# on créé un mdp utilisable par tous les services (identifiant: email kaz)
# pour chacun des services KAZ (NC / WP / DOKUWIKI)
# * on vérifie si le sous-domaine existe, on le créé sinon
# * on créé le user et le met admin si nécessaire
# * s'il existe déjà, rollback (y compris sur les autres services)
# pour garradin, on vérifie si le sous-domaine existe, on le créé sinon
# pour mattermost, on créé le user et l'équipe si nécé=essaire, sur l'agora de base
# tout est ok, on créé l'email
# on créé le mail d'inscription avec tout le détail des services créés (url/user)
# on inscrit le user dans la liste infos@listes.kaz.bzh
# on avertit contact@kaz.bzh et on post dans l'agora/creation_compte
#TODO: utilisez la req sql pour attaquer garradin et créer createUser.txt en auto et modifier le champ dans garradin ACTION de "à créer" à "aucune"
###################################################################################################################################
####### DANGER: 09/01/22: en cours de modifs!
###################################################################################################################################
# rechercher tous les TODO du script pour le reste à faire
#on récupère toutes les variables et mdp
# on prend comme source des repertoire le dossier du dessus ( /kaz dans notre cas )
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
. "${KAZ_ROOT}/bin/.commonFunctions.sh"
setKazVars
cd $(dirname $0)/..
. "${DOCKERS_ENV}"
. "${KAZ_KEY_DIR}/SetAllPass.sh"
DOCK_DIR=$KAZ_COMP_DIR
#on détermine le script appelant, le fichier log et le fichier source, tous issus de la même racine
PRG=$(basename $0)
RACINE=${PRG%.sh}
CREATE_ORGA_CMD="$KAZ_CONF_DIR/orgaTmpl/orga-gen.sh"
GREEN=''
RED=''
NC='' # No Color
mkdir -p $KAZ_ROOT/tmp
mkdir -p $KAZ_ROOT/log
#fichier source dans lequel se trouve les infos sur les utilisateurs à créer
FILE="$(pwd)/tmp/${RACINE}.txt"
#fichier de log pour
LOG="$(pwd)/log/${RACINE}.log"
# XXX risque si 2 admins lance en même temps
CMD="$(pwd)/tmp/${RACINE}_cmds_to_run.sh"
URL_SITE=$(echo $domain)
URL_WEBMAIL=$(echo $webmailHost).$(echo $domain)
URL_LISTE=$(echo $sympaHost).$(echo $domain)
URL_AGORA=$(echo $matterHost).$(echo $domain)
#URL_GARRADIN=kaz-$(echo $garHost).$(echo $domain)
URL_GARRADIN="$httpProto://${garradin_API_USER}:${garradin_API_PASSWORD}@kaz-garradin.$(echo $domain)"
NL_LIST=infos@listes.kaz.bzh
#indiqué dans le mail d'inscription
#(mail+cloud base+agora: max=3, min=2)
NB_SERVICES_BASE=0
#max: 5, min:0
NB_SERVICES_DEDIES=0
#note qu'on rajoute dans le mail pour les orgas
MESSAGE_MAIL_ORGA_1=""
MESSAGE_MAIL_ORGA_2=""
usage () {
echo "${PRG} [-h] [-s] [-e] [-v]"
echo " version 1.0"
echo " Create users in kaz world using ${FILE} as source file. All logs in ${LOG}"
echo " -h Display this help."
echo " -s Simulate. none user created but you can see the result in ${CMD}"
echo " -e Execute commands. user will be created !!!"
echo " -v or -V display site informations"
}
case "$1" in
'-h' | '-help' )
usage
shift
exit;;
-s)
SIMULATION=YES
shift;;
-e)
SIMULATION=NO
shift;;
'-v' | '-V' )
echo "${PRG}, root : $KAZ_ROOT, on domain : $URL_SITE"
exit
;;
*)
echo "${RED}"
echo "unknown parameter"
echo "${NC}"
usage
shift
exit;;
esac
################################################################################################################
############### on créé le fichier createUser.txt graĉe aux infos de garradin ##################################
################################################################################################################
#TODO: FAIT PAR DIDIER DANS interroGarradin.sh
# # résultat de la req select sur garradin
# TMP_SELECT_GARRADIN=$(mktemp /tmp/${RACINE}.XXXXXXXXX.TMP_SELECT_GARRADIN.json)
#
# #curl -s ${httpProto}://${garradin_API_USER}:${garradin_API_PASSWORD}@${URL_GARRADIN}/api/sql -d "SELECT nom,adresse,code_postal,ville,email_kaz,email FROM membres where email_kaz='${CHOIX_MAIL}' LIMIT 1;" >/tmp/$CHOIX_MAIL-garradin.json
#
# #echo ${httpProto}://${garradin_API_USER}:${garradin_API_PASSWORD}@${URL_GARRADIN}/api/sql -d "SELECT * FROM membres where action_auto='"A créer"';"
# echo ${httpProto}://${garradin_API_USER}:${garradin_API_PASSWORD}@${URL_GARRADIN}/api/sql -d "SELECT * FROM membres;"
#
# curl -s ${httpProto}://${garradin_API_USER}:${garradin_API_PASSWORD}@${URL_GARRADIN}/api/sql -d "SELECT * FROM membres;" > $TMP_SELECT_GARRADIN
#
# exit;
################################################################################################################
################################################################################################################
################################################################################################################
if [ ! -s "${FILE}" ];then
echo "${RED}"
echo "ERREUR: le fichier ${FILE} n'existait pas"
echo "Il vient d'être créé. Vous pouvez le compléter."
echo "${NC}"
cat > "${FILE}" <<EOF
# -- fichier de création des comptes KAZ
# --
# -- 1 ligne par compte
# -- champs séparés par ";". les espaces en début et en fin sont enlevés
# -- laisser vide si pas de donnée
# -- pas d'espace dans les variables
# --
# -- ORGA: nom de l'organisation (max 15 car), vide sinon
# -- ADMIN_ORGA: O/N indique si le user est admin de l'orga (va le créer comme admin du NC de l'orga et admin de l'équipe agora)
# -- NC_ORGA: O/N indique si l'orga a demandé un NC
# -- GARRADIN_ORGA: O/N indique si l'orga a demandé un garradin
# -- WP_ORGA: O/N indique si l'orga a demandé un wp
# -- AGORA_ORGA: O/N indique si l'orga a demandé un mattermost
# -- WIKI_ORGA: O/N indique si l'orga a demandé un wiki
# -- NC_BASE: O/N indique si le user doit être inscrit dans le NC de base
# -- GROUPE_NC_BASE: soit null soit le groupe dans le NC de base
# -- EQUIPE_AGORA: soit null soit equipe agora (max 15 car)
# -- QUOTA=(1/10/20/...) en GB
# --
# NOM ; PRENOM ; EMAIL_SOUHAITE ; EMAIL_SECOURS ; ORGA ; ADMIN_ORGA ; NC_ORGA ; GARRADIN_ORGA ; WP_ORGA ; AGORA_ORGA ; WIKI_ORGA ; NC_BASE ; GROUPE_NC_BASE ; EQUIPE_AGORA ; QUOTA
#exemple pour un compte découverte:
#loufoque ; le_mec; loufoque.le-mec@kaz.bzh ; gregomondo@kaz.bzh; ; N; N; N; N; N; N;N;;; 1
#exemple pour un compte asso de l'orga gogol avec le service dédié NC uniquement + une équipe dans l'agora
#loufoque ; le_mec; loufoque.le-mec@kaz.bzh ; gregomondo@kaz.bzh; gogol ; O; O; N; N; N; N;N;;gogol_team; 10
EOF
exit
fi
ALL_LINES=$(sed -e "/^[ \t]*#.*$/d" -e "/^[ \t]*$/d" ${FILE})
if [ -z "${ALL_LINES}" ];then
echo "${RED}"
echo "ERREUR: le fichier ${FILE} est vide"
echo "${NC}"
usage
exit
fi
# emails et les alias KAZ déjà créés
TFILE_EMAIL=$(mktemp /tmp/${RACINE}.XXXXXXXXX.TFILE_EMAIL)
#l'ident NextCloud
TEMP_USER_NC=$(mktemp /tmp/${RACINE}.XXXXXXXXX.TEMP_USER_NC)
# le groupe NextCloud
TEMP_GROUP_NC=$(mktemp /tmp/${RACINE}.XXXXXXXXX.TEMP_GROUP_NC)
#l'ident WP
TEMP_USER_WP=$(mktemp /tmp/${RACINE}.XXXXXXXXX.TEMP_USER_WP)
trap "rm -f ${TFILE_EMAIL} ${TEMP_USER_NC} ${TEMP_GROUP_NC} ${TEMP_USER_WP}" 0 1 2 3 15
echo "#!/bin/bash" > ${CMD} && chmod +x ${CMD}
#on lit le fichier d'entrée createUser.txt
(
echo
echo "$(date '+%Y-%m-%d %H:%M:%S') : ${PRG} - sauvegarde des utilisateurs à créer"
) | tee ${LOG}
cat ${FILE} >> ${LOG}
#on stocke les emails et les alias KAZ déjà créés
(
${DOCK_DIR}/postfix/setup.sh email list
${DOCK_DIR}/postfix/setup.sh alias list | awk '{print $1}'
) > ${TFILE_EMAIL}
#did on supprime le ^M en fin de fichier pour pas faire planter les grep
sed -i -e 's/\r//g' ${TFILE_EMAIL}
#se connecter à l'agora pour ensuite pouvoir passer toutes les commandes mmctl
echo "docker exec -ti mattermostServ bin/mmctl auth login ${httpProto}://${URL_AGORA} --name local-server --username ${mattermost_user} --password ${mattermost_pass}" | tee -a ${CMD}
echo "${ALL_LINES}" | while read ligne
do
# | xargs permet de faire un trim
NOM=$(awk -F ";" '{print $1}' <<< ${ligne} | xargs)
PRENOM=$(awk -F ";" '{print $2}' <<< ${ligne} | xargs)
declare -A tab_email
tab_email[EMAIL_SOUHAITE]=$(awk -F ";" '{print $3}' <<< ${ligne} | xargs)
tab_email[EMAIL_SECOURS]=$(awk -F ";" '{print $4}' <<< ${ligne} | xargs)
ORGA=$(awk -F ";" '{print $5}' <<< ${ligne} | xargs)
ORGA=${ORGA,,}
declare -A service
service[ADMIN_ORGA]=$(awk -F ";" '{print $6}' <<< ${ligne} | xargs)
service[NC_ORGA]=$(awk -F ";" '{print $7}' <<< ${ligne} | xargs)
service[GARRADIN_ORGA]=$(awk -F ";" '{print $8}' <<< ${ligne} | xargs)
service[WP_ORGA]=$(awk -F ";" '{print $9}' <<< ${ligne} | xargs)
service[AGORA_ORGA]=$(awk -F ";" '{print $10}' <<< ${ligne} | xargs)
service[WIKI_ORGA]=$(awk -F ";" '{print $11}' <<< ${ligne} | xargs)
service[NC_BASE]=$(awk -F ";" '{print $12}' <<< ${ligne} | xargs)
GROUPE_NC_BASE=$(awk -F ";" '{print $13}' <<< ${ligne} | xargs)
GROUPE_NC_BASE=${GROUPE_NC_BASE,,}
EQUIPE_AGORA=$(awk -F ";" '{print $14}' <<< ${ligne} | xargs)
EQUIPE_AGORA=${EQUIPE_AGORA,,}
QUOTA=$(awk -F ";" '{print $15}' <<< ${ligne} | xargs)
IDENT_KAZ=$(unaccent utf8 ${PRENOM,,}.${NOM,,})
# IDENT_KAZ=$(unaccent utf8 ${NOM,,})
EMAIL_SOUHAITE=${tab_email[EMAIL_SOUHAITE]}
EMAIL_SECOURS=${tab_email[EMAIL_SECOURS]}
(
echo
echo "*****************************traitement de ${ligne}"
) | tee -a $LOG
#****************************************************************************************
#*************************** VERIF DES CHAMPS *******************************************
#****************************************************************************************
#vérif des emails
regex="^(([A-Za-z0-9]+((\.|\-|\_|\+)?[A-Za-z0-9]?)*[A-Za-z0-9]+)|[A-Za-z0-9]+)@(([A-Za-z0-9]+)+((\.|\-|\_)?([A-Za-z0-9]+)+)*)+\.([A-Za-z]{2,})+$"
function validator {
if [[ $1 =~ ${regex} ]]; then
#printf "* %-48s \e[1;32m[pass]\e[m\n" "${1}"
:
else
#printf "* %-48s \e[1;31m[fail]\e[m\n" "${1}"
(
echo "${RED}"
echo "ERREUR: le paramètre $1 n'est pas un email valide - on stoppe tout - aucun utilisateur de créé"
echo "${NC}"
) | tee -a ${LOG}
exit 1
fi
}
for k in "${!tab_email[@]}"; do
validator "${tab_email[$k]}"
done
#vérif des champs O/N
for k in "${!service[@]}"; do
if [ "${service[$k]}" != "O" -a "${service[$k]}" != "N" ]; then
(
echo "${RED}"
echo "$k:${service[$k]}"
echo "ERREUR: le paramètre $k accepte O ou N - on stoppe tout - aucun utilisateur de créé"
echo "${NC}"
) | tee -a ${LOG}
exit 1
fi
done
#taille ORGA et EQUIPE_AGORA
TAILLE_MAX="15"
if [ ${#ORGA} -gt ${TAILLE_MAX} ]; then
(
echo "${RED}"
echo "ERREUR: le paramètre ORGA est trop grand: ${ORGA} , taille max: ${TAILLE_MAX} - on stoppe tout - aucun utilisateur de créé"
echo "${NC}"
) | tee -a ${LOG}
exit 1
fi
if [ ${#EQUIPE_AGORA} -gt ${TAILLE_MAX} ]; then
(
echo "${RED}"
echo "ERREUR: le paramètre EQUIPE_AGORA est trop grand: ${EQUIPE_AGORA} , taille max: ${TAILLE_MAX} - on stoppe tout - aucun utilisateur de créé"
echo "${NC}"
) | tee -a ${LOG}
exit 1
fi
#vérif quota est entier
if [[ ${QUOTA} =~ ^[[:digit:]]+$ ]];then
echo "ok, quota est numérique"
else
(
echo "${RED}"
echo "ERREUR: QUOTA n'est pas numérique: ${QUOTA} - on stoppe tout - aucun utilisateur de créé"
) | tee -a ${LOG}
exit 1
fi
#le mail existe t-il déjà ?
nb_ligne=$(grep "^${EMAIL_SOUHAITE}$" ${TFILE_EMAIL} | wc -l)
if [ ${nb_ligne} -gt 0 ];then
(
echo "${RED}"
echo "ERREUR: ${EMAIL_SOUHAITE} existe déjà - on stoppe tout - aucun utilisateur de créé"
echo "${NC}"
) | tee -a ${LOG}
exit 1
fi
#************************************************************************************
#*************************** FIN VERIF CHAMPS ***************************************
#************************************************************************************
echo ${EMAIL_SOUHAITE} "n'existe pas, on continue" | tee -a $LOG
#************************************************************************************
#cree un mdp acceptable par postfix/nc/mattermost
#************************************************************************************
PASSWORD=_`apg -n 1 -m 10 -M NCL -d`-
#************************************************************************************
#*************************** NEXTCLOUD *********************************************
#************************************************************************************
#on recalcul l'url de NC
if [ "${ORGA}" != "" -a "${service[NC_ORGA]}" == "O" ]; then
URL_NC=$(echo $ORGA)"-"$(echo $cloudHost).$(echo $domain)
#si le cloud de l'orga n'est pas up alors on le créé
nb=$(docker ps | grep ${ORGA}-${nextcloudServName} | wc -l)
if [ "${nb}" == "0" ];then
echo ${CREATE_ORGA_CMD} +cloud +collabora ${ORGA} | tee -a ${CMD}
#on installe les plugins initiaux
#TODO
fi
NB_SERVICES_DEDIES=$((NB_SERVICES_DEDIES+1))
else
URL_NC=$(echo $cloudHost).$(echo $domain)
NB_SERVICES_BASE=$((NB_SERVICES_BASE+1))
fi
MESSAGE_MAIL_ORGA_1="${MESSAGE_MAIL_ORGA_1}
* un bureau virtuel pour stocker des fichiers/calendriers/contacts et partager avec vos connaissances : ${httpProto}://${URL_NC}"
#le user existe t-il déjà sur NC ?
curl -o $TEMP_USER_NC -X GET -H 'OCS-APIRequest:true' "${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users?search=${IDENT_KAZ}"
nb_user_nc_orga=$(grep "<element>${IDENT_KAZ}</element>" ${TEMP_USER_NC} | wc -l)
if [ "${nb_user_nc_orga}" != "0" ];then
(
# echo "${DOCK_DIR}/postfix/setup.sh email del ${EMAIL_SOUHAITE}"
echo "${RED}"
echo "ERREUR: ${IDENT_KAZ} existe déjà sur ${URL_NC} - on stoppe tout - aucun utilisateur de créé"
echo "${NC}"
) | tee -a ${LOG}
exit 1
fi
#on créé l'utilisateur sur NC.
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users \
-d userid='${IDENT_KAZ}' \
-d displayName='${PRENOM} ${NOM}' \
-d password='${PASSWORD}' \
-d email='${EMAIL_SOUHAITE}' \
-d quota='${QUOTA}GB' \
-d language='fr' \
" | tee -a ${CMD}
#s'il est admin de son orga, on le met admin
if [ "${service[ADMIN_ORGA]}" == "O" -a "${ORGA}" != "" -a "${service[NC_ORGA]}" == "O" ]; then
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://${nextcloud_NEXTCLOUD_ADMIN_USER}:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users/${IDENT_KAZ}/groups -d groupid='admin'" | tee -a ${CMD}
fi
#faut-il mettre le user NC dans un groupe particulier sur le NC de base ?
if [ "${GROUPE_NC_BASE}" != "" -a "${service[NC_BASE]}" == "O" ]; then
# le groupe existe t-il déjà ?
curl -o ${TEMP_GROUP_NC} -X GET -H 'OCS-APIRequest:true' "${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/groups?search=${GROUPE_NC_BASE}"
nb=$(grep "<element>$GROUPE_NC_BASE</element>" ${TEMP_GROUP_NC} | wc -l)
if [ "${nb}" == "0" ];then
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/groups -d groupid=${GROUPE_NC_BASE}" | tee -a ${CMD}
fi
#puis attacher le user au groupe
echo "curl -X POST -H 'OCS-APIRequest:true' ${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users/${IDENT_KAZ}/groups -d groupid=${GROUPE_NC_BASE}" | tee -a ${CMD}
fi
#************************************************************************************
#*************************** WORDPRESS **********************************************
#************************************************************************************
#TODO:pour l'utilisation de l'api : https://www.hostinger.com/tutorials/wordpress-rest-api
if [ "${ORGA}" != "" -a "${service[WP_ORGA]}" == "O" ]; then
URL_WP_ORGA=$(echo $ORGA)"-"$(echo $wordpressHost).$(echo $domain)
#si le wp de l'orga n'est pas up alors on le créé
nb=$(docker ps | grep ${ORGA}-${wordpressServName} | wc -l)
if [ "${nb}" == "0" ];then
echo ${CREATE_ORGA_CMD} +wp ${ORGA} | tee -a ${CMD}
fi
NB_SERVICES_DEDIES=$((NB_SERVICES_DEDIES+1))
MESSAGE_MAIL_ORGA_1="${MESSAGE_MAIL_ORGA_1}
* un site web de type wordpress : ${httpProto}://${URL_WP_ORGA}/wp-admin/"
#TODO : vérif existance user
# #le user existe t-il déjà sur le wp ?
# curl -o $TEMP_USER_WP -X GET "${httpProto}://${wp_WORDPRESS_ADMIN_USER}:${wp_WORDPRESS_ADMIN_PASSWORD}@${URL_WP_ORGA}/ocs/v1.php/cloud/users?search=${IDENT_KAZ}"
# nb_user_wp_orga=$(grep "<element>${IDENT_KAZ}</element>" ${TEMP_USER_WP} | wc -l)
# if [ "${nb_user_wp_orga}" != "0" ];then
# (
# #echo "${DOCK_DIR}/postfix/setup.sh email del ${EMAIL_SOUHAITE}"
# echo "${RED}"
# echo "ERREUR: ${IDENT_KAZ} existe déjà sur ${URL_WP_ORGA} - on stoppe tout - aucun utilisateur de créé"
# echo "${NC}"
# ) | tee -a ${LOG}
#
# # ROLLBACK - on vire le user de NC
# if [ "${nb_user_nc_orga}" != "0" ];then
# (
# echo "${RED}"
# echo "ERREUR: ${IDENT_KAZ} existe déjà sur ${URL_NC} - on stoppe tout - aucun utilisateur de créé"
# echo "${NC}"
# ) | tee -a ${LOG}
#
# #on supprime l'utilisateur sur NC.
# echo "curl -X DELETE -H 'OCS-APIRequest:true' ${httpProto}://admin:${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}@${URL_NC}/ocs/v1.php/cloud/users \
# -d userid='${IDENT_KAZ}' \
# " | tee -a ${CMD}
# fi
#
# exit 1
# fi
#TODO : créer le user et le mettre admin si nécessaire
# if [ "${service[ADMIN_ORGA]}" == "O" ]; then
# :
# else
# :
# fi
fi
#************************************************************************************
#*************************** GARRADIN *********************************************
#************************************************************************************
if [ "${ORGA}" != "" -a "${service[GARRADIN_ORGA]}" == "O" ]; then
URL_GARRADIN_ORGA=$(echo $ORGA)"-"$(echo $garHost).$(echo $domain)
#il n'y a pas de docker spécifique garradin (je cree toujours garradin)
echo ${CREATE_ORGA_CMD} +garradin ${ORGA} | tee -a ${CMD}
NB_SERVICES_DEDIES=$((NB_SERVICES_DEDIES+1))
MESSAGE_MAIL_ORGA_1="${MESSAGE_MAIL_ORGA_1}
* un service de gestion adhérents/clients : ${httpProto}://${URL_GARRADIN_ORGA}"
if [ "${service[ADMIN_ORGA]}" == "O" ]; then
MESSAGE_MAIL_ORGA_1="${MESSAGE_MAIL_ORGA_1} (l'installation est à terminer en vous rendant sur le site)"
fi
fi
#************************************************************************************
#*************************** DOKUWIKI ***********************************************
#************************************************************************************
if [ "${ORGA}" != "" -a "${service[WIKI_ORGA]}" == "O" ]; then
URL_WIKI_ORGA=$(echo $ORGA)"-"$(echo $dokuwikiHost).$(echo $domain)
#si le wiki de l'orga n'est pas up alors on le créé
nb=$(docker ps | grep ${ORGA}-${dokuwikiServName} | wc -l)
if [ "${nb}" == "0" ];then
echo ${CREATE_ORGA_CMD} +wiki ${ORGA} | tee -a ${CMD}
fi
NB_SERVICES_DEDIES=$((NB_SERVICES_DEDIES+1))
MESSAGE_MAIL_ORGA_1="${MESSAGE_MAIL_ORGA_1}
* un wiki dédié pour votre documentation : ${httpProto}://${URL_WIKI_ORGA}"
#TODO: à voir https://www.dokuwiki.org/devel:xmlrpc:clients
echo "# ******************************************************************************" | tee -a ${CMD}
echo "# **************************** ATTENTION ***************************************" | tee -a ${CMD}
echo "# ******************************************************************************" | tee -a ${CMD}
echo "# DOKUWIKI: TODO: créer le user et le mettre admin." | tee -a ${CMD}
echo "# ******************************************************************************" | tee -a ${CMD}
# #le user existe t-il déjà sur le wp ?
# curl -o $TEMP_USER_WP -X GET "${httpProto}://${wp_WORDPRESS_ADMIN_USER}:${wp_WORDPRESS_ADMIN_PASSWORD}@${URL_WP_ORGA}/ocs/v1.php/cloud/users?search=${IDENT_KAZ}"
# nb=$(grep "<element>${IDENT_KAZ}</element>" ${TEMP_USER_WP} | wc -l)
# if [ "${nb}" != "0" ];then
# (
# #echo "${DOCK_DIR}/postfix/setup.sh email del ${EMAIL_SOUHAITE}"
# echo "${RED}"
# echo "ERREUR: ${IDENT_KAZ} existe déjà sur ${URL_WP_ORGA} - on stoppe tout - aucun utilisateur de créé"
# echo "${NC}"
# ) | tee -a ${LOG}
# exit 1
# fi
# #créer le user et le mettre admin si nécessaitre
# if [ "${service[ADMIN_ORGA]}" == "O" ]; then
# :
# else
# :
# fi
fi
#************************************************************************************
#*************************** MATTERMOST *********************************************
#************************************************************************************
#on ne gère pas la création du docker dédié mattermost
if [ "${ORGA}" != "" -a "${service[AGORA_ORGA]}" == "O" ]; then
echo "# ******************************************************************************" | tee -a ${CMD}
echo "# **************************** ATTENTION ***************************************" | tee -a ${CMD}
echo "# ******************************************************************************" | tee -a ${CMD}
echo "# Mattermost dédié: on ne fait rien." | tee -a ${CMD}
echo "# ******************************************************************************" | tee -a ${CMD}
fi
#on créé le compte mattermost
echo "docker exec -ti mattermostServ bin/mmctl user create --email ${EMAIL_SOUHAITE} --username ${IDENT_KAZ} --password ${PASSWORD}" | tee -a ${CMD}
NB_SERVICES_BASE=$((NB_SERVICES_BASE+1))
if [ "${EQUIPE_AGORA}" != "" -a "${EQUIPE_AGORA}" != "kaz" ]; then
# l'équipe existe t-elle déjà ?
nb=$(docker exec mattermostServ bin/mmctl team list | grep -w ${EQUIPE_AGORA} | wc -l)
if [ "${nb}" == "0" ];then #non, on la créé en mettant le user en admin de l'équipe
echo "docker exec -ti mattermostServ bin/mmctl team create --name ${EQUIPE_AGORA} --display_name ${EQUIPE_AGORA} --email ${EMAIL_SOUHAITE}" | tee -a ${CMD}
fi
# puis ajouter le user à l'équipe
echo "docker exec -ti mattermostServ bin/mmctl team users add ${EQUIPE_AGORA} ${EMAIL_SOUHAITE}" | tee -a ${CMD}
fi
#et enfin on ajoute toujours le user à l'équipe KAZ et aux 2 channels publiques
echo "docker exec -ti mattermostServ bin/mmctl team users add kaz ${EMAIL_SOUHAITE}" | tee -a ${CMD}
echo "docker exec -ti mattermostServ bin/mmctl channel users add kaz:une-question--un-soucis ${EMAIL_SOUHAITE}" | tee -a ${CMD}
echo "docker exec -ti mattermostServ bin/mmctl channel users add kaz:cafe-du-commerce--ouvert-2424h ${EMAIL_SOUHAITE}" | tee -a ${CMD}
#************************************************************************************
#on créé le nouvel email avec le quota en GB
#************************************************************************************
#tout s'est bien passé, on créé l'email
echo "${DOCK_DIR}/postfix/setup.sh email add ${EMAIL_SOUHAITE} ${PASSWORD}" | tee -a ${CMD}
echo "${DOCK_DIR}/postfix/setup.sh quota set ${EMAIL_SOUHAITE} ${QUOTA}G" | tee -a ${CMD}
#on attend qques secondes que le mail soit bien créé avant de continuer (prob de lecture de la BAL: à investiguer)
echo "sleep 10" | tee -a ${CMD}
NB_SERVICES_BASE=$((NB_SERVICES_BASE+1))
#************************************************************************************
#*************************** INSCRIPTION NEWSLETTER *********************************
#************************************************************************************
#TODO: utiliser liste sur dev également
#on inscrit le user sur sympa, à la liste infos@listes.kaz.bzh
if [[ "${mode}" = "dev" ]]; then
echo "# DEV, pas d'inscription à sympa"| tee -a ${CMD}
else
echo "# PROD, inscription à sympa"| tee -a ${CMD}
echo "docker exec -ti sympaServ /usr/lib/sympa/bin/sympa_soap_client.pl --soap_url=${httpProto}://${URL_LISTE}/sympasoap --user_email=${sympa_user} --user_password=${sympa_pass} --service=add --service_parameters=\"${NL_LIST},${EMAIL_SOUHAITE}\"" | tee -a $CMD
fi
if [ "${service[ADMIN_ORGA]}" == "O" ]; then
MESSAGE_MAIL_ORGA_2="${MESSAGE_MAIL_ORGA_2}Comme administrateur de votre organisation, vous pouvez créer des listes de diffusion en vous rendant sur ${httpProto}://${URL_LISTE}"
fi
#************************************************************************************
#*************************** MAIL INSCRIPTION ***************************************
#************************************************************************************
if [ "${NB_SERVICES_DEDIES}" != "0" ];then
MESSAGE_MAIL_ORGA_1="
dont ${NB_SERVICES_DEDIES} service(s) dédié(s) pour votre organisation:
${MESSAGE_MAIL_ORGA_1}"
fi
#on envoie le mail de bienvenu
MAIL_KAZ="Bonjour,
Bienvenue chez KAZ!
Vous disposez de $((${NB_SERVICES_BASE} + ${NB_SERVICES_DEDIES})) services kaz avec authentification:
* une messagerie classique : ${httpProto}://${URL_WEBMAIL}
* une messagerie instantanée pour discuter au sein d'équipes : ${httpProto}://${URL_AGORA} ${MESSAGE_MAIL_ORGA_1}
Votre email et identifiant pour tous ces services: ${EMAIL_SOUHAITE}
Le mot de passe: ${PASSWORD}
Nous vous déconseillons de changer votre mot de passe dans l'immédiat (nous sommes en train d'y travailler!).
Vous pouvez accéder à votre messagerie :
* soit depuis votre webmail: ${httpProto}://${URL_WEBMAIL}
* soit depuis votre bureau virtuel: ${httpProto}://${URL_NC}
* soit depuis un client de messagerie comme thunderbird
Tout est expliqué ici https://wiki.kaz.bzh/messagerie/start et là https://wiki.kaz.bzh/nextcloud/start
Votre quota est de ${QUOTA}GB. Si vous souhaitez plus de place pour vos fichiers ou la messagerie, faites-nous signe!
Pour accéder à la messagerie instantanée et communiquer avec les membres de votre équipe ou ceux de kaz : ${httpProto}://${URL_AGORA}/login
${MESSAGE_MAIL_ORGA_2}
Enfin, vous disposez de tous les autres services KAZ où l'authentification n'est pas nécessaire: ${httpProto}://${URL_SITE}
En cas de soucis, n'hésitez pas poser à vos questions sur le canal 'Une question ? un soucis' de l'agora dispo ici: ${httpProto}://${URL_AGORA}
À bientôt ;)
La collégiale de KAZ. "
echo "docker exec -i mailServ mailx -a 'Content-Type: text/plain; charset=\"UTF-8\"' -r contact@kaz.bzh -s \"KAZ: confirmation d'inscription\" ${EMAIL_SOUHAITE} ${EMAIL_SECOURS} << EOF
${MAIL_KAZ}
EOF" | tee -a ${CMD}
#on envoie le mail de confirmation d'inscription à contact
MAIL_KAZ="*****POST AUTOMATIQUE******
Hello,
${NOM} ${PRENOM} vient d'être inscrit avec l'email ${EMAIL_SOUHAITE}
quota: ${QUOTA}GB
NC_BASE: ${service[NC_BASE]}
groupe NC base: ${GROUPE_NC_BASE}
équipe agora base: ${EQUIPE_AGORA}
email de secours: ${EMAIL_SECOURS}
ORGA: ${ORGA}
ADMIN_ORGA: ${service[ADMIN_ORGA]}
NC_ORGA: ${service[NC_ORGA]}
GARRADIN_ORGA: ${service[GARRADIN_ORGA]}
WP_ORGA: ${service[WP_ORGA]}
AGORA_ORGA: ${service[AGORA_ORGA]}
WIKI_ORGA: ${service[WIKI_ORGA]}
bisou!"
echo "docker exec -i mailServ mailx -a 'Content-Type: text/plain; charset=\"UTF-8\"' -r contact@kaz.bzh -s \"KAZ: confirmation d'inscription\" ${EMAIL_CONTACT} << EOF
${MAIL_KAZ}
EOF" | tee -a ${CMD}
echo " #on envoie la confirmation d'inscription sur l'agora " | tee -a ${CMD}
echo "docker exec -ti mattermostServ bin/mmctl post create kaz:Creation-Comptes --message \"${MAIL_KAZ}\"" | tee -a ${CMD}
#fin des inscriptions
done
echo "# ******************************************************************************" | tee -a ${CMD}
echo "# **************************** TODO ********************************************" | tee -a ${CMD}
echo "# ******************************************************************************" | tee -a ${CMD}
echo "# Garradin KAZ: pensez à inscrire ${EMAIL_SOUHAITE} en compta en allant sur https://kaz-garradin.kaz.bzh/admin/ si ce n'est pas déjà fait et à lui mettre action='aucune' sur sa fiche membre" | tee -a ${CMD}
# des commandes à lancer ?
if [ "${SIMULATION}" == "NO" ];then
echo "on exécute"
${CMD}
else
echo "Aucune commande n'a été lancée: Possibilité de le faire à la main. cf ${CMD}"
fi
#END