Browse Source

update PROD

pull/3/head
François 2 years ago
parent
commit
e4bf0fb3d0
  1. 109
      bin/cloudOrgas.sh
  2. 18
      bin/createUser.sh
  3. 64
      bin/gestUsers.sh
  4. 16
      bin/indicateurs.sh
  5. 120
      bin/interoGarradin.sh
  6. 13
      bin/optimiseCloud.sh
  7. 23
      bin/sauve_memory.sh
  8. 24
      bin/sauve_serveur.sh
  9. 23
      bin/stop_start_all_cloud.sh
  10. 2
      bin/updateCloud.sh
  11. 2
      bin/updateCloudApp.sh
  12. 2
      bin/verif_garradin.sh
  13. 2
      config/skip-file.txt
  14. 2
      dockers/jirafeau/Dockerfile
  15. 2
      dockers/mattermost/app/Dockerfile

109
bin/cloudOrgas.sh

@ -0,0 +1,109 @@
#!/bin/bash
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
. $KAZ_ROOT/bin/.commonFunctions.sh
setKazVars
. $DOCKERS_ENV
. $KAZ_ROOT/secret/SetAllPass.sh
PRG=$(basename $0)
RACINE=$(echo $PRG | awk '{print $1}')
TEMPO_ACTION_STOP=5
TEMPO_ACTION_START=20
LIST_CLOUDS=$(ls /var/lib/docker/volumes/ | grep -i orga | grep -i cloudMain| sed -e 's/-cloudMain$//g' | sed -e 's/^orga_//')
NB_CLOUDS=$(ls /var/lib/docker/volumes/ | grep -i orga | grep -i cloudMain| sed -e 's/-cloudMain$//g' | sed -e 's/^orga_//' | wc -l )
COMPTEUR=$NB_CLOUDS
restart-compose() {
echo "--------------------------------------------------------"
echo "${NC} Arret / Relance de ${NB_CLOUDS} orga(s)"
echo "--------------------------------------------------------"
for CLOUD in ${LIST_CLOUDS}
do
echo "${RED}- ${CLOUD}-orga${NC}($COMPTEUR/$NB_CLOUDS)"
cd /kaz/dockers/$CLOUD-orga
echo -n "${NC}Arrêt ... "
docker-compose down
sleep ${TEMPO_ACTION_STOP}
echo "${GREEN}OK"
echo -n "${NC}Démarrage ... "
docker-compose up -d
sleep ${TEMPO_ACTION_START}
echo "${GREEN}OK"
COMPTEUR=$(expr $COMPTEUR - 1)
done
reloadProxy
echo "${NC}"
echo "--------------------------------------------------------"
echo "${GREEN}FIN${NC} "
echo "--------------------------------------------------------"
}
restart() {
echo "--------------------------------------------------------"
echo "${NC} Arret / Relance de ${NB_CLOUDS} orga(s)"
echo "--------------------------------------------------------"
for CLOUD in ${LIST_CLOUDS}
do
echo "${RED}- ${CLOUD}-orga${NC}($COMPTEUR/$NB_CLOUDS)"
echo -n "${NC}Redemarrage ... "
docker restart $CLOUD-nextcloudServ
echo "${GREEN}OK"
COMPTEUR=$(expr $COMPTEUR - 1)
done
reloadProxy
echo "${NC}"
echo "--------------------------------------------------------"
echo "${GREEN}FIN${NC} "
echo "--------------------------------------------------------"
}
reloadProxy() {
echo "${NC}"
$KAZ_ROOT/dockers/proxy/reload.sh
}
version() {
for CLOUD in ${LIST_CLOUDS}
do
VERSION_CLOUD=$(docker exec -ti -u 33 ${CLOUD}-nextcloudServ /var/www/html/occ status | grep -i version:)
VERSION_UPDATE=$(docker exec -ti -u 33 ${CLOUD}-nextcloudServ /var/www/html/occ update:check | grep -i "available\." | cut -c 1-17)
echo -e "-($COMPTEUR/$NB_CLOUDS): ${CLOUD}-orga ${GREEN}${VERSION_CLOUD}${NC} "
if [ ! -z "${VERSION_UPDATE}" ]
then
echo -e "\t -Version disponible : ${RED} ${VERSION_UPDATE} ${NC}"
fi
COMPTEUR=$(expr $COMPTEUR - 1)
done
}
usage() {
echo "${PRG} -v -r -t -h
quand :
-v Donne la version des clouds et signale les MàJ
-t Dans le cas d' une mise à jour , redémarre avec tempo tous les dockers des orga ( docker-compose )
-r Redémarre tous les dockers des orga ( docker restart )
-h Cette aide :-)"
}
########## Main #################
[ -z "$1" ] && { usage;exit; }
case "$1" in
'-v' )
version
exit
;;
'-t' )
restart-compose
exit
;;
'-r' )
restart
exit
;;
'-h' )
usage
;;
esac

