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
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='[0;32m'
|
|
RED='[0;31m'
|
|
NC='[0m' # 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
|
|
|