18
bin/createUser.sh

@ -118,7 +118,7 @@ esac
############### on créé le fichier createUser.txt graĉe aux infos de garradin ##################################
################################################################################################################
#TODO
#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)
@ -242,7 +242,8 @@ do
EQUIPE_AGORA=${EQUIPE_AGORA,,}
QUOTA=$(awk -F ";" '{print $15}' <<< ${ligne} | xargs)
IDENT_KAZ=$(unaccent utf8 ${PRENOM,,}.${NOM,,})
# IDENT_KAZ=$(unaccent utf8 ${PRENOM,,}.${NOM,,})
IDENT_KAZ=$(unaccent utf8 ${NOM,,})
EMAIL_SOUHAITE=${tab_email[EMAIL_SOUHAITE]}
EMAIL_SECOURS=${tab_email[EMAIL_SECOURS]}
@ -311,12 +312,13 @@ do
#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à ?
@ -351,7 +353,7 @@ 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}-{$cloudHost} | wc -l)
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
@ -420,7 +422,7 @@ 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}-${wordpressHost} | wc -l)
nb=$(docker ps | grep ${ORGA}-${wordpressServName} | wc -l)
if [ "${nb}" == "0" ];then
echo ${CREATE_ORGA_CMD} +wp ${ORGA} | tee -a ${CMD}
fi
@ -495,7 +497,7 @@ 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}-${dokuwikiHost} | wc -l)
nb=$(docker ps | grep ${ORGA}-${dokuwikiServName} | wc -l)
if [ "${nb}" == "0" ];then
echo ${CREATE_ORGA_CMD} +wiki ${ORGA} | tee -a ${CMD}
fi
@ -575,7 +577,8 @@ echo "${DOCK_DIR}/postfix/setup.sh email add ${EMAIL_SOUHAITE} ${PASSWORD}" | te
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)
sleep 10
echo "sleep 10" | tee -a ${CMD}
NB_SERVICES_BASE=$((NB_SERVICES_BASE+1))
@ -668,6 +671,7 @@ 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}

64
bin/gestUsers.sh

@ -9,22 +9,20 @@ setKazVars
. $DOCKERS_ENV
. $KAZ_ROOT/secret/SetAllPass.sh
SETUP_MAIL="$KAZ_COMP_DIR/postfix/setup.sh"
URL_GARRADIN="$httpProto://${garradin_API_USER}:${garradin_API_PASSWORD}@kaz-garradin.$(echo $domain)"
VERSION="1.0"
VERSION="1.1"
PRG=$(basename $0)
IFS='.'
RACINE=$(echo $PRG | awk '{print $1}')
IFS=' '
RED='\033[0;31m'
GREEN='\033[0;32m'
NEUTRE='\e[0;m'
BLINK='\033[0;5m'
LOG=$RACINE".log"
URL_NC=$(echo $cloudHost).$(echo $domain)
URL_AGORA=$(echo $matterHost).$(echo $domain)
URL_LISTE=$(echo $sympaHost).$(echo $domain)
URL_GARRADIN="$httpProto://${garradin_API_USER}:${garradin_API_PASSWORD}@kaz-garradin.$(echo $domain)"
SETUP_MAIL="$KAZ_COMP_DIR/postfix/setup.sh"
NL_LIST=infos@listes.kaz.bzh
TFILE_EMAILS=$(mktemp /tmp/$RACINE.XXXXXXXXX.TFILE_EMAILS)
TFILE_EMAILS_ALIAS=$(mktemp /tmp/$RACINE.XXXXXXXXX.TFILE_EMAILS_ALIAS)
@ -105,7 +103,7 @@ Info_Email() {
clear
echo "------------------------------------------------"
echo -e "${RED} ADRESSE DE MESSAGERIE : $GREEN $CHOIX_MAIL"
echo -e "$NEUTRE ------------------------------------------------"
echo -e "$NC ------------------------------------------------"
echo -e " ${RED} DETAILS DU COMPTE DANS MATTERMOST ${GREEN}"
Search_Mattermost $CHOIX_MAIL DETAILS
echo -e " ------------------------------------------------"
@ -114,7 +112,7 @@ Info_Email() {
TEMP_USER_NC=$(mktemp /tmp/$RACINE.XXXXXXXXX.TEMP_USER_NC)
curl -s -o $TEMP_USER_NC -X GET -H 'OCS-APIRequest:true' $httpProto://admin:$nextcloud_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users?search=$CHOIX_MAIL
cat $TEMP_USER_NC | grep -i "element" | sed -e s/[\<\>\/]//g | sed -e s/element//g
echo -e "${NEUTRE} ------------------------------------------------"
echo -e "${NC} ------------------------------------------------"
echo -e " ${RED} DETAILS DU COMPTE DANS GARRADIN"
echo -e "${GREEN}"
curl -s ${URL_GARRADIN}/api/sql -d "SELECT nom,adresse,code_postal,ville,email,email_secours,admin_orga,nom_orga,quota_disque FROM membres where email='${CHOIX_MAIL}' LIMIT 1;" >/tmp/$CHOIX_MAIL-garradin.json
@ -129,7 +127,7 @@ Info_Email() {
echo -n -e "${GREEN}"
grep -i ${CHOIX_MAIL} ${TFILE_EMAILS_ALIAS} | awk {'print $1'} | sed -e 's/\r/ /g'
echo -e ""
echo -e "${NEUTRE}------------------------------------------------"
echo -e "${NC}------------------------------------------------"
echo -e ""
}
@ -142,7 +140,7 @@ Search_destroy() {
echo "--------------------------------- SUPPRESION ----------------------------------------"
while :
do
echo -e "${BLINK} TOUT RETOUR EN ARRIERE EST IMPOSSIBLE ${NEUTRE}"
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
@ -151,11 +149,11 @@ Search_destroy() {
if [ "$SEARCH_DESTROY_INPUT" = "o" ] || [ "$SEARCH_DESTROY_INPUT" = "O" ]
then
REP_SEARCH=$(Search_Mattermost $REP_SEARCH_DESTROY)
echo -e "${GREEN} réponse de mattermost : ${REP_SEARCH_DESTROY} ${NEUTRE}"
echo -e "${GREEN} réponse de mattermost : ${REP_SEARCH_DESTROY} ${NC}"
if [ ! -z ${REP_SEARCH} ]
then
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans mattermost ${NEUTRE}"
docker exec -ti ${mattermostServName} bin/mmctl user delete $REP_SEARCH_DESTROY --confirm >/dev/null 2>&1
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans mattermost ${NC}"
docker exec -ti ${mattermostServName} bin/mmctl user delete ${REP_SEARCH_DESTROY} --confirm >/dev/null 2>&1
if [ "$?" -eq "0" ]
then
echo -e "${RED}Suppresion ok"
@ -166,8 +164,8 @@ Search_destroy() {
else
echo "Rien a supprimer dans mattermost"
fi
echo -e "${NEUTRE}"
echo -e "Recherche de ${GREEN} ${REP_SEARCH_DESTROY} ${NEUTRE} dans nextcloud"
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_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
@ -183,9 +181,17 @@ Search_destroy() {
else
echo -e "${GREEEN} rien à supprimer dans Nextcloud"
fi
echo -e "${NEUTRE}"
echo -e "${NC}"
echo ""
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans la liste info de sympa"
echo -e "${NC}"
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=del --service_parameters="${NL_LIST},${REP_SEARCH_DESTROY},1"
echo -e "${NC}"
echo ""
echo -e "${RED} suppression de ${REP_SEARCH_DESTROY} dans le serveur de mail"
echo -e "${NC}"
echo ""
${SETUP_MAIL} email del -y ${REP_SEARCH_DESTROY} >/dev/null 2>&1
if [ "$?" -eq "0" ]
then
@ -193,9 +199,9 @@ Search_destroy() {
else
echo -e "Erreur de suppression"
fi
echo -e "${NEUTRE}"
echo -e "${NC}"
echo ""
echo -e "${NEUTRE}"
echo -e "${NC}"
read -p " ---------------------- Appuyer sur une touche pour continuer -------------------------"
Search_destroy
fi
@ -226,7 +232,7 @@ Gest_Password() {
sed -i -e 's/^[\{]"results"\:\[//g' -e 's/\]\}$//g' $FICMAILORGA
if [ $(jq .$EMAIL_CHOIX $FICMAILORGA | grep -i @) ]
then
echo -e "${RED} $EMAIL_CHOIX=${GREEN}$(jq .$EMAIL_CHOIX $FICMAILORGA)${NEUTRE}"
echo -e "${RED} $EMAIL_CHOIX=${GREEN}$(jq .$EMAIL_CHOIX $FICMAILORGA)${NC}"
if [ $EMAIL_CHOIX != "email" ]
then
EMAIL_ORGA_TROUVE=$(expr $EMAIL_ORGA_TROUVE + 1 )
@ -235,7 +241,7 @@ Gest_Password() {
done
if [ $EMAIL_ORGA_TROUVE -ge 1 ]
then
echo -e "${RED} L' adresse est dans une orga $(jq .nom_orga $FICMAILORGA) IL EST PREFERABLE DE REPONDRE NON !!! ${NEUTRE}"
echo -e "${RED} L' adresse est dans une orga $(jq .nom_orga $FICMAILORGA) IL EST PREFERABLE DE REPONDRE NON !!! ${NC}"
fi
##########################################################################
read -p "ON CONTINUE ? [ o / n ]: " SEARCH_RESET_INPUT
@ -247,21 +253,21 @@ Gest_Password() {
if [ "$SEARCH_RESET_INPUT" = "o" ] || [ "$SEARCH_RESET_INPUT" = "O" ]
then
USER_NEXTCLOUD_MODIF=$(curl -s -X GET -H 'OCS-APIRequest:true' $httpProto://admin:$nextcloud_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} ${NEUTRE}"
echo -e "$GREEN Mail de secours = $RED ${MAIL_SECOURS} ${NEUTRE}"
echo -e "$GREEN Compte $RED $(Search_Mattermost $COMPTE_A_MODIFIER) ${NEUTRE}"
echo -e "$GREEN Compte Nextcloud $RED ${USER_NEXTCLOUD_MODIF} ${NEUTRE}"
echo -e "$GREEN Le mot de passe sera = $RED ${PASSWORD} ${NEUTRE}"
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 $(Search_Mattermost $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}"
docker exec -ti mattermostServ bin/mmctl user change-password $(Search_Mattermost $COMPTE_A_MODIFIER) -p $PASSWORD
curl -H 'OCS-APIREQUEST: true' -X PUT $httpProto://admin:$nextcloud_NEXTCLOUD_ADMIN_PASSWORD@$URL_NC/ocs/v1.php/cloud/users/${USER_NEXTCLOUD_MODIF} -d key=password -d value=${PASSWORD}
${SETUP_MAIL} email update ${COMPTE_A_MODIFIER} ${PASSWORD}
if [ $ADRESSE_SEC == "OUI" ]
then
echo -e "Mail a expédier a cette adresse : ${GREEN} $MAIL_SECOURS ${NEUTRE}"
echo -e "Mail a expédier a cette adresse : ${GREEN} $MAIL_SECOURS ${NC}"
fi
if [ $ADRESSE_SEC == "NON" ]
then
echo -e "${RED} Pas d adresse de secours ${NEUTRE}"
echo -e "${RED} Pas d adresse de secours ${NC}"
fi
fi
@ -279,7 +285,7 @@ type -P jq | grep -i jq || { echo "erreur jq n' est pas installé ( apt install
################ Main loop ############################################
Main() {
echo -e "${NEUTRE}"
echo -e "${NC}"
clear
while true
do

16
bin/indicateurs.sh

@ -40,21 +40,11 @@ echo "$(date +%Y-%m-%d-%H-%M-%S);" \
EXP=$(/usr/bin/hostname -s)
STATS1=$(cat ${DOCK_VOL}/sympa_sympaLog/_data/mail.log.1 | /usr/sbin/pflogsumm)
docker exec -i mailServ mailx -r $EXP -s "stats Sympa" root <<DEB_MESS
$STATS1
DEB_MESS
STATS2=$(cat ${DOCK_VOL}/postfix_mailLog/_data/mail.log | /usr/sbin/pflogsumm)
docker exec -i mailServ mailx -r $EXP -s "stats Postfix" root <<DEB_MESS
$STATS2
DEB_MESS
#STATS3=$(cat ${DOCK_VOL}/sympa_sympaLog/_data/mail.log.1 | /usr/sbin/pflogsumm)
#docker exec -i mailServ mailx -r $EXP -s "stats Sympa" root <<DEB_MESS
#$STATS1
#DEB_MESS
#STATS4=$(cat ${DOCK_VOL}/postfix_mailLog/_data/mail.log.1| /usr/sbin/pflogsumm)
STATS2=$(cat ${DOCK_VOL}/postfix_mailLog/_data/mail.log | /usr/sbin/pflogsumm)
#docker exec -i mailServ mailx -r $EXP -s "stats Postfix" root <<DEB_MESS
#$STATS2
#DEB_MESS
@ -67,4 +57,8 @@ done
#pour pister les fuites mémoires
docker stats --no-stream --format "table {{.Name}}\t{{.Container}}\t{{.MemUsage}}" | sort -k 3 -h > "${KAZ_STATE_DIR}/metro/$(date +"%Y%m%d")_docker_kaz.log"
ps aux --sort -rss > "${KAZ_STATE_DIR}/metro/$(date +"%Y%m%d")_ps_kaz.log"
free -hlt > "${KAZ_STATE_DIR}/metro/$(date +"%Y%m%d")_mem_kaz.log"
#on piste cette saloperie d'ethercalc
#echo $(date +"%Y%m%d") >> "${KAZ_STATE_DIR}/metro/docker_stats_ethercalc.log"
#docker stats --no-stream ethercalcServ ethercalcDB >> "${KAZ_STATE_DIR}/metro/docker_stats_ethercalc.log"

120
bin/interoGarradin.sh

@ -0,0 +1,120 @@
#!/bin/bash
#. $(dirname $0)/../config/dockers.env
#. $(dirname $0)/../secret/SetAllPass.sh
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
. $KAZ_ROOT/bin/.commonFunctions.sh
setKazVars
. $DOCKERS_ENV
. $KAZ_ROOT/secret/SetAllPass.sh
URL_GARRADIN="$httpProto://${garradin_API_USER}:${garradin_API_PASSWORD}@kaz-garradin.$(echo $domain)"
PRG=$(basename $0)
RACINE=$(echo $PRG | awk '{print $1}')
TFILE_INT_GARRAGIN_ACTION=$(mktemp /tmp/XXXXXXXX_INT_GARRAGIN_ACTION.json)
TFILE_INT_GARRAGIN_IDFILE=$(mktemp /tmp/XXXXXXXX_TFILE_INT_GARRAGIN_IDFILE.json)
FILE_CREATEUSER="$KAZ_ROOT/tmp/createUser.txt"
trap "rm -f ${TFILE_INT_GARRAGIN_IDFILE} ${TFILE_INT_GARRAGIN_ACTION} " 0 1 2 3 15
############################################ Fonctions #######################################################
TEXTE="
# -- 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:
# dupont ; jean-louis; jean-louis.dupont@kaz.bzh ; gregomondo@kaz.bzh; ; N; N; N; N; N; N; O; ; ;1
#
# exemple pour un compte asso de l'orga gogol avec le service dédié NC uniquement + une équipe dans l'agora
# dupont ; jean-louis; jean-louis.dupont@kaz.bzh ; gregomondo@kaz.bzh; gogol ; O; O; N; N; N; N;N;;gogol_team; 10
"
Int_Garradin_Action() {
# $1 est une action;
ACTION=$1
OPTION=$2
#[ "$OPTION" = "silence" ] || echo -e "${RED}Action = ${GREEN} ${ACTION}${NC}"
# on envoie la requête sur le serveur garradin avec la clause à créer
curl -s ${URL_GARRADIN}/api/sql -d "SELECT * from membres where action_auto='${ACTION}';" >>${TFILE_INT_GARRAGIN_ACTION}
REP_ID=$(jq -c '.results[].id ' ${TFILE_INT_GARRAGIN_ACTION})
[ "$OPTION" = "silence" ] || echo -e "${RED}Nombre de compte ${ACTION} ${NC}= ${GREEN} $(echo ${REP_ID} | wc -w) ${NC}"
if [ ! -z "${REP_ID}" ]
then
echo "# -------- Fichier généré le $(date +%d-%m-%Y-%H:%M:%S) ----------">${FILE_CREATEUSER}
echo "${TEXTE}" >>${FILE_CREATEUSER}
for VAL_ID in ${REP_ID}
do
jq -c --argjson val "${VAL_ID}" '.results[] | select (.id == $val)' ${TFILE_INT_GARRAGIN_ACTION} > ${TFILE_INT_GARRAGIN_IDFILE}
for VAL_GAR in action_auto nom email email_secours quota_disque admin_orga nom_orga responsable_organisation responsable_email email2 email3 email4 email5 agora cloud wordpress garradin docuwiki
do
eval $VAL_GAR=$(jq .$VAL_GAR ${TFILE_INT_GARRAGIN_IDFILE})
done
#comme tout va bien on continue
# on compte le nom de champs dans la zone nom pour gérer les noms et prénoms composés
# si il y a 3 champs, on associe les 2 premieres valeurs avec un - et on laisse le 3ème identique
# si il y a 4 champs on associe les 1 et le 2 avec un tiret et le 3 et 4 avec un tiret
COMPTE_NOM=$(echo $nom | awk -F' ' '{for (i=1; i != NF; i++); print i;}')
case "${COMPTE_NOM}" in
2)
nom_ok=$(echo $nom | awk -F' ' '{print $1}')
prenom_ok=$(echo $nom | awk -F' ' '{print $2}')
;;
3)
nom_ok=$(echo $nom | awk -F' ' '{print $1"-"$2}')
prenom_ok=$(echo $nom | awk -F' ' '{print $3}')
;;
4)
nom_ok=$(echo $nom | awk -F' ' '{print $1"-"$2}')
prenom_ok=$(echo $nom | awk -F' ' '{print $3"-"$4}')
;;
esac
cloud=$(echo $cloud | sed -e 's/null/N/g' | sed -e 's/1/O/g')
garradin=$(echo $garradin | sed -e 's/null/N/g' | sed -e 's/1/O/g')
wordpress=$(echo $wordpress | sed -e 's/null/N/g' | sed -e 's/1/O/g')
agora=$(echo $agora | sed -e 's/null/N/g' | sed -e 's/1/O/g')
docuwiki=$(echo $docuwiki | sed -e 's/null/N/g' | sed -e 's/1/O/g')
if [ "$nom_orga" != "null" ]
then
equipe_agora=$nom_orga
groupe_nc_base=" "
nc_base="N"
admin_orga="O"
else
nom_orga=" "
admin_orga="N"
nc_base="O"
equipe_agora=" "
groupe_nc_base=" "
fi
echo "$nom_ok;$prenom_ok;$email;$email_secours;$nom_orga;$admin_orga;$cloud;$garradin;$wordpress;$agora;$docuwiki;$nc_base;$groupe_nc_base;$equipe_agora;$quota_disque">>${FILE_CREATEUSER}
done
fi
}
if [ -f "$FILE_CREATEUSER" ]
then
echo "Le fichier des users existe , je le renomme en $FILE_CREATEUSER.$(date +%d-%m-%Y-%H:%M:%S)"
mv $FILE_CREATEUSER $FILE_CREATEUSER.$(date +%d-%m-%Y-%H:%M:%S)
fi
#Int_Garradin_Action "A créer" "silence"
Int_Garradin_Action "A créer"

13
bin/optimiseCloud.sh

@ -0,0 +1,13 @@
#!/bin/bash
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
. $KAZ_ROOT/bin/.commonFunctions.sh
setKazVars
. $DOCKERS_ENV
. $KAZ_ROOT/secret/SetAllPass.sh
for cloud in $(docker ps | grep -i cloud |awk '{print $12}')
do
echo -e "$RED$cloud "
echo -e "$GREEN execution de :occ db:add-missing-indices"
docker exec -ti -u 33 $cloud /var/www/html/occ db:add-missing-indices
done

23
bin/sauve_memory.sh

@ -0,0 +1,23 @@
#! /bin/sh
# date: 30/03/2022
# koi: récupérer du swap et de la ram (uniquement sur les services qui laissent filer la mémoire)
# ki: fab
#pour vérifier les process qui prennent du swap : for file in /proc/*/status ; do awk '/Tgid|VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | grep kB | sort -k 3 -n
# Ces commandes donnent le nom du process, son PID et la taille mémoire en swap. Par exemple :
# dans /proc/<PID>/status y'a un VMSwap qui est la taille de swap utilisée par le process.
#calc
docker restart ethercalcDB ethercalcServ
#sympa
docker exec -it sympaServ service sympa restart
#sympa
#docker restart sympaServ
#/kaz/dockers/sympa/reload.sh
# --> bof, ça arrête mal le bazar (4 mails d'ano autour de sympa_msg.pl / bounced.pl / task_manager.pl / bulk.pl / archived.pl)
#postfix
docker exec -it mailServ supervisorctl restart changedetector

24
bin/sauve_serveur.sh

@ -0,0 +1,24 @@
#! /bin/sh
# date: 12/11/2020
#PATH=/bin:/sbin:/usr/bin:/usr/sbin
PATH_SAUVE="/home/sauve/"
dpkg --get-selections > $PATH_SAUVE/dpkg_selection
tar -clzf $PATH_SAUVE/etc_sauve.tgz /etc 1> /dev/null 2> /dev/null
tar -clzf $PATH_SAUVE/var_spool.tgz /var/spool 1> /dev/null 2> /dev/null
tar -clzf $PATH_SAUVE/root.tgz /root 1> /dev/null 2> /dev/null
#sauve les bases
/kaz/bin/container.sh save
#sauve les bases
#docker exec nextcloudDB mysqldump --user=nextcloud --password=nexcloud --databases nextcloud | gzip > $PATH_SAUVE/nextcloud.sql.gz
#docker exec etherpadDB mysqldump --user=pad --password=pad --databases etherpad_lite_db | gzip > $PATH_SAUVE/pad.sql.gz
#docker exec framadateDB mysqldump --user=framadate --password=framadate --databases framadate | gzip > $PATH_SAUVE/framadate.sql.gz
#docker exec mattermostDB mysqldump --user=mattermost --password=mattermost --databases mattermost | gzip > $PATH_SAUVE/mattermost.sql.gz
#docker exec sympaDB mysqldump --user=sympa --password=sympa --databases sympa | gzip > $PATH_SAUVE/sympa.sql.gz
#redis/calcDB
#inutile car le backup de /var/lib/docker/volumes/ethercalc_calcDB/_data/dump.rdb est suffisant

23
bin/stop_start_all_cloud.sh

@ -0,0 +1,23 @@
#!/bin/bash
#date: 28/03/2022
#ki: fab
#koi: relancer tous les clouds et collabora (pour regagner de la RAM/SWAP)
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd)
. $KAZ_ROOT/bin/.commonFunctions.sh
setKazVars
. $DOCKERS_ENV
. $KAZ_ROOT/secret/SetAllPass.sh
#tous les clouds
for cloud in $(docker ps | grep -i nextcloudServ |awk '{print $12}')
do
docker restart $cloud
done
#tous les collabora
for colla in $(docker ps | grep -i officeServ |awk '{print $11}')
do
docker restart $colla
done

2
bin/updateCloud.sh

@ -82,7 +82,7 @@ LIST_ALL=$(docker exec -ti -u 33 "${DockerServName}" /var/www/html/occ app:list
{if (cp) print $0};')
printKazMsg "add applications"
for app in tasks calendar contacts mail richdocuments drawio rainloop
for app in tasks calendar bookmarks contacts mail richdocuments drawio rainloop
do
grep -wq "${app}" <<<"${LIST_ALL}" 2>/dev/null && continue
echo " install ${app}"

2
bin/updateCloudApp.sh

@ -5,7 +5,7 @@ setKazVars
. $DOCKERS_ENV
. $KAZ_ROOT/secret/SetAllPass.sh
LISTE_APPS="tasks calendar contacts richdocuments drawio rainloop"
LISTE_APPS="tasks calendar contacts bookmarks richdocuments richdocumentscode external drawio rainloop"
echo -e "$NC"
for cloud in $(docker ps | grep -i cloud |awk '{print $12}')

2
bin/verif_garradin.sh

@ -114,5 +114,5 @@ then
fi
fi
#SearchGarradinPostfix
SearchGarradinPostfix
SearchPostfixGarradin

2
config/skip-file.txt

@ -82,3 +82,5 @@ dockers/postfix/filter
dockers/jirafeau/config/config.local.php
config/skip-email.txt
dockers/sympa/filter/domainname
bin/DEADJOE
dockers/sympa/reload.sh.non.utilisé

2
dockers/jirafeau/Dockerfile

@ -47,7 +47,7 @@ COPY dockers/jirafeau/config/composer.json .
RUN /usr/local/bin/composer-setup.sh
RUN php composer.phar install
RUN echo -e '\
RUN echo '\
upload_max_filesize = 1024M\n\
post_max_size = 1024M\n\
[mail function]\n\

2
dockers/mattermost/app/Dockerfile

@ -2,7 +2,7 @@ FROM alpine:3.10
# Some ENV variables
ENV PATH="/mattermost/bin:${PATH}"
ENV MM_VERSION=6.4.0
ENV MM_VERSION=6.5.0
ENV MM_INSTALL_TYPE=docker
# Build argument to set Mattermost edition

Loading…
Cancel
Save