Gael
10 months ago
40 changed files with 1674 additions and 1482 deletions
@ -1,20 +0,0 @@ |
|||
#/usr/bin/env bash |
|||
|
|||
_initAgora_completion () { |
|||
KAZ_ROOT=$(cd "$(dirname ${COMP_WORDS[0]})"/..; pwd) |
|||
COMPREPLY=() |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
local cword=${COMP_CWORD} cur=${COMP_WORDS[COMP_CWORD]} |
|||
case "${cword}" in |
|||
1) |
|||
# orga name |
|||
local available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "service" "agora" 2>/dev/null) |
|||
COMPREPLY=($(compgen -W "${available_orga}" -- "${cur}")) |
|||
;; |
|||
*) |
|||
;; |
|||
esac |
|||
return 0 |
|||
} |
|||
complete -F _initAgora_completion initAgora.sh |
@ -1,20 +0,0 @@ |
|||
#/usr/bin/env bash |
|||
|
|||
_initCloud_completion () { |
|||
KAZ_ROOT=$(cd "$(dirname ${COMP_WORDS[0]})"/..; pwd) |
|||
COMPREPLY=() |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
local cword=${COMP_CWORD} cur=${COMP_WORDS[COMP_CWORD]} |
|||
case "${cword}" in |
|||
1) |
|||
# orga name |
|||
local available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "service" "cloud" 2>/dev/null) |
|||
COMPREPLY=($(compgen -W "${available_orga}" -- "${cur}")) |
|||
;; |
|||
*) |
|||
;; |
|||
esac |
|||
return 0 |
|||
} |
|||
complete -F _initCloud_completion initCloud.sh |
@ -1,20 +0,0 @@ |
|||
#/usr/bin/env bash |
|||
|
|||
_initWP_completion () { |
|||
KAZ_ROOT=$(cd "$(dirname ${COMP_WORDS[0]})"/..; pwd) |
|||
COMPREPLY=() |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
local cword=${COMP_CWORD} cur=${COMP_WORDS[COMP_CWORD]} |
|||
case "${cword}" in |
|||
1) |
|||
# orga name |
|||
local available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "service" "wp" 2>/dev/null) |
|||
COMPREPLY=($(compgen -W "${available_orga}" -- "${cur}")) |
|||
;; |
|||
*) |
|||
;; |
|||
esac |
|||
return 0 |
|||
} |
|||
complete -F _initWP_completion initWP.sh |
@ -1,20 +0,0 @@ |
|||
#/usr/bin/env bash |
|||
|
|||
_initWiki_completion () { |
|||
KAZ_ROOT=$(cd "$(dirname ${COMP_WORDS[0]})"/..; pwd) |
|||
COMPREPLY=() |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
local cword=${COMP_CWORD} cur=${COMP_WORDS[COMP_CWORD]} |
|||
case "${cword}" in |
|||
1) |
|||
# orga name |
|||
local available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "service" "wiki" 2>/dev/null) |
|||
COMPREPLY=($(compgen -W "${available_orga}" -- "${cur}")) |
|||
;; |
|||
*) |
|||
;; |
|||
esac |
|||
return 0 |
|||
} |
|||
complete -F _initWiki_completion initWiki.sh |
@ -1,21 +0,0 @@ |
|||
#/usr/bin/env bash |
|||
|
|||
_updateCloud_completion () { |
|||
KAZ_ROOT=$(cd "$(dirname ${COMP_WORDS[0]})"/..; pwd) |
|||
COMPREPLY=() |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
local cword=${COMP_CWORD} cur=${COMP_WORDS[COMP_CWORD]} |
|||
case "${cword}" in |
|||
1) |
|||
# orga name |
|||
#local available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "compose" "enable" "orga" 2>/dev/null) |
|||
local available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "service" "cloud" 2>/dev/null) |
|||
COMPREPLY=($(compgen -W "${available_orga}" -- "${cur}")) |
|||
;; |
|||
*) |
|||
;; |
|||
esac |
|||
return 0 |
|||
} |
|||
complete -F _updateCloud_completion updateCloud.sh |
@ -1,163 +0,0 @@ |
|||
#!/bin/bash |
|||
# Script de relance des dockers Nextcloud des Orgas |
|||
# Permet de lancer la commande d' optimisation des clouds |
|||
# Permet de connaitre la version des clouds |
|||
# Permet de relancer les dockers en mode a chaud ou à froid ( docker restart ou docker-compose down et up) |
|||
# lancer le script san arguments pour optenir de l' aide |
|||
# |
|||
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=2 |
|||
TEMPO_ACTION_START=120 |
|||
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 |
|||
|
|||
# On ne met pas le -ti dans la ligne avec docker exec pour l'update |
|||
# Ceci afin de permettre son lancement en cron |
|||
UpdateApplis() { |
|||
echo -e "${NC}" |
|||
echo "Mise à jour de toutes les applis installées y compris le cloud Principal" |
|||
for CLOUD in ${LIST_CLOUDS} |
|||
do |
|||
echo -e "${GREEN}${COMPTEUR}/${NB_CLOUDS} : ${CLOUD} " |
|||
echo -e "${NC}" |
|||
docker exec -u 33 ${CLOUD}-nextcloudServ /var/www/html/occ app:update --all |
|||
COMPTEUR=$(expr $COMPTEUR - 1) |
|||
done |
|||
echo -e "${GREEN} Mise à jour des applis du cloud principal " |
|||
echo -e "${NC}" |
|||
docker exec -u 33 nextcloudServ /var/www/html/occ app:update --all |
|||
} |
|||
|
|||
|
|||
Optimise_Cloud() { |
|||
echo "--------------------------------------------------------" |
|||
echo "${NC}Optimisation des cloud" |
|||
echo "--------------------------------------------------------" |
|||
for CLOUD in ${LIST_CLOUDS} |
|||
do |
|||
echo -e "$RED${CLOUD} (${COMPTEUR}/${NB_CLOUDS}) " |
|||
echo -e "$GREEN execution de :occ db:add-missing-indices" |
|||
docker exec -ti -u 33 ${CLOUD}-nextcloudServ /var/www/html/occ db:add-missing-indices |
|||
docker exec -ti -u 33 ${CLOUD}-nextcloudServ /var/www/html/occ db:convert-filecache-bigint --no-interaction |
|||
COMPTEUR=$(expr ${COMPTEUR} - 1) |
|||
done |
|||
echo "${NC}" |
|||
} |
|||
|
|||
|
|||
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 stop cloud |
|||
sleep ${TEMPO_ACTION_STOP} |
|||
echo "${GREEN}OK" |
|||
echo -n "${NC}Démarrage ... " |
|||
docker-compose up -d cloud |
|||
echo "${GREEN}OK" |
|||
COMPTEUR=$(expr $COMPTEUR - 1) |
|||
done |
|||
sleep ${TEMPO_ACTION_START} |
|||
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}" |
|||
availableProxyComposes=($(getList "${KAZ_CONF_DIR}/container-proxy.list")) |
|||
|
|||
for item in "${availableProxyComposes[@]}"; do |
|||
${KAZ_COMP_DIR}/${item}/reload.sh |
|||
done |
|||
} |
|||
|
|||
|
|||
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 |
|||
-o Lance la procédure Nextcloud pour optimiser les performances |
|||
-u Mets à jour les apllis des clouds |
|||
-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 |
|||
'-o' ) |
|||
Optimise_Cloud |
|||
exit |
|||
;; |
|||
'-v' ) |
|||
version |
|||
exit |
|||
;; |
|||
'-t' ) |
|||
restart-compose |
|||
exit |
|||
;; |
|||
'-u' ) |
|||
UpdateApplis |
|||
exit |
|||
;; |
|||
'-r' ) |
|||
restart |
|||
exit |
|||
;; |
|||
'-h' ) |
|||
usage |
|||
;; |
|||
esac |
|||
|
@ -0,0 +1,639 @@ |
|||
#!/bin/bash |
|||
# Script de manipulation des containers en masse |
|||
# init /versions / restart ... |
|||
# |
|||
|
|||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd) |
|||
. $KAZ_ROOT/bin/.commonFunctions.sh |
|||
setKazVars |
|||
. $DOCKERS_ENV |
|||
. $KAZ_ROOT/secret/SetAllPass.sh |
|||
|
|||
PRG=$(basename $0) |
|||
|
|||
#GLOBAL VARS |
|||
NAS_VOL="/mnt/disk-nas1/docker/volumes/" |
|||
|
|||
availableOrga=($(getList "${KAZ_CONF_DIR}/container-orga.list")) |
|||
AVAILABLE_ORGAS=${availableOrga[*]//-orga/} |
|||
|
|||
availableContainersCommuns=( $(getList "${KAZ_CONF_DIR}/container-withMail.list") $(getList "${KAZ_CONF_DIR}/container-withoutMail.list")) |
|||
|
|||
OPERATE_ON_MAIN= # par defaut NON on ne traite que des orgas |
|||
OPERATE_ON_NAS_ORGA="OUI" # par defaut oui, on va aussi sur les orgas du NAS |
|||
OPERATE_LOCAL_ORGA="OUI" # par defaut oui |
|||
|
|||
TEMPO_ACTION_STOP=2 # Lors de redémarrage avec tempo, on attend après le stop |
|||
TEMPO_ACTION_START=120 # Lors de redémarrage avec tempo, avant de reload le proxy |
|||
|
|||
CONTAINERS_TYPES= |
|||
|
|||
defaultContainersTypes="cloud agora wp wiki office" # les containers gérés par ce script. |
|||
|
|||
declare -A DockerServNames # le nom des containers correspondant |
|||
DockerServNames=( [cloud]="${nextcloudServName}" [agora]="${mattermostServName}" [wiki]="${dokuwikiServName}" [wp]="${wordpressServName}" [office]="${officeServName}") |
|||
|
|||
declare -A FilterLsVolume # Pour trouver quel volume appartient à quel container |
|||
FilterLsVolume=( [cloud]="cloudMain" [agora]="matterConfig" [wiki]="wikiConf" [wp]="wordpress" ) |
|||
|
|||
declare -A composeDirs # Le nom du repertoire compose pour le commun |
|||
composeDirs=( [cloud]="cloud" [agora]="mattermost" [wiki]="dokuwiki" [office]="collabora") |
|||
|
|||
declare -A serviceNames # Le nom du du service dans le dockerfile d'orga |
|||
serviceNames=( [cloud]="cloud" [agora]="agora" [wiki]="dokuwiki" [wp]="wordpress" [office]="collabora") |
|||
|
|||
declare -A subScripts |
|||
subScripts=( [cloud]="manageCloud.sh" [agora]="manageAgora.sh" [wiki]="manageWiki.sh" [wp]="manageWp.sh" ) |
|||
|
|||
declare -A OrgasOnNAS |
|||
declare -A OrgasLocales |
|||
declare -A NbOrgas |
|||
declare -A RunningOrgas |
|||
declare -A Posts |
|||
|
|||
QUIET="1" # redirection des echo |
|||
|
|||
OCCCOMANDS=() |
|||
MMCTLCOMANDS=() |
|||
EXECCOMANDS=() |
|||
|
|||
# CLOUD |
|||
APPLIS_PAR_DEFAUT="tasks calendar contacts bookmarks mail richdocuments external drawio snappymail ransomware_protection" #rainloop richdocumentscode |
|||
|
|||
|
|||
usage() { |
|||
echo "${PRG} [OPTION] [CONTAINERS_TYPES] [COMMANDES] [ORGAS] |
|||
Ce script regroupe l'ensemble des opérations que l'on souhaite automatiser sur plusieurs containers |
|||
Par defaut, sur les orgas, mais on peut aussi ajouter les communs |
|||
|
|||
OPTIONS |
|||
-h|--help Cette aide :-) |
|||
-n|--simu SIMULATION |
|||
-q|--quiet On ne parle pas (utile avec le -n pour avoir que les commandes) |
|||
-m|--main Traite aussi le container commun (cloud commun / agora commun / wiki commun) |
|||
-M Ne traite que le container commun, et pas les orgas |
|||
--nas Ne traite QUE les orgas sur le NAS |
|||
--local Ne traite pas les orgas sur le NAS |
|||
-v|--version Donne la version des containers et signale les MàJ |
|||
-l|--list Liste des containers (up / down, local ou nas) de cette machine |
|||
|
|||
CONTAINERS_TYPES |
|||
-cloud Pour agir sur les clouds |
|||
-agora Pour agir sur les agoras |
|||
-wp Les wp |
|||
-wiki Les wiki |
|||
-office Les collabora |
|||
|
|||
COMMANDES (on peut en mettre plusieurs dans l'ordre souhaité) |
|||
-I|--install L'initialisation du container |
|||
-t Redémarre avec tempo (docker-compose down puis sleep ${TEMPO_ACTION_STOP} puis up puis sleep ${TEMPO_ACTION_START}) |
|||
-r Redémarre sans tempo (docker restart) |
|||
-exec \"command\" Envoie une commande docker exec |
|||
|
|||
--optim Lance la procédure Nextcloud pour optimiser les performances ** ** |
|||
-occ \"command\" Envoie une commande via occ ** ** |
|||
-u Mets à jour les applis ** SPECIFIQUES ** |
|||
-i Install des applis ** CLOUD ** |
|||
-a \"app1 app2 ...\" Choix des appli à installer ou mettre à jour (entre guillemets) ** ** |
|||
-U|--upgrade Upgrade des clouds ** ** |
|||
|
|||
-mmctl \"command\" Envoie une commande via mmctl ** SPECIFIQUES ** |
|||
-p|--post \"team\" \"message\" Poste un message dans une team agora ** AGORA ** |
|||
|
|||
ORGAS |
|||
[orga1 orga2 ... ] on peut filtrer parmi : ${AVAILABLE_ORGAS} |
|||
|
|||
|
|||
Exemples : |
|||
${PRG} -office -m -r restart de tous les collaboras (libére RAM) |
|||
${PRG} -cloud -u -r -q -n Affiche toutes les commandes (-n -q ) pour mettre à jour toutes les applis des clouds + restart (-u -r) |
|||
${PRG} -p \"monorga:town-square\" \"Hello\" monorga # envoie Hello sur le centreville de l'orga monorga sur son mattermost dédié |
|||
|
|||
" |
|||
} |
|||
|
|||
|
|||
#################################################### |
|||
################ fonctions clefs ################### |
|||
#################################################### |
|||
|
|||
_populate_lists(){ |
|||
# récupère les listes d'orga à traiter |
|||
# on rempli les tableaux OrgasOnNAS / OrgasLocales / NbOrgas ... par type de container |
|||
|
|||
if [ -z "${CONTAINERS_TYPES}" ]; then |
|||
# wow, on traite tout le monde d'un coup... |
|||
CONTAINERS_TYPES="$defaultContainersTypes" |
|||
fi |
|||
|
|||
for TYPE in ${CONTAINERS_TYPES}; do |
|||
if [ -n "${FilterLsVolume[$TYPE]}" ] ; then # on regarde dans les volumes |
|||
[ -n "$OPERATE_ON_NAS_ORGA" ] && OrgasOnNAS["$TYPE"]=$( _getListOrgas ${NAS_VOL} ${FilterLsVolume[$TYPE]} ) |
|||
[ -n "$OPERATE_LOCAL_ORGA" ] && OrgasLocales["$TYPE"]=$( _getListOrgas ${DOCK_VOL} ${FilterLsVolume[$TYPE]} "SANSLN") |
|||
else # un docker ps s'il n'y a pas de volumes |
|||
[ -n "$OPERATE_LOCAL_ORGA" ] && OrgasLocales["$TYPE"]=$(docker ps --format '{{.Names}}' | grep ${DockerServNames[$TYPE]} | sed -e "s/-*${DockerServNames[$TYPE]}//") |
|||
fi |
|||
NbOrgas["$TYPE"]=$(($(echo ${OrgasOnNAS["$TYPE"]} | wc -w) + $(echo ${OrgasLocales["$TYPE"]} | wc -w))) |
|||
RunningOrgas["$TYPE"]=$(docker ps --format '{{.Names}}' | grep ${DockerServNames[$TYPE]} | sed -e "s/-*${DockerServNames[$TYPE]}//") |
|||
done |
|||
} |
|||
|
|||
_getListOrgas(){ |
|||
# retrouve les orgas à partir des volume présents |
|||
# $1 where to lookup |
|||
# $2 filter |
|||
# $3 removeSymbolicLinks |
|||
[ ! -d $1 ] || [ -z "$2" ] && return 1 # si le repertoire n'existe pas on skip |
|||
LIST=$(ls "${1}" | grep -i orga | grep -i "$2" | sed -e "s/-${2}$//g" | sed -e 's/^orga_//') |
|||
[ -n "$3" ] && LIST=$(ls -F "${1}" | grep '/' | grep -i orga | grep -i "$2" | sed -e "s/-${2}\/$//g" | sed -e 's/^orga_//') |
|||
LIST=$(comm -12 <(printf '%s\n' ${LIST} | sort) <(printf '%s\n' ${AVAILABLE_ORGAS} | sort)) |
|||
echo "$LIST" |
|||
} |
|||
|
|||
_executeFunctionForAll(){ |
|||
# Parcours des container et lancement des commandes |
|||
# Les commandes ont en derniers paramètres le type et l'orga et une string parmi KAZ/ORGANAS/ORGALOCAL pour savoir sur quoi on opère |
|||
# $1 function |
|||
# $2 nom de la commande |
|||
# $3 quel types de containers |
|||
# $4 params : quels paramètres à passer à la commande (les clefs sont #ORGA# #DOCKERSERVNAME# #SURNAS# #ISMAIN# #TYPE# #COMPOSEDIR# ) |
|||
for TYPE in ${3}; do |
|||
if [ -n "$OPERATE_ON_MAIN" ]; then |
|||
if [[ -n "${composeDirs[$TYPE]}" && "${availableContainersCommuns[*]}" =~ "${composeDirs[$TYPE]}" ]]; then # pas de cloud / agora / wp / wiki sur cette instance |
|||
Dockername=${DockerServNames[$TYPE]} |
|||
PARAMS=$(echo $4 | sed -e "s/#ORGA#//g;s/#DOCKERSERVNAME#/$Dockername/g;s/#ISMAIN#/OUI/g;s/#SURNAS#/NON/g;s/#TYPE#/$TYPE/g;s%#COMPOSEDIR#%${KAZ_COMP_DIR}/${composeDirs[$TYPE]}%g" ) |
|||
echo "-------- $2 $TYPE COMMUN ----------------------------" >& $QUIET |
|||
eval "$1" $PARAMS |
|||
fi |
|||
fi |
|||
if [[ ${NbOrgas[$TYPE]} -gt 0 ]]; then |
|||
echo "-------- $2 des $TYPE des ORGAS ----------------------------" >& $QUIET |
|||
COMPTEUR=1 |
|||
if [ -n "$OPERATE_LOCAL_ORGA" ]; then |
|||
for ORGA in ${OrgasLocales[$TYPE]}; do |
|||
Dockername=${ORGA}-${DockerServNames[$TYPE]} |
|||
PARAMS=$(echo $4 | sed -e "s/#ORGA#/${ORGA}/g;s/#DOCKERSERVNAME#/$Dockername/g;s/#ISMAIN#/NON/g;s/#SURNAS#/NON/g;s/#TYPE#/$TYPE/g;s%#COMPOSEDIR#%${KAZ_COMP_DIR}/${ORGA}-orga%g" ) |
|||
echo "${RED} ${ORGA}-orga ${NC}($COMPTEUR/${NbOrgas[$TYPE]})" >& $QUIET |
|||
eval "$1" $PARAMS |
|||
COMPTEUR=$((COMPTEUR + 1)) |
|||
done |
|||
fi |
|||
if [ -n "$OPERATE_ON_NAS_ORGA" ]; then |
|||
for ORGA in ${OrgasOnNAS[$TYPE]}; do |
|||
Dockername=${ORGA}-${DockerServNames[$TYPE]} |
|||
PARAMS=$(echo $4 | sed -e "s/#ORGA#/${ORGA}/g;s/#DOCKERSERVNAME#/$Dockername/g;s/#ISMAIN#/NON/g;s/#SURNAS#/OUI/g;s/#TYPE#/$TYPE/g;s%#COMPOSEDIR#%${KAZ_COMP_DIR}/${ORGA}-orga%g" ) |
|||
echo "${RED} ${ORGA}-orga ${NC}($COMPTEUR/${NbOrgas[$TYPE]})" >& $QUIET |
|||
eval "$1" $PARAMS |
|||
COMPTEUR=$((COMPTEUR + 1)) |
|||
done |
|||
fi |
|||
fi |
|||
done |
|||
} |
|||
|
|||
|
|||
############################################## |
|||
################ COMMANDES ################### |
|||
############################################## |
|||
Init(){ |
|||
# Initialisation des containers |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "Initialisation" >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
|
|||
_executeFunctionForAll "_initContainer" "Initialisation" "${CONTAINERS_TYPES[@]}" "#TYPE# #ISMAIN# #SURNAS# #ORGA# " |
|||
} |
|||
|
|||
restart-compose() { |
|||
# Parcours les containers et redémarre avec tempo |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "DOCKER-COMPOSE DOWN puis sleep ${TEMPO_ACTION_STOP}" >& $QUIET |
|||
echo "DOCKER-COMPOSE UP puis sleep ${TEMPO_ACTION_START}" >& $QUIET |
|||
echo "de ${CONTAINERS_TYPES} pour $NB_ORGAS_STR" >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
|
|||
_executeFunctionForAll "_restartContainerAvecTempo" "Restart" "${CONTAINERS_TYPES[@]}" "#TYPE# #ISMAIN# #COMPOSEDIR#" |
|||
|
|||
${SIMU} sleep ${TEMPO_ACTION_START} |
|||
_reloadProxy |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
echo "${GREEN}FIN${NC} " >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
} |
|||
|
|||
restart() { |
|||
# Parcours les containers et redémarre |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "DOCKER RESTART des ${CONTAINERS_TYPES} pour $NB_ORGAS_STR" >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
|
|||
_executeFunctionForAll "_restartContainer" "Restart" "${CONTAINERS_TYPES[@]}" "#DOCKERSERVNAME#" |
|||
|
|||
_reloadProxy |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
echo "${GREEN}FIN${NC} " >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
} |
|||
|
|||
version(){ |
|||
# Parcours les containers et affiche leurs versions |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "VERSIONS" >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
_executeFunctionForAll "_versionContainer" "Version" "${CONTAINERS_TYPES[@]}" "#TYPE# #ISMAIN# #ORGA#" |
|||
} |
|||
|
|||
|
|||
listContainers(){ |
|||
echo "${NC}--------------------------------------------------------" |
|||
echo "LISTES" |
|||
echo "------------------------------------------------------------" |
|||
for TYPE in ${CONTAINERS_TYPES}; do |
|||
echo "****************** $TYPE ****************" |
|||
_listContainer "$TYPE" |
|||
done |
|||
} |
|||
|
|||
|
|||
|
|||
######################## Fonctions génériques ####################### |
|||
|
|||
_initContainer(){ |
|||
# $1 type |
|||
# $2 COMMUN |
|||
# $3 ON NAS |
|||
# $4 orgas |
|||
if [ -n "${subScripts[$1]}" ] ; then |
|||
evalStr="${KAZ_BIN_DIR}/${subScripts[$1]} --install" |
|||
if [ "$3" = "OUI" ]; then evalStr="${evalStr} -nas" ; fi |
|||
if [ ! "$QUIET" = "1" ]; then evalStr="${evalStr} -q" ; fi |
|||
if [ -n "$SIMU" ]; then evalStr="${evalStr} -n" ; fi |
|||
if [ ! "$2" = "OUI" ]; then evalStr="${evalStr} $4" ; fi |
|||
eval $evalStr |
|||
fi |
|||
} |
|||
|
|||
_restartContainer(){ |
|||
# $1 Dockername |
|||
echo -n "${NC}Redemarrage ... " >& $QUIET |
|||
${SIMU} |
|||
${SIMU} docker restart $1 |
|||
echo "${GREEN}OK${NC}" >& $QUIET |
|||
} |
|||
|
|||
_restartContainerAvecTempo(){ |
|||
# $1 type |
|||
# $2 main container |
|||
# $2 composeDir |
|||
dir=$3 |
|||
if [ -z $dir ]; then return 1; fi # le compose n'existe pas ... par exemple wordpress commun |
|||
cd "$dir" |
|||
echo -n "${NC}Arrêt ... " >& $QUIET |
|||
${SIMU} |
|||
if [ "$2" = "OUI" ]; then ${SIMU} docker-compose stop ; |
|||
else ${SIMU} docker-compose stop "${serviceNames[$1]}" |
|||
fi |
|||
${SIMU} sleep ${TEMPO_ACTION_STOP} |
|||
echo "${GREEN}OK${NC}" >& $QUIET |
|||
echo -n "${NC}Démarrage ... " >& $QUIET |
|||
if [ "$2" = "OUI" ]; then ${SIMU} docker-compose up -d ; |
|||
else ${SIMU} docker-compose up -d "${serviceNames[$1]}" |
|||
fi |
|||
#${SIMU} sleep ${TEMPO_ACTION_START} |
|||
echo "${GREEN}OK${NC}" >& $QUIET |
|||
} |
|||
|
|||
|
|||
_reloadProxy() { |
|||
availableProxyComposes=($(getList "${KAZ_CONF_DIR}/container-proxy.list")) |
|||
|
|||
for item in "${availableProxyComposes[@]}"; do |
|||
${SIMU} ${KAZ_COMP_DIR}/${item}/reload.sh |
|||
done |
|||
} |
|||
|
|||
_versionContainer() { |
|||
# Affiche la version d'un container donné |
|||
# $1 type |
|||
# $2 COMMUN |
|||
# $3 orgas |
|||
if [ -n "${subScripts[$1]}" ] ; then |
|||
evalStr="${KAZ_BIN_DIR}/${subScripts[$1]} --version" |
|||
if [ ! "$2" = "OUI" ]; then evalStr="${evalStr} $3" ; fi |
|||
eval $evalStr |
|||
fi |
|||
} |
|||
|
|||
|
|||
_listContainer(){ |
|||
# pour un type donné (cloud / agora / wiki / wp), fait une synthèse de qui est up et down / nas ou local |
|||
# $1 type |
|||
RUNNING_FROM_NAS=$(comm -12 <(printf '%s\n' ${OrgasOnNAS[$1]} | sort) <(printf '%s\n' ${RunningOrgas[$1]} | sort) | sed -e ':a;N;$!ba;s/\n/ /g') |
|||
RUNNING_LOCAL=$(comm -12 <(printf '%s\n' ${OrgasLocales[$1]} | sort) <(printf '%s\n' ${RunningOrgas[$1]} | sort) | sed -e ':a;N;$!ba;s/\n/ /g') |
|||
# tu l'a vu la belle commande pour faire une exclusion de liste |
|||
DOWN_ON_NAS=$(comm -23 <(printf '%s\n' ${OrgasOnNAS[$1]} | sort) <(printf '%s\n' ${RunningOrgas[$1]} | sort) | sed -e ':a;N;$!ba;s/\n/ /g') |
|||
DOWN_LOCAL=$(comm -23 <(printf '%s\n' ${OrgasLocales[$1]} | sort) <(printf '%s\n' ${RunningOrgas[$1]} | sort)| sed -e ':a;N;$!ba;s/\n/ /g') |
|||
NB_SUR_NAS=$(echo ${OrgasOnNAS[$1]} | wc -w) |
|||
NB_LOCAUX=$(echo ${OrgasLocales[$1]} | wc -w) |
|||
NB_RUNNING_SUR_NAS=$(echo $RUNNING_FROM_NAS | wc -w) |
|||
NB_RUNNING_LOCALLY=$(echo $RUNNING_LOCAL | wc -w) |
|||
MAIN_RUNNING="${RED}DOWN${NC}" |
|||
if docker ps | grep -q " ${DockerServNames[$1]}" |
|||
then |
|||
MAIN_RUNNING="${GREEN}UP${NC}" |
|||
fi |
|||
|
|||
[ -n "${composeDirs[${1}]}" ] && echo "${NC}Le ${1} commun est $MAIN_RUNNING" |
|||
if [[ ${NbOrgas[$1]} -gt 0 ]]; then |
|||
ENLOCALSTR= |
|||
if [[ ${NB_RUNNING_SUR_NAS[$1]} -gt 0 ]]; then ENLOCALSTR=" en local" ; fi |
|||
echo "Orgas : $NB_RUNNING_LOCALLY / $NB_LOCAUX running ${1}$ENLOCALSTR" |
|||
echo "${NC}UP : ${GREEN}${RUNNING_LOCAL}" |
|||
echo "${NC}DOWN : ${RED}$DOWN_LOCAL${NC}" |
|||
if [[ ${NB_RUNNING_SUR_NAS[$1]} -gt 0 ]]; then |
|||
echo "${NC}Orgas : $NB_RUNNING_SUR_NAS / $NB_SUR_NAS running depuis le NAS :" |
|||
echo "${NC}UP : ${GREEN}${RUNNING_FROM_NAS}" |
|||
echo "${NC}DOWN : ${RED}$DOWN_ON_NAS${NC}" |
|||
fi |
|||
fi |
|||
} |
|||
|
|||
|
|||
######################################################### |
|||
############# FONCTIONS SPECIFIQUES ##################### |
|||
######################################################### |
|||
|
|||
################################## |
|||
############### CLOUD ############ |
|||
################################## |
|||
|
|||
UpgradeClouds() { |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "UPGRADE des cloud" >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
RunOCCCommand "upgrade" |
|||
} |
|||
|
|||
OptimiseClouds() { |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "Optimisation des cloud" >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
RunOCCCommands "db:add-missing-indices" "db:convert-filecache-bigint --no-interaction" |
|||
} |
|||
|
|||
InstallApps(){ |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "INSTALL DES APPLIS sur les clouds : ${LISTE_APPS}" >& $QUIET |
|||
echo "-------------------------------------------------------------" >& $QUIET |
|||
if [ -z "${LISTE_APPS}" ]; then |
|||
echo "Aucune appli n'est précisée, j'installe les applis par défaut : ${APPLIS_PAR_DEFAUT}" >& $QUIET |
|||
LISTE_APPS="${APPLIS_PAR_DEFAUT}" |
|||
fi |
|||
PARAMS="-a \"$LISTE_APPS\"" |
|||
if [ ! "$QUIET" = "1" ]; then PARAMS="${PARAMS} -q" ; fi |
|||
if [ -n "$SIMU" ]; then PARAMS="${PARAMS} -n" ; fi |
|||
_executeFunctionForAll "${KAZ_BIN_DIR}/${subScripts["cloud"]} -i $PARAMS" "Install des applis" "cloud" "#ORGA#" |
|||
} |
|||
|
|||
UpdateApplis() { |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "UPDATE DES APPLIS des cloud : ${LISTE_APPS}" >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
PARAMS="-a ${LISTE_APPS}" |
|||
if [ -z "${LISTE_APPS}" ]; then |
|||
echo "Aucune appli n'est précisée, je les met toutes à jour! " >& $QUIET |
|||
PARAMS= |
|||
fi |
|||
if [ ! "$QUIET" = "1" ]; then PARAMS="${PARAMS} -q" ; fi |
|||
if [ -n "$SIMU" ]; then PARAMS="${PARAMS} -n" ; fi |
|||
_executeFunctionForAll "${KAZ_BIN_DIR}/${subScripts["cloud"]} -u $PARAMS" "Maj des applis" "cloud" "#ORGA#" |
|||
} |
|||
|
|||
|
|||
################################## |
|||
############### AGORA ############ |
|||
################################## |
|||
|
|||
|
|||
PostMessages(){ |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "Envoi de messages sur mattermost" >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
|
|||
for TEAM in "${!Posts[@]}" |
|||
do |
|||
MSG=${Posts[$TEAM]/\"/\\\"} |
|||
PARAMS="-p \"$TEAM\" \"$MSG\"" |
|||
if [ ! "$QUIET" = "1" ]; then PARAMS="${PARAMS} -q" ; fi |
|||
if [ -n "$SIMU" ]; then PARAMS="${PARAMS} -n" ; fi |
|||
_executeFunctionForAll "${KAZ_BIN_DIR}/${subScripts["agora"]} $PARAMS" "Post vers $TEAM sur l'agora" "agora" "#ORGA#" |
|||
done |
|||
} |
|||
|
|||
|
|||
########## LANCEMENT COMMANDES OCC / MMCTL ############ |
|||
|
|||
RunCommands() { |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "Envoi de commandes en direct" >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
# $1 OCC / MMCTL / EXEC |
|||
# $ suivants : les commandes |
|||
for command in "${@:2}" |
|||
do |
|||
if [ $1 = "OCC" ]; then RunOCCCommand "$command" ; fi |
|||
if [ $1 = "MMCTL" ]; then RunMMCTLCommand "$command" ; fi |
|||
if [ $1 = "EXEC" ]; then RunEXECCommand "$command" ; fi |
|||
done |
|||
} |
|||
|
|||
_runSingleOccCommand(){ |
|||
# $1 Command |
|||
# $2 Dockername |
|||
${SIMU} docker exec -u 33 $2 /var/www/html/occ $1 |
|||
} |
|||
|
|||
_runSingleMmctlCommand(){ |
|||
# $1 Command |
|||
# $2 Dockername |
|||
${SIMU} docker exec $2 bin/mmctl $1 |
|||
} |
|||
|
|||
_runSingleExecCommand(){ |
|||
# $1 Command |
|||
# $2 Dockername |
|||
${SIMU} docker exec $2 $1 |
|||
} |
|||
|
|||
RunOCCCommand() { |
|||
# $1 Command |
|||
_executeFunctionForAll "_runSingleOccCommand \"${1}\"" "OCC $1" "cloud" "#DOCKERSERVNAME#" |
|||
} |
|||
|
|||
RunMMCTLCommand() { |
|||
# $1 Command |
|||
_executeFunctionForAll "_runSingleMmctlCommand \"${1}\"" "MMCTL $1" "agora" "#DOCKERSERVNAME#" |
|||
} |
|||
|
|||
RunEXECCommand() { |
|||
# $1 Command |
|||
_executeFunctionForAll "_runSingleExecCommand \"${1}\"" "docker exec $1" "${CONTAINERS_TYPES[@]}" "#DOCKERSERVNAME#" |
|||
} |
|||
|
|||
|
|||
|
|||
########## Main ################# |
|||
for ARG in "$@"; do |
|||
if [ -n "${GETOCCCOMAND}" ]; then # après un -occ |
|||
OCCCOMANDS+=("${ARG}") |
|||
GETOCCCOMAND= |
|||
elif [ -n "${GETEXECCOMAND}" ]; then # après un -exec |
|||
EXECCOMANDS+=("${ARG}") |
|||
GETEXECCOMAND= |
|||
elif [ -n "${GETAPPS}" ]; then # après un -a |
|||
LISTE_APPS="${LISTE_APPS} ${ARG}" |
|||
GETAPPS="" |
|||
elif [ -n "${GETMMCTLCOMAND}" ]; then # après un -mmctl |
|||
MMCTLCOMANDS+=("${ARG}") |
|||
GETMMCTLCOMAND= |
|||
elif [ -n "${GETTEAM}" ]; then # après un --post |
|||
GETMESSAGE="now" |
|||
GETTEAM="" |
|||
TEAM="${ARG}" |
|||
elif [ -n "${GETMESSAGE}" ]; then # après un --post "team:channel" |
|||
if [[ $TEAM == "-*" && ${#TEAM} -le 5 ]]; then echo "J'envoie mon message à \"${TEAM}\" ?? Arf, ça me plait pas j'ai l'impression que tu t'es planté sur la commande."; usage ; exit 1 ; fi |
|||
if [[ $ARG == "-*" && ${#ARG} -le 5 ]]; then echo "J'envoie le message \"${ARG}\" ?? Arf, ça me plait pas j'ai l'impression que tu t'es planté sur la commande."; usage ; exit 1 ; fi |
|||
if [[ ! $TEAM =~ .*:.+ ]]; then echo "Il faut mettre un destinataire sous la forme team:channel. Recommence !"; usage ; exit 1 ; fi |
|||
Posts+=( ["${TEAM}"]="$ARG" ) |
|||
GETMESSAGE="" |
|||
TEAM="" |
|||
else |
|||
case "${ARG}" in |
|||
'-h' | '--help' ) |
|||
usage && exit ;; |
|||
'-n' | '--simu') |
|||
SIMU="echo" ;; |
|||
'-q' ) |
|||
QUIET="/dev/null" ;; |
|||
'-m' | '--main' ) |
|||
OPERATE_ON_MAIN="OUI-OUI" ;; |
|||
'-M' ) |
|||
AVAILABLE_ORGAS= && OPERATE_ON_MAIN="OUI-OUI" ;; #pas d'orgas |
|||
'--nas' | '-nas' ) |
|||
OPERATE_LOCAL_ORGA= ;; # pas les locales |
|||
'--local' | '-local' ) |
|||
OPERATE_ON_NAS_ORGA= ;; # pas celles sur NAS |
|||
'-cloud'|'--cloud') |
|||
CONTAINERS_TYPES="${CONTAINERS_TYPES} cloud" ;; |
|||
'-agora'|'--agora') |
|||
CONTAINERS_TYPES="${CONTAINERS_TYPES} agora" ;; |
|||
'-wiki'|'--wiki') |
|||
CONTAINERS_TYPES="${CONTAINERS_TYPES} wiki" ;; |
|||
'-wp'|'--wp') |
|||
CONTAINERS_TYPES="${CONTAINERS_TYPES} wp" ;; |
|||
'-office'|'--office') |
|||
CONTAINERS_TYPES="${CONTAINERS_TYPES} office" ;; |
|||
'-t' ) |
|||
COMMANDS="${COMMANDS} RESTART-COMPOSE" ;; |
|||
'-r' ) |
|||
COMMANDS="${COMMANDS} RESTART-DOCKER" ;; |
|||
'-l' | '--list' ) |
|||
COMMANDS="$(echo "${COMMANDS} LIST" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-v' | '--version') |
|||
COMMANDS="$(echo "${COMMANDS} VERSION" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-I' | '--install' ) |
|||
COMMANDS="$(echo "${COMMANDS} INIT" | sed "s/\s/\n/g" | sort | uniq)" ;; # le sed sort uniq, c'est pour pas l'avoir en double |
|||
'-U' | '--upgrade') |
|||
COMMANDS="$(echo "${COMMANDS} UPGRADE" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'--optim' ) |
|||
COMMANDS="$(echo "${COMMANDS} OPTIMISE-CLOUD" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-u' ) |
|||
COMMANDS="$(echo "${COMMANDS} UPDATE-CLOUD-APP" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-i' ) |
|||
COMMANDS="$(echo "${COMMANDS} INSTALL-CLOUD-APP" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-a' ) |
|||
GETAPPS="now" ;; |
|||
'-occ' ) |
|||
COMMANDS="$(echo "${COMMANDS} RUN-CLOUD-OCC" | sed "s/\s/\n/g" | sort | uniq)" |
|||
GETOCCCOMAND="now" ;; |
|||
'-mmctl' ) |
|||
COMMANDS="$(echo "${COMMANDS} RUN-AGORA-MMCTL" | sed "s/\s/\n/g" | sort | uniq)" |
|||
GETMMCTLCOMAND="now" ;; |
|||
'-exec' ) |
|||
COMMANDS="$(echo "${COMMANDS} RUN-DOCKER-EXEC" | sed "s/\s/\n/g" | sort | uniq)" |
|||
GETEXECCOMAND="now" ;; |
|||
'-p' | '--post' ) |
|||
COMMANDS="$(echo "${COMMANDS} POST-AGORA" | sed "s/\s/\n/g" | sort | uniq)" |
|||
GETTEAM="now" ;; |
|||
'-*' ) # ignore |
|||
;; |
|||
*) |
|||
GIVEN_ORGA="${GIVEN_ORGA} ${ARG%-orga}" |
|||
;; |
|||
esac |
|||
fi |
|||
done |
|||
|
|||
|
|||
if [[ "${COMMANDS[*]}" =~ "RESTART-COMPOSE" && "${COMMANDS[*]}" =~ "RESTART-TYPE" ]]; then |
|||
echo "Je restarte via docker-compose ou via docker mais pas les deux !" |
|||
usage |
|||
exit 1 |
|||
fi |
|||
if [ -z "${COMMANDS}" ]; then |
|||
usage && exit |
|||
fi |
|||
if [ -n "${GIVEN_ORGA}" ]; then |
|||
# intersection des 2 listes : quelle commande de ouf !! |
|||
AVAILABLE_ORGAS=$(comm -12 <(printf '%s\n' ${AVAILABLE_ORGAS} | sort) <(printf '%s\n' ${GIVEN_ORGA} | sort)) |
|||
fi |
|||
|
|||
NB_ORGAS=$(echo "${AVAILABLE_ORGAS}" | wc -w ) |
|||
|
|||
if [[ $NB_ORGAS = 0 && -z "${OPERATE_ON_MAIN}" ]]; then |
|||
echo "Aucune orga trouvée." |
|||
exit 1 |
|||
fi |
|||
|
|||
NB_ORGAS_STR="$NB_ORGAS orgas" |
|||
[ -n "${OPERATE_ON_MAIN}" ] && NB_ORGAS_STR="$NB_ORGAS_STR + les communs" |
|||
|
|||
_populate_lists # on récupère les clouds / agora / wiki / wp correspondants aux orga |
|||
|
|||
if [[ $NB_ORGAS -gt 2 && "${COMMANDS[*]}" =~ 'INIT' ]]; then |
|||
ETLECLOUDCOMMUN= |
|||
[ -n "${OPERATE_ON_MAIN}" ] && ETLECLOUDCOMMUN=" ainsi que les containers commun" |
|||
echo "On s'apprête à initialiser les ${CONTAINERS_TYPES} suivants : ${AVAILABLE_ORGAS}${ETLECLOUDCOMMUN}" |
|||
checkContinue |
|||
fi |
|||
|
|||
for COMMAND in ${COMMANDS}; do |
|||
case "${COMMAND}" in |
|||
'LIST' ) |
|||
listContainers && exit ;; |
|||
'VERSION' ) |
|||
version && exit ;; |
|||
'OPTIMISE-CLOUD' ) |
|||
OptimiseClouds ;; |
|||
'RESTART-COMPOSE' ) |
|||
restart-compose ;; |
|||
'RESTART-DOCKER' ) |
|||
restart ;; |
|||
'UPDATE-CLOUD-APP' ) |
|||
UpdateApplis ;; |
|||
'UPGRADE' ) |
|||
UpgradeClouds ;; |
|||
'INIT' ) |
|||
Init ;; |
|||
'INSTALL-CLOUD-APP' ) |
|||
InstallApps ;; |
|||
'RUN-CLOUD-OCC' ) |
|||
RunCommands "OCC" "${OCCCOMANDS[@]}" ;; |
|||
'RUN-AGORA-MMCTL' ) |
|||
RunCommands "MMCTL" "${MMCTLCOMANDS[@]}" ;; |
|||
'RUN-DOCKER-EXEC' ) |
|||
RunCommands "EXEC" "${EXECCOMANDS[@]}" ;; |
|||
'POST-AGORA' ) |
|||
PostMessages ${Posts} ;; |
|||
esac |
|||
done |
@ -1,96 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
|
|||
cd $(dirname $0) |
|||
. "${DOCKERS_ENV}" |
|||
|
|||
available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "service" "agora" 2>/dev/null) |
|||
usage () { |
|||
echo "Usage: $0 orga${NL}" \ |
|||
" -h : this help${NL}" \ |
|||
" -n : simulation${NL}" \ |
|||
" [orga] : in${NL}" \ |
|||
" ${CYAN}${available_orga}${NC}${NL}" |
|||
exit 1 |
|||
} |
|||
|
|||
SIMU= |
|||
for ARG in $*; do |
|||
case "$1" in |
|||
-h*) usage ;; |
|||
-n) SIMU=echo; shift ;; |
|||
*) break;; |
|||
esac |
|||
done |
|||
|
|||
. ${KAZ_KEY_DIR}/SetAllPass.sh |
|||
|
|||
case "$#" in |
|||
0) |
|||
# shared |
|||
ORGA="Kaz" |
|||
agoraName="<common agora>" |
|||
|
|||
DockerServName="${mattermostServName}" |
|||
MATTER_URI="${matterHost}.${domain}" |
|||
MATTER_URL="${httpProto}://${MATTER_URI}" |
|||
VOL_PREFIX="${DOCK_VOL}/mattermost_" |
|||
;; |
|||
1) |
|||
# orga |
|||
[[ " ${available_orga} " =~ "$1" ]] || usage |
|||
ORGA=${1%-orga} |
|||
agoraName="${ORGA}" |
|||
|
|||
DockerServName="${ORGA}-${mattermostServName}" |
|||
MATTER_URI="${ORGA}-${matterHost}.${domain}" |
|||
MATTER_URL="${httpProto}://${MATTER_URI}" |
|||
VOL_PREFIX="${VOL_DIR}/orga_${ORGA}-" |
|||
;; |
|||
*) |
|||
usage |
|||
;; |
|||
esac |
|||
|
|||
JSON_CONF="${VOL_PREFIX}matterConfig/_data/config.json" |
|||
sed -i \ |
|||
-e 's|"SiteURL": ".*"|"SiteURL": "'${MATTER_URL}'"|g' \ |
|||
-e 's|"ListenAddress": ".*"|"ListenAddress": ":'${matterPort}'"|g' \ |
|||
-e 's|"WebsocketURL": ".*"|"WebsocketURL": "wss://'${MATTER_URI}'"|g' \ |
|||
-e 's|"AllowCorsFrom": ".*"|"AllowCorsFrom": "'${domain}' '${MATTER_URI}':443 '${MATTER_URI}'"|g' \ |
|||
-e 's|"ConsoleLevel": ".*"|"ConsoleLevel": "ERROR"|g' \ |
|||
-e 's|"SendEmailNotifications": false|"SendEmailNotifications": true|g' \ |
|||
-e 's|"FeedbackEmail": ".*"|"FeedbackEmail": "admin@'${domain}'"|g' \ |
|||
-e 's|"FeedbackOrganization": ".*"|"FeedbackOrganization": "Cochez la KAZ du libre !"|g' \ |
|||
-e 's|"ReplyToAddress": ".*"|"ReplyToAddress": "admin@'${domain}'"|g' \ |
|||
-e 's|"SMTPServer": ".*"|"SMTPServer": "mail.'${domain}'"|g' \ |
|||
-e 's|"SMTPPort": ".*"|"SMTPPort": "25"|g' \ |
|||
-e 's|"DefaultServerLocale": ".*"|"DefaultServerLocale": "fr"|g' \ |
|||
-e 's|"DefaultClientLocale": ".*"|"DefaultClientLocale": "fr"|g' \ |
|||
-e 's|"AvailableLocales": ".*"|"AvailableLocales": "fr"|g' \ |
|||
${JSON_CONF} |
|||
|
|||
# on redémarre pour prendre en compte (changement de port) |
|||
docker restart "${DockerServName}" |
|||
#checkDockerRunning "${DockerServName}" "${agoraName}" || exit |
|||
|
|||
getToken(){ |
|||
curl -i -s -d "{\"login_id\":\"${mattermost_MM_ADMIN_USER}\",\"password\":\"${mattermost_MM_ADMIN_PASSWORD}\"}" "${MATTER_URL}/api/v4/users/login" | grep 'token' | sed 's/token:\s*\(.*\)\s*/\1/' | tr -d '\r' |
|||
} |
|||
|
|||
waitUrl "${MATTER_URL}" |
|||
[ -z "$(getToken)" ] || exit |
|||
|
|||
printKazMsg "\n *** Premier lancement de Mattermost" |
|||
|
|||
curl -i -d "{\"email\":\"${mattermost_MM_ADMIN_EMAIL}\",\"username\":\"${mattermost_MM_ADMIN_USER}\",\"password\":\"${mattermost_MM_ADMIN_PASSWORD}\",\"allow_marketing\":true}" "${MATTER_URL}/api/v4/users" |
|||
|
|||
waitUrl "${MATTER_URL}" |
|||
MM_TOKEN=$(getToken) |
|||
|
|||
curl -i -H "Authorization: Bearer ${MM_TOKEN}" -d "{\"display_name\":\"${ORGA}\",\"name\":\"${ORGA,,}\",\"type\":\"O\"}" "${MATTER_URL}/api/v4/teams" |
|||
|
|||
|
@ -1,81 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
|
|||
cd $(dirname $0) |
|||
. "${DOCKERS_ENV}" |
|||
|
|||
available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "service" "cloud" 2>/dev/null) |
|||
usage () { |
|||
echo "Usage: $0 orga${NL}" \ |
|||
" -h : this help${NL}" \ |
|||
" -n : simulation${NL}" \ |
|||
" [orga] : in${NL}" \ |
|||
" ${CYAN}${available_orga}${NC}${NL}" |
|||
exit 1 |
|||
} |
|||
|
|||
SIMU= |
|||
for ARG in $*; do |
|||
case "$1" in |
|||
-h*) usage ;; |
|||
-n) SIMU=echo; shift ;; |
|||
*) break;; |
|||
esac |
|||
done |
|||
|
|||
. ${KAZ_KEY_DIR}/SetAllPass.sh |
|||
|
|||
DNLD_DIR="${KAZ_DNLD_DIR}/dokuwiki" |
|||
case "$#" in |
|||
0) |
|||
# shared |
|||
ORGA="Kaz" |
|||
cloudName="<common wiki>" |
|||
|
|||
CLOUD_URL="${httpProto}://${cloudHost}.${domain}" |
|||
DockerServName="${nextcloudServName}" |
|||
VOL_PREFIX="${DOCK_VOL}/cloud_" |
|||
;; |
|||
1) |
|||
# orga |
|||
[[ " ${available_orga} " =~ "$1" ]] || usage |
|||
ORGA=${1%-orga} |
|||
cloudName="${ORGA}" |
|||
|
|||
CLOUD_URL="${httpProto}://${ORGA}-${cloudHost}.${domain}" |
|||
DockerServName="${ORGA}-${nextcloudServName}" |
|||
VOL_PREFIX="${DOCK_VOL}/orga_${ORGA}-" |
|||
;; |
|||
*) |
|||
usage |
|||
;; |
|||
esac |
|||
|
|||
PHP_CONF="${VOL_PREFIX}cloudConfig/_data/config.php" |
|||
|
|||
checkDockerRunning "${DockerServName}" "${cloudName}" || exit |
|||
|
|||
if ! grep -q "'installed' => true," "${CONF_PHP}" 2> /dev/null; then |
|||
printKazMsg "\n *** Premier lancement de NextCloud de ${cloudName}" |
|||
|
|||
waitUrl "${CLOUD_URL}" |
|||
|
|||
${SIMU} curl -X POST \ |
|||
-d "install=true" \ |
|||
-d "adminlogin=${nextcloud_NEXTCLOUD_ADMIN_USER}" \ |
|||
-d "adminpass=${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}" \ |
|||
-d "directory=/var/www/html/data" \ |
|||
-d "dbtype=mysql" \ |
|||
-d "dbuser=${nextcloud_MYSQL_USER}" \ |
|||
-d "dbpass=${nextcloud_MYSQL_PASSWORD}" \ |
|||
-d "dbname=${nextcloud_MYSQL_DATABASE}" \ |
|||
-d "dbhost=${nextcloud_MYSQL_HOST}" \ |
|||
-d "install-recommended-apps=true" \ |
|||
"${CLOUD_URL}" |
|||
fi |
|||
|
|||
${SIMU} "${KAZ_ROOT}/bin/updateCloudConf.sh" $1 |
|||
${SIMU} "${KAZ_ROOT}/bin/updateCloudApp.sh" $1 |
@ -1,74 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
|
|||
cd $(dirname $0) |
|||
. "${DOCKERS_ENV}" |
|||
|
|||
available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "service" "wp" 2>/dev/null) |
|||
usage () { |
|||
echo "Usage: $0 orga${NL}" \ |
|||
" -h : this help${NL}" \ |
|||
" -n : simulation${NL}" \ |
|||
" [orga] : in${NL}" \ |
|||
" ${CYAN}${available_orga}${NC}${NL}" |
|||
exit 1 |
|||
} |
|||
|
|||
SIMU= |
|||
for ARG in $*; do |
|||
case "$1" in |
|||
-h*) usage ;; |
|||
-n) SIMU=echo; shift ;; |
|||
*) break;; |
|||
esac |
|||
done |
|||
|
|||
. ${KAZ_KEY_DIR}/SetAllPass.sh |
|||
|
|||
case "$#" in |
|||
0) |
|||
# shared |
|||
ORGA="Kaz" |
|||
wpName="<common WP>" |
|||
|
|||
DockerServName="${wordpressServName}" |
|||
WP_URL="${httpProto}://${wordpressHost}.${domain}" |
|||
VOL_PREFIX="${DOCK_VOL}/wordpress_" |
|||
;; |
|||
1) |
|||
# orga |
|||
[[ " ${available_orga} " =~ "$1" ]] || usage |
|||
ORGA=${1%-orga} |
|||
wpName="${ORGA}" |
|||
|
|||
DockerServName="${ORGA}-${wordpressServName}" |
|||
WP_URL="${httpProto}://${ORGA}-${wordpressHost}.${domain}" |
|||
VOL_PREFIX="${DOCK_VOL}/orga_${ORGA}-" |
|||
;; |
|||
*) |
|||
usage |
|||
;; |
|||
esac |
|||
|
|||
CONF_DIR="${VOL_PREFIX}wordpress/_data" |
|||
|
|||
checkDockerRunning "${DockerServName}" "${cloudName}" || exit |
|||
|
|||
# XXX trouver un test du genre if ! grep -q "'installed' => true," "${PHP_CONF}" 2> /dev/null; then |
|||
printKazMsg "\n *** Premier lancement de WP" |
|||
|
|||
waitUrl "${WP_URL}" |
|||
|
|||
${SIMU} curl -X POST \ |
|||
-d "user_name=${wp_WORDPRESS_ADMIN_USER}" \ |
|||
-d "admin_password=${wp_WORDPRESS_ADMIN_PASSWORD}" \ |
|||
-d "admin_password2=${wp_WORDPRESS_ADMIN_PASSWORD}" \ |
|||
-d "pw_weak=true" \ |
|||
-d "admin_email=admin@kaz.bzh" \ |
|||
-d "blog_public=0" \ |
|||
-d "language=fr_FR" \ |
|||
"${WP_URL}/wp-admin/install.php?step=2" |
|||
echo |
@ -1,118 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
|
|||
cd $(dirname $0) |
|||
. "${DOCKERS_ENV}" |
|||
|
|||
available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "service" "wiki" 2>/dev/null) |
|||
usage () { |
|||
echo "Usage: $0 orga${NL}" \ |
|||
" -h : this help${NL}" \ |
|||
" -n : simulation${NL}" \ |
|||
" [orga] : in${NL}" \ |
|||
" ${CYAN}${available_orga}${NC}${NL}" |
|||
exit 1 |
|||
} |
|||
|
|||
SIMU= |
|||
for ARG in $*; do |
|||
case "$1" in |
|||
-h*) usage ;; |
|||
-n) SIMU=echo; shift ;; |
|||
*) break;; |
|||
esac |
|||
done |
|||
|
|||
. ${KAZ_KEY_DIR}/SetAllPass.sh |
|||
|
|||
#wiki_ROOT="admin" |
|||
#wiki_PASSWORD="bojhypmihem7ortU" |
|||
|
|||
DNLD_DIR="${KAZ_DNLD_DIR}/dokuwiki" |
|||
case "$#" in |
|||
0) |
|||
# shared |
|||
ORGA="Kaz" |
|||
wikiName="<common wiki>" |
|||
|
|||
WIKI_TITLE=Kaz |
|||
WIKI_EMAIL="wiki@${domain}" |
|||
DockerServName="${dokuwikiServName}" |
|||
VOL_PREFIX="${DOCK_VOL}/dokuwiki_doku" |
|||
WIKI_URL="${httpProto}://${dokuwikiHost}.${domain}" |
|||
;; |
|||
1) |
|||
# orga |
|||
[[ " ${available_orga} " =~ "$1" ]] || usage |
|||
ORGA=${1%-orga} |
|||
wikiName="${ORGA}" |
|||
|
|||
WIKI_TITLE=${wikiName} |
|||
WIKI_EMAIL="wiki@${domain}" |
|||
DockerServName="${ORGA}-${dokuwikiServName}" |
|||
VOL_PREFIX="${DOCK_VOL}/orga_${ORGA}-" |
|||
WIKI_URL="${httpProto}://${ORGA}-${dokuwikiHost}.${domain}" |
|||
;; |
|||
*) |
|||
usage |
|||
;; |
|||
esac |
|||
|
|||
TPL_DIR="${VOL_PREFIX}wikiLibtpl/_data" |
|||
PLG_DIR="${VOL_PREFIX}wikiPlugins/_data" |
|||
CONF_DIR="${VOL_PREFIX}wikiConf/_data" |
|||
|
|||
checkDockerRunning "${DockerServName}" "${wikiName}}" || exit |
|||
cd "${KAZ_COMP_DIR}/dokuwiki/wiki-conf" |
|||
|
|||
if [ ! -f "${CONF_DIR}/local.php" ] ; then |
|||
printKazMsg "\n *** Premier lancement de Dokuwiki de ${wikiName}" |
|||
|
|||
waitUrl "${WIKI_URL}" |
|||
|
|||
# XXX test local |
|||
|
|||
${SIMU} curl -X POST \ |
|||
-A "Mozilla/5.0 (X11; Linux x86_64)" \ |
|||
-d "l=fr" \ |
|||
-d "d[title]=${WIKI_TITLE}" \ |
|||
-d "d[acl]=true" \ |
|||
-d "d[superuser]=${wiki_ROOT}" \ |
|||
-d "d[fullname]=Admin"\ |
|||
-d "d[email]=${WIKI_EMAIL}" \ |
|||
-d "d[password]=${wiki_PASSWORD}" \ |
|||
-d "d[confirm]=${wiki_PASSWORD}" \ |
|||
-d "d[policy]=1" \ |
|||
-d "d[allowreg]=false" \ |
|||
-d "d[license]=0" \ |
|||
-d "d[pop]=false" \ |
|||
-d "submit=Enregistrer" \ |
|||
"${WIKI_URL}/install.php" |
|||
|
|||
# XXX initialiser admin:<pass>:admin:<mel>:admin,user |
|||
#${SIMU} rsync -auHAX local.php users.auth.php acl.auth.php "${CONF_DIR}/" |
|||
|
|||
${SIMU} sed -i "${CONF_DIR}/local.php" \ |
|||
-e "s|\(.*conf\['title'\].*=.*'\).*';|\1${ORGA}';|g" \ |
|||
-e "s|\(.*conf\['title'\].*=.*'\).*';|\1${ORGA}';|g" \ |
|||
-e "/conf\['template'\]/d" \ |
|||
-e '$a\'"\$conf['template'] = 'docnavwiki';"'' |
|||
|
|||
${SIMU} sed -i -e "s|\(.*conf\['lang'\].*=.*'\)en';|\1fr';|g" "${CONF_DIR}/dokuwiki.php" |
|||
|
|||
${SIMU} chown -R www-data: "${CONF_DIR}/" |
|||
fi |
|||
|
|||
${SIMU} unzipInDir "${DNLD_DIR}/docnavwiki.zip" "${TPL_DIR}/" |
|||
${SIMU} cp logo.png favicon.ico "${TPL_DIR}/docnavwiki/images/" |
|||
${SIMU} chown -R www-data: "${TPL_DIR}/" |
|||
|
|||
# ckgedit : bof |
|||
for plugin in captcha smtp todo wrap wrapadd; do |
|||
${SIMU} unzipInDir "${DNLD_DIR}/${plugin}.zip" "${PLG_DIR}" |
|||
done |
|||
${SIMU} chown -R www-data: "${PLG_DIR}/" |
|||
|
@ -0,0 +1,180 @@ |
|||
#!/bin/bash |
|||
# Script de manipulation d'un mattermost' |
|||
# init /versions / restart ... |
|||
# |
|||
|
|||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd) |
|||
. $KAZ_ROOT/bin/.commonFunctions.sh |
|||
setKazVars |
|||
. $DOCKERS_ENV |
|||
. $KAZ_ROOT/secret/SetAllPass.sh |
|||
|
|||
#GLOBAL VARS |
|||
PRG=$(basename $0) |
|||
|
|||
availableOrga=($(getList "${KAZ_CONF_DIR}/container-orga.list")) |
|||
AVAILABLE_ORGAS=${availableOrga[*]//-orga/} |
|||
|
|||
QUIET="1" |
|||
ONNAS= |
|||
|
|||
AGORACOMMUN="OUI_PAR_DEFAUT" |
|||
DockerServName=${mattermostServName} |
|||
|
|||
declare -A Posts |
|||
|
|||
usage() { |
|||
echo "${PRG} [OPTION] [COMMANDES] [ORGA] |
|||
Manipulation d'un mattermost |
|||
|
|||
OPTIONS |
|||
-h|--help Cette aide :-) |
|||
-n|--simu SIMULATION |
|||
-q|--quiet On ne parle pas (utile avec le -n pour avoir que les commandes) |
|||
--nas L'orga se trouve sur le NAS ! |
|||
|
|||
COMMANDES (on peut en mettre plusieurs dans l'ordre souhaité) |
|||
-I|--install L'initialisation du mattermost |
|||
-v|--version Donne la version du mattermost et signale les MàJ |
|||
|
|||
|
|||
-mmctl \"command\" Envoie une commande via mmctl ** SPECIFIQUES ** |
|||
-p|--post \"team\" \"message\" Poste un message dans une team agora ** AGORA ** |
|||
|
|||
ORGA parmi : ${AVAILABLE_ORGAS} |
|||
ou vide si mattermost commun |
|||
" |
|||
} |
|||
|
|||
|
|||
Init(){ |
|||
NOM=$ORGA |
|||
if [ -n "$AGORACOMMUN" ] ; then NOM="KAZ" ; fi |
|||
CONF_FILE="${DOCK_VOL}/orga_${ORGA}-matterConfig/_data/config.json" |
|||
if [ -n "${AGORACOMMUN}" ]; then |
|||
CONF_FILE="${DOCK_VOL}/mattermost_matterConfig/_data/config.json" |
|||
elif [ -n "${ONNAS}" ]; then |
|||
CONF_FILE="${NAS_VOL}/orga_${ORGA}-matterConfig/_data/config.json" |
|||
fi |
|||
|
|||
|
|||
${SIMU} sed -i \ |
|||
-e 's|"SiteURL": ".*"|"SiteURL": "'${MATTER_URL}'"|g' \ |
|||
-e 's|"ListenAddress": ".*"|"ListenAddress": ":'${matterPort}'"|g' \ |
|||
-e 's|"WebsocketURL": ".*"|"WebsocketURL": "wss://'${MATTER_URI}'"|g' \ |
|||
-e 's|"AllowCorsFrom": ".*"|"AllowCorsFrom": "'${domain}' '${MATTER_URI}':443 '${MATTER_URI}'"|g' \ |
|||
-e 's|"ConsoleLevel": ".*"|"ConsoleLevel": "ERROR"|g' \ |
|||
-e 's|"SendEmailNotifications": false|"SendEmailNotifications": true|g' \ |
|||
-e 's|"FeedbackEmail": ".*"|"FeedbackEmail": "admin@'${domain}'"|g' \ |
|||
-e 's|"FeedbackOrganization": ".*"|"FeedbackOrganization": "Cochez la KAZ du libre !"|g' \ |
|||
-e 's|"ReplyToAddress": ".*"|"ReplyToAddress": "admin@'${domain}'"|g' \ |
|||
-e 's|"SMTPServer": ".*"|"SMTPServer": "mail.'${domain}'"|g' \ |
|||
-e 's|"SMTPPort": ".*"|"SMTPPort": "25"|g' \ |
|||
-e 's|"DefaultServerLocale": ".*"|"DefaultServerLocale": "fr"|g' \ |
|||
-e 's|"DefaultClientLocale": ".*"|"DefaultClientLocale": "fr"|g' \ |
|||
-e 's|"AvailableLocales": ".*"|"AvailableLocales": "fr"|g' \ |
|||
${CONF_FILE} |
|||
|
|||
# on redémarre pour prendre en compte (changement de port) |
|||
${SIMU} docker restart "${DockerServName}" |
|||
[ $? -ne 0 ] && printKazError "$DockerServName est down : impossible de terminer l'install" && return 1 >& $QUIET |
|||
|
|||
${SIMU} waitUrl "$MATTER_URL" 300 |
|||
[ $? -ne 0 ] && printKazError "$DockerServName ne parvient pas à démarrer correctement : impossible de terminer l'install" && return 1 >& $QUIET |
|||
|
|||
# creation compte admin |
|||
${SIMU} curl -i -d "{\"email\":\"${mattermost_MM_ADMIN_EMAIL}\",\"username\":\"${mattermost_MM_ADMIN_USER}\",\"password\":\"${mattermost_MM_ADMIN_PASSWORD}\",\"allow_marketing\":true}" "${MATTER_URL}/api/v4/users" |
|||
|
|||
MM_TOKEN=$(_getMMToken ${MATTER_URL}) |
|||
|
|||
#on crée la team |
|||
${SIMU} curl -i -H "Authorization: Bearer ${MM_TOKEN}" -d "{\"display_name\":\"${NOM}\",\"name\":\"${NOM,,}\",\"type\":\"O\"}" "${MATTER_URL}/api/v4/teams" |
|||
} |
|||
|
|||
Version(){ |
|||
VERSION=$(docker exec "$DockerServName" bin/mmctl version | grep -i version:) |
|||
echo "Version $DockerServName : ${GREEN}${VERSION}${NC}" |
|||
} |
|||
|
|||
_getMMToken(){ |
|||
#$1 MATTER_URL |
|||
${SIMU} curl -i -s -d "{\"login_id\":\"${mattermost_MM_ADMIN_USER}\",\"password\":\"${mattermost_MM_ADMIN_PASSWORD}\"}" "${1}/api/v4/users/login" | grep 'token' | sed 's/token:\s*\(.*\)\s*/\1/' | tr -d '\r' |
|||
} |
|||
|
|||
PostMessage(){ |
|||
printKazMsg "Envoi à $TEAM : $MESSAGE" >& $QUIET |
|||
|
|||
${SIMU} docker exec -ti "${DockerServName}" bin/mmctl auth login "${MATTER_URL}" --name local-server --username ${mattermost_MM_ADMIN_USER} --password ${mattermost_MM_ADMIN_PASSWORD} |
|||
${SIMU} docker exec -ti "${DockerServName}" bin/mmctl post create "${TEAM}" --message "${MESSAGE}" |
|||
} |
|||
|
|||
MmctlCommand(){ |
|||
# $1 command |
|||
${SIMU} docker exec -u 33 "$DockerServName" bin/mmctl $1 |
|||
} |
|||
|
|||
|
|||
########## Main ################# |
|||
for ARG in "$@"; do |
|||
if [ -n "${GETMMCTLCOMAND}" ]; then # après un -mmctl |
|||
MMCTLCOMAND="${ARG}" |
|||
GETMMCTLCOMAND= |
|||
elif [ -n "${GETTEAM}" ]; then # après un --post |
|||
GETMESSAGE="now" |
|||
GETTEAM="" |
|||
TEAM="${ARG}" |
|||
elif [ -n "${GETMESSAGE}" ]; then # après un --post "team:channel" |
|||
if [[ $TEAM == "-*" && ${#TEAM} -le 5 ]]; then echo "J'envoie mon message à \"${TEAM}\" ?? Arf, ça me plait pas j'ai l'impression que tu t'es planté sur la commande."; usage ; exit 1 ; fi |
|||
if [[ $ARG == "-*" && ${#ARG} -le 5 ]]; then echo "J'envoie le message \"${ARG}\" ?? Arf, ça me plait pas j'ai l'impression que tu t'es planté sur la commande."; usage ; exit 1 ; fi |
|||
if [[ ! $TEAM =~ .*:.+ ]]; then echo "Il faut mettre un destinataire sous la forme team:channel. Recommence !"; usage ; exit 1 ; fi |
|||
MESSAGE="$ARG" |
|||
GETMESSAGE="" |
|||
else |
|||
case "${ARG}" in |
|||
'-h' | '--help' ) |
|||
usage && exit ;; |
|||
'-n' | '--simu') |
|||
SIMU="echo" ;; |
|||
'-q' ) |
|||
QUIET="/dev/null" ;; |
|||
'--nas' | '-nas' ) |
|||
ONNAS="SURNAS" ;; |
|||
'-v' | '--version') |
|||
COMMANDS="$(echo "${COMMANDS} VERSION" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-I' | '--install' ) |
|||
COMMANDS="$(echo "${COMMANDS} INIT" | sed "s/\s/\n/g" | sort | uniq)" ;; # le sed sort uniq, c'est pour pas l'avoir en double |
|||
'--mmctl' | '-mmctl' ) |
|||
COMMANDS="$(echo "${COMMANDS} RUN-AGORA-MMCTL" | sed "s/\s/\n/g" | sort | uniq)" |
|||
GETMMCTLCOMAND="now" ;; |
|||
'-p' | '--post' ) |
|||
COMMANDS="$(echo "${COMMANDS} POST-AGORA" | sed "s/\s/\n/g" | sort | uniq)" |
|||
GETTEAM="now" ;; |
|||
'-*' ) # ignore |
|||
;; |
|||
*) |
|||
ORGA="${ARG%-orga}" |
|||
DockerServName="${ORGA}-${mattermostServName}" |
|||
AGORACOMMUN= |
|||
;; |
|||
esac |
|||
fi |
|||
done |
|||
|
|||
if [ -z "${COMMANDS}" ]; then usage && exit ; fi |
|||
|
|||
MATTER_URI="${ORGA}-${matterHost}.${domain}" |
|||
if [ -n "$AGORACOMMUN" ]; then MATTER_URI="${matterHost}.${domain}" ; fi |
|||
MATTER_URL="${httpProto}://${MATTER_URI}" |
|||
|
|||
for COMMAND in ${COMMANDS}; do |
|||
case "${COMMAND}" in |
|||
'VERSION' ) |
|||
Version && exit ;; |
|||
'INIT' ) |
|||
Init ;; |
|||
'RUN-AGORA-MMCTL' ) |
|||
MmctlCommand "$MMCTLCOMAND" ;; |
|||
'POST-AGORA' ) |
|||
PostMessage ;; |
|||
esac |
|||
done |
@ -0,0 +1,382 @@ |
|||
#!/bin/bash |
|||
# Script de manipulation d'un cloud' |
|||
# init /versions / restart ... |
|||
# |
|||
|
|||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd) |
|||
. $KAZ_ROOT/bin/.commonFunctions.sh |
|||
setKazVars |
|||
. $DOCKERS_ENV |
|||
. $KAZ_ROOT/secret/SetAllPass.sh |
|||
|
|||
#GLOBAL VARS |
|||
PRG=$(basename $0) |
|||
|
|||
availableOrga=($(getList "${KAZ_CONF_DIR}/container-orga.list")) |
|||
AVAILABLE_ORGAS=${availableOrga[*]//-orga/} |
|||
|
|||
# CLOUD |
|||
APPLIS_PAR_DEFAUT="tasks calendar contacts bookmarks mail richdocuments external drawio snappymail ransomware_protection" #rainloop richdocumentscode |
|||
QUIET="1" |
|||
ONNAS= |
|||
|
|||
CLOUDCOMMUN="OUI_PAR_DEFAUT" |
|||
DockerServName=${nextcloudServName} |
|||
|
|||
usage() { |
|||
echo "${PRG} [OPTION] [COMMANDES] [ORGA] |
|||
Manipulation d'un cloud |
|||
|
|||
OPTIONS |
|||
-h|--help Cette aide :-) |
|||
-n|--simu SIMULATION |
|||
-q|--quiet On ne parle pas (utile avec le -n pour avoir que les commandes) |
|||
--nas L'orga se trouve sur le NAS ! |
|||
|
|||
COMMANDES (on peut en mettre plusieurs dans l'ordre souhaité) |
|||
-I|--install L'initialisation du cloud |
|||
-v|--version Donne la version du cloud et signale les MàJ |
|||
|
|||
--optim Lance la procédure Nextcloud pour optimiser les performances ** ** |
|||
-occ \"command\" Envoie une commande via occ ** ** |
|||
-u Mets à jour les applis ** SPECIFIQUES ** |
|||
-i Install des applis ** CLOUD ** |
|||
-a \"app1 app2 ...\" Choix des appli à installer ou mettre à jour (entre guillemets) ** ** |
|||
-U|--upgrade Upgrade des clouds ** ** |
|||
|
|||
ORGA parmi : ${AVAILABLE_ORGAS} |
|||
ou vide si cloud commun |
|||
" |
|||
} |
|||
|
|||
|
|||
################################## |
|||
############### CLOUD ############ |
|||
################################## |
|||
|
|||
Init(){ |
|||
NOM=$ORGA |
|||
[ -n "${CLOUDCOMMUN}" ] && NOM="commun" |
|||
if [ -z "${LISTE_APPS}" ]; then |
|||
printKazMsg "Aucune appli n'est précisée, j'installerais les applis par défaut : ${APPLIS_PAR_DEFAUT}" >& $QUIET |
|||
LISTE_APPS="${APPLIS_PAR_DEFAUT}" |
|||
fi |
|||
|
|||
checkDockerRunning "$DockerServName" "$NOM" |
|||
[ $? -ne 0 ] && echo "${CYAN}\n $DockerServName est down : impossible de terminer l'install${NC}" && return 1 >& $QUIET |
|||
|
|||
CONF_FILE="${DOCK_VOL}/orga_${ORGA}-cloudConfig/_data/config.php" |
|||
OFFICE_URL="https://${ORGA}-${officeHost}.${domain}" |
|||
CLOUD_URL="https://${ORGA}-${cloudHost}.${domain}" |
|||
if [ -n "$CLOUDCOMMUN" ]; then |
|||
CONF_FILE="${DOCK_VOL}/cloud-cloudConfig/_data/config.php" |
|||
OFFICE_URL="https://${officeHost}.${domain}" |
|||
CLOUD_URL="https://${cloudHost}.${domain}" |
|||
elif [ -n "${ONNAS}" ]; then |
|||
CONF_FILE="${NAS_VOL}/orga_${ORGA}-cloudConfig/_data/config.php" |
|||
fi |
|||
|
|||
firstInstall "$CLOUD_URL" "$CONF_FILE" " NextCloud de $NOM" |
|||
updatePhpConf "$CONF_FILE" |
|||
InstallApplis |
|||
echo "${CYAN} *** Paramétrage richdocuments pour $ORGA${NC}" >& $QUIET |
|||
occCommand "config:app:set --value $OFFICE_URL richdocuments public_wopi_url" |
|||
occCommand "config:app:set --value $OFFICE_URL richdocuments wopi_url" |
|||
occCommand "config:app:set --value $OFFICE_URL richdocuments disable_certificate_verification" |
|||
occCommand "config:app:set --value 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 richdocuments wopi_allowlist" |
|||
occCommand "config:system:set overwrite.cli.url --value=$CLOUD_URL" |
|||
occCommand "config:system:set disable_certificate_verification --value=true" |
|||
|
|||
if [ -n "$CLOUDCOMMUN" ]; then initLdap "$NOM" ; fi |
|||
} |
|||
|
|||
Version(){ |
|||
VERSION=$(docker exec -u 33 ${DockerServName} /var/www/html/occ status | grep -i version:) |
|||
VERSION_UPDATE=$(docker exec -u 33 ${DockerServName} /var/www/html/occ update:check | grep -i "available\." | cut -c 1-17) |
|||
versionSTR="Version ${DockerServName} : ${GREEN}${VERSION}${NC}" |
|||
[ -n "${VERSION_UPDATE}" ] && versionSTR="$versionSTR -- Disponible : ${RED} ${VERSION_UPDATE} ${NC}" |
|||
echo "$versionSTR" |
|||
} |
|||
|
|||
firstInstall(){ |
|||
# $1 CLOUD_URL |
|||
# $2 phpConfFile |
|||
# $3 orga |
|||
if ! grep -q "'installed' => true," "$2" 2> /dev/null; then |
|||
printKazMsg "\n *** Premier lancement de $3" >& $QUIET |
|||
|
|||
${SIMU} waitUrl "$1" |
|||
|
|||
${SIMU} curl -X POST \ |
|||
-d "install=true" \ |
|||
-d "adminlogin=${nextcloud_NEXTCLOUD_ADMIN_USER}" \ |
|||
-d "adminpass=${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}" \ |
|||
-d "directory=/var/www/html/data" \ |
|||
-d "dbtype=mysql" \ |
|||
-d "dbuser=${nextcloud_MYSQL_USER}" \ |
|||
-d "dbpass=${nextcloud_MYSQL_PASSWORD}" \ |
|||
-d "dbname=${nextcloud_MYSQL_DATABASE}" \ |
|||
-d "dbhost=${nextcloud_MYSQL_HOST}" \ |
|||
-d "install-recommended-apps=true" \ |
|||
"$1" |
|||
fi |
|||
} |
|||
|
|||
initLdap(){ |
|||
# $1 Nom du cloud |
|||
echo "${CYAN} *** Installation LDAP pour $1${NC}" >& $QUIET |
|||
occCommand "app:enable user_ldap" "${DockerServName}" |
|||
occCommand "ldap:delete-config s01" "${DockerServName}" |
|||
occCommand "ldap:create-empty-config" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapAgentName cn=cloud,ou=applications,${ldap_root}" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapAgentPassword ${ldap_LDAP_CLOUD_PASSWORD}" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapBase ${ldap_root}" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapBaseGroups ${ldap_root}" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapBaseUsers ou=users,${ldap_root}" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapExpertUsernameAttr identifiantKaz" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapHost ${ldapServName}" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapPort 389" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapTLS 0" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapLoginFilter \"(&(objectclass=nextcloudAccount)(|(cn=%uid)(identifiantKaz=%uid)))\"" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapQuotaAttribute nextcloudQuota" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapUserFilter \"(&(objectclass=nextcloudAccount)(nextcloudEnabled=TRUE))\"" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapUserFilterObjectclass nextcloudAccount" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapEmailAttribute mail" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapUserDisplayName cn" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapUserFilterMode 1" "${DockerServName}" |
|||
occCommand "ldap:set-config s01 ldapConfigurationActive 1" "${DockerServName}" |
|||
|
|||
# Dans le mariadb, pour permettre au ldap de reprendre la main : delete from oc_users where uid<>'admin'; |
|||
# docker exec -i nextcloudDB mysql --user=<user> --password=<password> <db> <<< "delete from oc_users where uid<>'admin';" |
|||
|
|||
# Doc : https://help.nextcloud.com/t/migration-to-ldap-keeping-users-and-data/13205 |
|||
|
|||
# Exemple de table/clés : |
|||
# +-------------------------------+----------------------------------------------------------+ |
|||
# | Configuration | s01 | |
|||
# +-------------------------------+----------------------------------------------------------+ |
|||
# | hasMemberOfFilterSupport | 0 | |
|||
# | homeFolderNamingRule | | |
|||
# | lastJpegPhotoLookup | 0 | |
|||
# | ldapAgentName | cn=cloud,ou=applications,dc=kaz,dc=sns | |
|||
# | ldapAgentPassword | *** | |
|||
# | ldapAttributesForGroupSearch | | |
|||
# | ldapAttributesForUserSearch | | |
|||
# | ldapBackgroundHost | | |
|||
# | ldapBackgroundPort | | |
|||
# | ldapBackupHost | | |
|||
# | ldapBackupPort | | |
|||
# | ldapBase | ou=users,dc=kaz,dc=sns | |
|||
# | ldapBaseGroups | ou=users,dc=kaz,dc=sns | |
|||
# | ldapBaseUsers | ou=users,dc=kaz,dc=sns | |
|||
# | ldapCacheTTL | 600 | |
|||
# | ldapConfigurationActive | 1 | |
|||
# | ldapConnectionTimeout | 15 | |
|||
# | ldapDefaultPPolicyDN | | |
|||
# | ldapDynamicGroupMemberURL | | |
|||
# | ldapEmailAttribute | mail | |
|||
# | ldapExperiencedAdmin | 0 | |
|||
# | ldapExpertUUIDGroupAttr | | |
|||
# | ldapExpertUUIDUserAttr | | |
|||
# | ldapExpertUsernameAttr | uid | |
|||
# | ldapExtStorageHomeAttribute | | |
|||
# | ldapGidNumber | gidNumber | |
|||
# | ldapGroupDisplayName | cn | |
|||
# | ldapGroupFilter | | |
|||
# | ldapGroupFilterGroups | | |
|||
# | ldapGroupFilterMode | 0 | |
|||
# | ldapGroupFilterObjectclass | | |
|||
# | ldapGroupMemberAssocAttr | | |
|||
# | ldapHost | ldap | |
|||
# | ldapIgnoreNamingRules | | |
|||
# | ldapLoginFilter | (&(|(objectclass=nextcloudAccount))(cn=%uid)) | |
|||
# | ldapLoginFilterAttributes | | |
|||
# | ldapLoginFilterEmail | 0 | |
|||
# | ldapLoginFilterMode | 0 | |
|||
# | ldapLoginFilterUsername | 1 | |
|||
# | ldapMatchingRuleInChainState | unknown | |
|||
# | ldapNestedGroups | 0 | |
|||
# | ldapOverrideMainServer | | |
|||
# | ldapPagingSize | 500 | |
|||
# | ldapPort | 389 | |
|||
# | ldapQuotaAttribute | nextcloudQuota | |
|||
# | ldapQuotaDefault | | |
|||
# | ldapTLS | 0 | |
|||
# | ldapUserAvatarRule | default | |
|||
# | ldapUserDisplayName | cn | |
|||
# | ldapUserDisplayName2 | | |
|||
# | ldapUserFilter | (&(objectclass=nextcloudAccount)(nextcloudEnabled=TRUE)) | |
|||
# | ldapUserFilterGroups | | |
|||
# | ldapUserFilterMode | 1 | |
|||
# | ldapUserFilterObjectclass | nextcloudAccount | |
|||
# | ldapUuidGroupAttribute | auto | |
|||
# | ldapUuidUserAttribute | auto | |
|||
# | turnOffCertCheck | 0 | |
|||
# | turnOnPasswordChange | 0 | |
|||
# | useMemberOfToDetectMembership | 1 | |
|||
# +-------------------------------+----------------------------------------------------------+ |
|||
} |
|||
|
|||
updatePhpConf(){ |
|||
# $1 php_conf_file |
|||
if [ $# -ne 1 ]; then |
|||
echo "${RED}#Je ne sais pas ou écrire la conf php !${NC}" |
|||
return 1 |
|||
fi |
|||
|
|||
echo "${CYAN} *** Maj de la conf $1${NC}" >& $QUIET |
|||
PHPCONF="$1" |
|||
_addVarAfterInConf "default_language" " 'default_language' => 'fr'," "CONFIG = array (" "${PHPCONF}" |
|||
_addVarAfterInConf "theme" " 'theme' => ''," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "default_phone_region" " 'default_phone_region' => 'FR'," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "loglevel" " 'loglevel' => 2," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "maintenance" " 'maintenance' => false," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "app_install_overwrite" " 'app_install_overwrite' => \n array (\n 0 => 'documents',\n )," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "overwriteprotocol" " 'overwriteprotocol' => 'https'," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "mail_domain" " 'mail_domain' => '${domain}'," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "mail_from_address" " 'mail_from_address' => 'admin'," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "mail_smtpport" " 'mail_smtpport' => '25'," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "mail_sendmailmode" " 'mail_sendmailmode' => 'smtp'," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "mail_smtphost" " 'mail_smtphost' => '${smtpHost}.${domain}'," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "mail_smtpmode" " 'mail_smtpmode' => 'smtp'," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "enable_previews" " 'enable_previews' => true," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "trashbin_retention_obligation" " 'trashbin_retention_obligation' => '30, auto'," "'installed' => true," "${PHPCONF}" |
|||
#pour supprimer le message "obtenir un compte gratuit" dans le footer |
|||
_addVarAfterInConf "simpleSignUpLink.shown" " 'simpleSignUpLink.shown' => false," "'installed' => true," "${PHPCONF}" |
|||
_addVarAfterInConf "trusted_proxies" " 'trusted_proxies' => array( 0 => '10.0.0.0/8', 1 => '172.16.0.0/12', 2 => '192.168.0.0/16' )," "'installed' => true," "${PHPCONF}" |
|||
} |
|||
|
|||
UpgradeClouds() { |
|||
echo "${NC}--------------------------------------------------------" >& $QUIET |
|||
echo "UPGRADE des cloud" >& $QUIET |
|||
echo "--------------------------------------------------------" >& $QUIET |
|||
occCommand "upgrade" |
|||
} |
|||
|
|||
OptimiseClouds() { |
|||
occCommand "db:add-missing-indices" "db:convert-filecache-bigint --no-interaction" |
|||
} |
|||
|
|||
|
|||
UpdateApplis() { |
|||
printKazMsg "UPDATE DES APPLIS du cloud ${DockerServName} : ${LISTE_APPS}" >& $QUIET |
|||
if [ -z "${LISTE_APPS}" ]; then |
|||
occCommand "app:update --all" |
|||
return |
|||
fi |
|||
echo "Mise à jour de ${LISTE_APPS}" >& $QUIET |
|||
for app in ${LISTE_APPS} |
|||
do |
|||
occCommand "app:update ${app}" |
|||
done |
|||
} |
|||
|
|||
InstallApplis(){ |
|||
if [ -z "${LISTE_APPS}" ]; then |
|||
printKazMsg "Aucune appli n'est précisée, j'installe les applis par défaut : ${APPLIS_PAR_DEFAUT}" >& $QUIET |
|||
LISTE_APPS="${APPLIS_PAR_DEFAUT}" |
|||
fi |
|||
apps=$LISTE_APPS |
|||
|
|||
if ! [[ "$(docker ps -f name=${DockerServName} | grep -w ${DockerServName})" ]]; then |
|||
printKazError "${RED}# ${DockerServName} not running... impossible d'installer les applis${NC}" >& $QUIET |
|||
return 1 |
|||
fi |
|||
LIST_ALL=$(docker exec -ti -u 33 "${DockerServName}" /var/www/html/occ app:list | |
|||
awk 'BEGIN {cp=0} |
|||
/Enabled:/ {cp=1 ; next}; |
|||
/Disabled:/ {cp=0; next}; |
|||
{if (cp) print $0};') |
|||
|
|||
for app in $apps |
|||
do |
|||
grep -wq "${app}" <<<"${LIST_ALL}" 2>/dev/null && echo "${app} dejà installée" >& $QUIET && continue |
|||
echo " install ${app}" >& $QUIET |
|||
occCommand "app:install ${app}" |
|||
done |
|||
} |
|||
|
|||
occCommand(){ |
|||
# $1 Command |
|||
${SIMU} docker exec -u 33 $DockerServName /var/www/html/occ $1 |
|||
} |
|||
|
|||
_addVarAfterInConf(){ |
|||
# $1 key |
|||
# $2 val |
|||
# $3 where |
|||
# $4 confFile |
|||
if ! grep -q "$1" "${4}" ; then |
|||
echo -n " ${CYAN}${BOLD}$1${NC}" >& $QUIET |
|||
${SIMU} sed -i -e "/$3/a\ $2" "$4" |
|||
fi |
|||
} |
|||
|
|||
########## Main ################# |
|||
for ARG in "$@"; do |
|||
if [ -n "${GETOCCCOMAND}" ]; then # après un -occ |
|||
OCCCOMAND="${ARG}" |
|||
GETOCCCOMAND= |
|||
elif [ -n "${GETAPPS}" ]; then # après un -a |
|||
LISTE_APPS="${LISTE_APPS} ${ARG}" |
|||
GETAPPS="" |
|||
else |
|||
case "${ARG}" in |
|||
'-h' | '--help' ) |
|||
usage && exit ;; |
|||
'-n' | '--simu') |
|||
SIMU="echo" ;; |
|||
'-q' ) |
|||
QUIET="/dev/null" ;; |
|||
'--nas' | '-nas' ) |
|||
ONNAS="SURNAS" ;; |
|||
'-v' | '--version') |
|||
COMMANDS="$(echo "${COMMANDS} VERSION" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-I' | '--install' ) |
|||
COMMANDS="$(echo "${COMMANDS} INIT" | sed "s/\s/\n/g" | sort | uniq)" ;; # le sed sort uniq, c'est pour pas l'avoir en double |
|||
'-U' | '--upgrade') |
|||
COMMANDS="$(echo "${COMMANDS} UPGRADE" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'--optim' | '-optim' ) |
|||
COMMANDS="$(echo "${COMMANDS} OPTIMISE-CLOUD" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-u' ) |
|||
COMMANDS="$(echo "${COMMANDS} UPDATE-CLOUD-APP" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-i' ) |
|||
COMMANDS="$(echo "${COMMANDS} INSTALL-CLOUD-APP" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-a' ) |
|||
GETAPPS="now" ;; |
|||
'--occ' | '-occ' ) |
|||
COMMANDS="$(echo "${COMMANDS} RUN-CLOUD-OCC" | sed "s/\s/\n/g" | sort | uniq)" |
|||
GETOCCCOMAND="now" ;; |
|||
'-*' ) # ignore |
|||
;; |
|||
*) |
|||
ORGA="${ARG%-orga}" |
|||
DockerServName="${ORGA}-${nextcloudServName}" |
|||
CLOUDCOMMUN= |
|||
;; |
|||
esac |
|||
fi |
|||
done |
|||
|
|||
if [ -z "${COMMANDS}" ]; then |
|||
usage && exit |
|||
fi |
|||
|
|||
for COMMAND in ${COMMANDS}; do |
|||
case "${COMMAND}" in |
|||
'VERSION' ) |
|||
Version && exit ;; |
|||
'OPTIMISE-CLOUD' ) |
|||
OptimiseClouds ;; |
|||
'UPDATE-CLOUD-APP' ) |
|||
UpdateApplis ;; |
|||
'UPGRADE' ) |
|||
UpgradeClouds ;; |
|||
'INIT' ) |
|||
Init ;; |
|||
'INSTALL-CLOUD-APP' ) |
|||
InstallApplis ;; |
|||
'RUN-CLOUD-OCC' ) |
|||
occCommand "${OCCCOMAND}";; |
|||
esac |
|||
done |
@ -0,0 +1,171 @@ |
|||
#!/bin/bash |
|||
# Script de manipulation d'un dokuwiki' |
|||
# init /versions / restart ... |
|||
# |
|||
|
|||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd) |
|||
. $KAZ_ROOT/bin/.commonFunctions.sh |
|||
setKazVars |
|||
. $DOCKERS_ENV |
|||
. $KAZ_ROOT/secret/SetAllPass.sh |
|||
|
|||
#GLOBAL VARS |
|||
PRG=$(basename $0) |
|||
|
|||
availableOrga=($(getList "${KAZ_CONF_DIR}/container-orga.list")) |
|||
AVAILABLE_ORGAS=${availableOrga[*]//-orga/} |
|||
DNLD_DIR="${KAZ_DNLD_DIR}/dokuwiki" |
|||
|
|||
QUIET="1" |
|||
ONNAS= |
|||
|
|||
WIKICOMMUN="OUI_PAR_DEFAUT" |
|||
DockerServName=${dokuwikiServName} |
|||
|
|||
declare -A Posts |
|||
|
|||
usage() { |
|||
echo "${PRG} [OPTION] [COMMANDES] [ORGA] |
|||
Manipulation d'un dokuwiki |
|||
|
|||
OPTIONS |
|||
-h|--help Cette aide :-) |
|||
-n|--simu SIMULATION |
|||
-q|--quiet On ne parle pas (utile avec le -n pour avoir que les commandes) |
|||
--nas L'orga se trouve sur le NAS ! |
|||
|
|||
COMMANDES (on peut en mettre plusieurs dans l'ordre souhaité) |
|||
-I|--install L'initialisation du dokuwiki |
|||
-v|--version Donne la version du dokuwiki et signale les MàJ |
|||
|
|||
--reload kill lighthttpd |
|||
|
|||
ORGA parmi : ${AVAILABLE_ORGAS} |
|||
ou vide si dokuwiki commun |
|||
" |
|||
} |
|||
|
|||
|
|||
|
|||
Init(){ |
|||
|
|||
NOM=$ORGA |
|||
if [ -n "$WIKICOMMUN" ] ; then NOM="KAZ" ; fi |
|||
TPL_DIR="${VOL_PREFIX}wikiLibtpl/_data" |
|||
PLG_DIR="${VOL_PREFIX}wikiPlugins/_data" |
|||
CONF_DIR="${VOL_PREFIX}wikiConf/_data" |
|||
|
|||
WIKI_ROOT="${dokuwiki_WIKI_ROOT}" |
|||
WIKI_EMAIL="${dokuwiki_WIKI_EMAIL}" |
|||
WIKI_PASS="${dokuwiki_WIKI_PASSWORD}" |
|||
|
|||
${SIMU} checkDockerRunning "${DockerServName}" "${NOM}" || exit |
|||
|
|||
if [ ! -f "${CONF_DIR}/local.php" ] ; then |
|||
echo "\n *** Premier lancement de Dokuwiki ${NOM}" >& $QUIET |
|||
|
|||
${SIMU} waitUrl "${WIKI_URL}" |
|||
|
|||
${SIMU} curl -X POST \ |
|||
-A "Mozilla/5.0 (X11; Linux x86_64)" \ |
|||
-d "l=fr" \ |
|||
-d "d[title]=${NOM}" \ |
|||
-d "d[acl]=true" \ |
|||
-d "d[superuser]=${WIKI_ROOT}" \ |
|||
-d "d[fullname]=Admin"\ |
|||
-d "d[email]=${WIKI_EMAIL}" \ |
|||
-d "d[password]=${WIKI_PASS}" \ |
|||
-d "d[confirm]=${WIKI_PASS}" \ |
|||
-d "d[policy]=1" \ |
|||
-d "d[allowreg]=false" \ |
|||
-d "d[license]=0" \ |
|||
-d "d[pop]=false" \ |
|||
-d "submit=Enregistrer" \ |
|||
"${WIKI_URL}/install.php" |
|||
|
|||
# XXX initialiser admin:<pass>:admin:<mel>:admin,user |
|||
#${SIMU} rsync -auHAX local.php users.auth.php acl.auth.php "${CONF_DIR}/" |
|||
|
|||
${SIMU} sed -i "${CONF_DIR}/local.php" \ |
|||
-e "s|\(.*conf\['title'\].*=.*'\).*';|\1${NOM}';|g" \ |
|||
-e "s|\(.*conf\['title'\].*=.*'\).*';|\1${NOM}';|g" \ |
|||
-e "/conf\['template'\]/d" \ |
|||
-e '$a\'"\$conf['template'] = 'docnavwiki';"'' |
|||
|
|||
${SIMU} sed -i -e "s|\(.*conf\['lang'\].*=.*'\)en';|\1fr';|g" "${CONF_DIR}/dokuwiki.php" |
|||
|
|||
${SIMU} chown -R www-data: "${CONF_DIR}/" |
|||
fi |
|||
|
|||
${SIMU} unzipInDir "${DNLD_DIR}/docnavwiki.zip" "${TPL_DIR}/" |
|||
${SIMU} chown -R www-data: "${TPL_DIR}/" |
|||
# ckgedit : bof |
|||
for plugin in captcha smtp todo wrap wrapadd; do |
|||
${SIMU} unzipInDir "${DNLD_DIR}/${plugin}.zip" "${PLG_DIR}" |
|||
done |
|||
${SIMU} chown -R www-data: "${PLG_DIR}/" |
|||
} |
|||
|
|||
Version(){ |
|||
# $1 ContainerName |
|||
VERSION=$(docker exec $1 cat /dokuwiki/VERSION) |
|||
echo "Version $1 : ${GREEN}${VERSION}${NC}" |
|||
} |
|||
|
|||
|
|||
Reload(){ |
|||
# $1 ContainerName |
|||
if [ -f "${VOL_PREFIX}wikiData/_data/farms/init.sh" ]; then |
|||
${SIMU} docker exec -ti "${1}" /dokuwiki/data/farms/init.sh |
|||
${SIMU} pkill -KILL lighttpd |
|||
fi |
|||
} |
|||
|
|||
########## Main ################# |
|||
for ARG in "$@"; do |
|||
case "${ARG}" in |
|||
'-h' | '--help' ) |
|||
usage && exit ;; |
|||
'-n' | '--simu') |
|||
SIMU="echo" ;; |
|||
'-q' ) |
|||
QUIET="/dev/null" ;; |
|||
'--nas' | '-nas' ) |
|||
ONNAS="SURNAS" ;; |
|||
'-v' | '--version') |
|||
COMMANDS="$(echo "${COMMANDS} VERSION" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'--reload' ) |
|||
COMMANDS="$(echo "${COMMANDS} RELOAD" | sed "s/\s/\n/g" | sort | uniq)" ;; # le sed sort uniq, c'est pour pas l'avoir en double |
|||
'-I' | '--install' ) |
|||
COMMANDS="$(echo "${COMMANDS} INIT" | sed "s/\s/\n/g" | sort | uniq)" ;; # le sed sort uniq, c'est pour pas l'avoir en double |
|||
'-*' ) # ignore |
|||
;; |
|||
*) |
|||
ORGA="${ARG%-orga}" |
|||
DockerServName="${ORGA}-${dokuwikiServName}" |
|||
WIKICOMMUN= |
|||
;; |
|||
esac |
|||
done |
|||
|
|||
if [ -z "${COMMANDS}" ]; then usage && exit ; fi |
|||
|
|||
VOL_PREFIX="${DOCK_VOL}/orga_${ORGA}-" |
|||
WIKI_URL="${httpProto}://${ORGA}-${dokuwikiHost}.${domain}" |
|||
if [ -n "${WIKICOMMUN}" ]; then |
|||
VOL_PREFIX="${DOCK_VOL}/dokuwiki_doku" |
|||
WIKI_URL="${httpProto}://${dokuwikiHost}.${domain}" |
|||
elif [ -n "${ONNAS}" ]; then |
|||
VOL_PREFIX="${NAS_VOL}/orga_${ORGA}-" |
|||
fi |
|||
|
|||
for COMMAND in ${COMMANDS}; do |
|||
case "${COMMAND}" in |
|||
'VERSION' ) |
|||
Version "${DockerServName}" && exit ;; |
|||
'INIT' ) |
|||
Init "${DockerServName}" ;; |
|||
'RELOAD' ) |
|||
Reload "${DockerServName}";; |
|||
esac |
|||
done |
@ -0,0 +1,130 @@ |
|||
#!/bin/bash |
|||
# Script de manipulation d'un wordpress' |
|||
# init /versions / restart ... |
|||
# |
|||
|
|||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd) |
|||
. $KAZ_ROOT/bin/.commonFunctions.sh |
|||
setKazVars |
|||
. $DOCKERS_ENV |
|||
. $KAZ_ROOT/secret/SetAllPass.sh |
|||
|
|||
#GLOBAL VARS |
|||
PRG=$(basename $0) |
|||
|
|||
availableOrga=($(getList "${KAZ_CONF_DIR}/container-orga.list")) |
|||
AVAILABLE_ORGAS=${availableOrga[*]//-orga/} |
|||
|
|||
QUIET="1" |
|||
ONNAS= |
|||
|
|||
WPCOMMUN="OUI_PAR_DEFAUT" |
|||
DockerServName=${wordpressServName} |
|||
|
|||
declare -A Posts |
|||
|
|||
usage() { |
|||
echo "${PRG} [OPTION] [COMMANDES] [ORGA] |
|||
Manipulation d'un wordpress |
|||
|
|||
OPTIONS |
|||
-h|--help Cette aide :-) |
|||
-n|--simu SIMULATION |
|||
-q|--quiet On ne parle pas (utile avec le -n pour avoir que les commandes) |
|||
--nas L'orga se trouve sur le NAS ! |
|||
|
|||
COMMANDES (on peut en mettre plusieurs dans l'ordre souhaité) |
|||
-I|--install L'initialisation du wordpress |
|||
-v|--version Donne la version du wordpress et signale les MàJ |
|||
|
|||
ORGA parmi : ${AVAILABLE_ORGAS} |
|||
ou vide si wordpress commun |
|||
" |
|||
} |
|||
|
|||
|
|||
|
|||
Init(){ |
|||
PHP_CONF="${DOCK_VOL}/orga_${ORGA}-wordpress/_data/wp-config.php" |
|||
WP_URL="${httpProto}://${ORGA}-${wordpressHost}.${domain}" |
|||
|
|||
if [ -n "${ONNAS}" ]; then |
|||
PHP_CONF="${NAS_VOL}/orga_${ORGA}-wordpress/_data/wp-config.php" |
|||
fi |
|||
|
|||
if ! [[ "$(docker ps -f name=${DockerServName} | grep -w ${DockerServName})" ]]; then |
|||
printKazError "Wordpress not running... abort" |
|||
exit |
|||
fi |
|||
|
|||
# XXX trouver un test du genre if ! grep -q "'installed' => true," "${PHP_CONF}" 2> /dev/null; then |
|||
echo "\n *** Premier lancement de WP" >& $QUIET |
|||
|
|||
${SIMU} waitUrl "${WP_URL}" |
|||
|
|||
${SIMU} curl -X POST \ |
|||
-d "user_name=${wp_WORDPRESS_ADMIN_USER}" \ |
|||
-d "admin_password=${wp_WORDPRESS_ADMIN_PASSWORD}" \ |
|||
-d "admin_password2=${wp_WORDPRESS_ADMIN_PASSWORD}" \ |
|||
-d "pw_weak=true" \ |
|||
-d "admin_email=admin@kaz.bzh" \ |
|||
-d "blog_public=0" \ |
|||
-d "language=fr_FR" \ |
|||
"${WP_URL}/wp-admin/install.php?step=2" |
|||
|
|||
#/* pour forcer les maj autrement qu'en ftp */ |
|||
_addVarBeforeInConf "FS_METHOD" "define('FS_METHOD', 'direct');" "\/\* That's all, stop editing! Happy publishing. \*\/" "$PHP_CONF" |
|||
} |
|||
|
|||
Version(){ |
|||
VERSION=$(docker exec $DockerServName cat /var/www/html/wp-includes/version.php | grep "wp_version " | sed -e "s/.*version\s*=\s*[\"\']//" | sed "s/[\"\'].*//") |
|||
echo "Version $DockerServName : ${GREEN}${VERSION}${NC}" |
|||
} |
|||
|
|||
|
|||
_addVarBeforeInConf(){ |
|||
# $1 key |
|||
# $2 ligne à ajouter avant la ligne |
|||
# $3 where |
|||
# $4 fichier de conf php |
|||
if ! grep -q "$1" "${4}" ; then |
|||
echo -n " ${CYAN}${BOLD}$1${NC}" >& $QUIET |
|||
${SIMU} sed -i -e "s/$3/$2\\n$3/" "${4}" |
|||
fi |
|||
} |
|||
|
|||
########## Main ################# |
|||
for ARG in "$@"; do |
|||
case "${ARG}" in |
|||
'-h' | '--help' ) |
|||
usage && exit ;; |
|||
'-n' | '--simu') |
|||
SIMU="echo" ;; |
|||
'-q' ) |
|||
QUIET="/dev/null" ;; |
|||
'--nas' | '-nas' ) |
|||
ONNAS="SURNAS" ;; |
|||
'-v' | '--version') |
|||
COMMANDS="$(echo "${COMMANDS} VERSION" | sed "s/\s/\n/g" | sort | uniq)" ;; |
|||
'-I' | '--install' ) |
|||
COMMANDS="$(echo "${COMMANDS} INIT" | sed "s/\s/\n/g" | sort | uniq)" ;; # le sed sort uniq, c'est pour pas l'avoir en double |
|||
'-*' ) # ignore |
|||
;; |
|||
*) |
|||
ORGA="${ARG%-orga}" |
|||
DockerServName="${ORGA}-${wordpressServName}" |
|||
WPCOMMUN= |
|||
;; |
|||
esac |
|||
done |
|||
|
|||
if [ -z "${COMMANDS}" ]; then usage && exit ; fi |
|||
|
|||
for COMMAND in ${COMMANDS}; do |
|||
case "${COMMAND}" in |
|||
'VERSION' ) |
|||
Version && exit ;; |
|||
'INIT' ) |
|||
Init ;; |
|||
esac |
|||
done |
@ -1,24 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
# kan: 09/06/2022 |
|||
# ki: françois |
|||
# koi: redémarrer tous les collabora en cours pour récupérer de la RAM |
|||
|
|||
KAZ_ROOT=$(cd "$(dirname $0)/.."; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
. "${DOCKERS_ENV}" |
|||
|
|||
cd "${KAZ_COMP_DIR}" |
|||
for ORGA_DIR in *-orga; do |
|||
ORGA=${ORGA_DIR%-orga} |
|||
SERV_NAME="${ORGA}-${nextcloudServName}" |
|||
[[ "$(docker ps -f name=${SERV_NAME} | grep -w ${SERV_NAME})" ]] || continue |
|||
( |
|||
echo restart collabora - ${ORGA} |
|||
cd "${KAZ_COMP_DIR}/${ORGA_DIR}" |
|||
docker-compose stop collabora |
|||
docker-compose start collabora |
|||
) |
|||
done |
|||
|
@ -1,23 +0,0 @@ |
|||
#!/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 |
@ -1,100 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
|
|||
cd $(dirname $0) |
|||
. "${DOCKERS_ENV}" |
|||
|
|||
available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "compose" "enable" "orga" 2>/dev/null | sed "s/-orga\b//g") |
|||
usage () { |
|||
echo "Usage: $0 orga" |
|||
echo " -n : simulation" |
|||
echo " [orga] : in ${available_orga}" |
|||
exit 1 |
|||
} |
|||
|
|||
case "$#" in |
|||
0) |
|||
# common |
|||
CloudName="<common cloud>" |
|||
OFFICE_URL="${httpProto}://${officeHost}.${domain}" |
|||
DockerServName="${nextcloudServName}" |
|||
CONF_DIR="${DOCK_VOL}/cloud_cloudConfig/_data" |
|||
;; |
|||
1) |
|||
# orga |
|||
available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "compose" "enable" "orga" 2>/dev/null | sed "s/-orga\b//g") |
|||
[[ " ${available_orga} " =~ "$1" ]] || usage |
|||
ORGA=${1%-orga} |
|||
CloudName="${ORGA}" |
|||
OFFICE_URL="https://${ORGA}-${officeHost}.${domain}" |
|||
DockerServName="${ORGA}-${nextcloudServName}" |
|||
CONF_DIR="${DOCK_VOL}/orga_${ORGA}-cloudConfig/_data" |
|||
;; |
|||
*) |
|||
usage |
|||
;; |
|||
esac |
|||
|
|||
PHP_CONF="${CONF_DIR}/config.php" |
|||
|
|||
printKazMsg "update cloud config" |
|||
addVarInConf(){ |
|||
# $1 key |
|||
# $2 val |
|||
# $3 where |
|||
if ! grep -q "$1" "${PHP_CONF}" ; then |
|||
echo -n " ${CYAN}${BOLD}$1${NC}" |
|||
sed -i -e "/$3/a\ $2" "${PHP_CONF}" |
|||
fi |
|||
} |
|||
|
|||
printKazMsg "update ${CloudName}:" |
|||
echo -n " " |
|||
addVarInConf "default_language" " 'default_language' => 'fr'," "CONFIG = array (" |
|||
|
|||
addVarInConf "theme" " 'theme' => ''," "'installed' => true," |
|||
addVarInConf "default_phone_region" " 'default_phone_region' => 'FR'," "'installed' => true," |
|||
addVarInConf "loglevel" " 'loglevel' => 2," "'installed' => true," |
|||
addVarInConf "maintenance" " 'maintenance' => false," "'installed' => true," |
|||
addVarInConf "app_install_overwrite" " 'app_install_overwrite' => \n array (\n 0 => 'documents',\n )," "'installed' => true," |
|||
addVarInConf "overwriteprotocol" " 'overwriteprotocol' => 'https'," "'installed' => true," |
|||
|
|||
addVarInConf "mail_domain" " 'mail_domain' => 'kaz.bzh'," "'installed' => true," |
|||
addVarInConf "mail_from_address" " 'mail_from_address' => 'admin'," "'installed' => true," |
|||
addVarInConf "mail_smtpport" " 'mail_smtpport' => '25'," "'installed' => true," |
|||
addVarInConf "mail_sendmailmode" " 'mail_sendmailmode' => 'smtp'," "'installed' => true," |
|||
addVarInConf "mail_smtphost" " 'mail_smtphost' => 'smtp.kaz.bzh'," "'installed' => true," |
|||
addVarInConf "mail_smtpmode" " 'mail_smtpmode' => 'smtp'," "'installed' => true," |
|||
addVarInConf "enable_previews" " 'enable_previews' => true," "'installed' => true," |
|||
addVarInConf "trashbin_retention_obligation" " 'trashbin_retention_obligation' => '30, auto'," "'installed' => true," |
|||
#pour supprimer le message "obtenir un compte gratuit" dans le footer |
|||
addVarInConf "simpleSignUpLink.shown" " 'simpleSignUpLink.shown' => false," "'installed' => true," |
|||
|
|||
if ! [[ "$(docker ps -f name=${DockerServName} | grep -w ${DockerServName})" ]]; then |
|||
printKazError "DockerServName not running... abort" |
|||
exit |
|||
fi |
|||
|
|||
LIST_ALL=$(docker exec -ti -u 33 "${DockerServName}" /var/www/html/occ app:list | |
|||
awk 'BEGIN {cp=0} |
|||
/Enabled:/ {cp=1 ; next}; |
|||
/Disabled:/ {cp=0; next}; |
|||
{if (cp) print $0};') |
|||
|
|||
printKazMsg "add applications" |
|||
for app in tasks calendar bookmarks contacts mail richdocuments drawio rainloop |
|||
do |
|||
grep -wq "${app}" <<<"${LIST_ALL}" 2>/dev/null && continue |
|||
echo " install ${app}" |
|||
docker exec -ti -u 33 "${DockerServName}" /var/www/html/occ app:install "${app}" |
|||
done |
|||
|
|||
docker exec -ti -u 33 "${DockerServName}" /var/www/html/occ config:app:set --value "${OFFICE_URL}" richdocuments public_wopi_url |
|||
docker exec -ti -u 33 "${DockerServName}" /var/www/html/occ config:app:set --value "${OFFICE_URL}" richdocuments wopi_url |
|||
docker exec -ti -u 33 "${DockerServName}" /var/www/html/occ config:app:set --value "${OFFICE_URL}" richdocuments disable_certificate_verification |
|||
|
|||
# A tester... Didier : normalement elle fonctionne, mais bon ! |
|||
docker exec -ti -u 33 "${DockerServName}" /var/www/html/occ config:system:set overwrite.cli.url --value=https\:\/\/${ORGA}-cloud.kaz.bzh |
@ -1,71 +0,0 @@ |
|||
#!/bin/bash |
|||
KAZ_ROOT=$(cd "$(dirname $0)"/..; pwd) |
|||
. $KAZ_ROOT/bin/.commonFunctions.sh |
|||
setKazVars |
|||
. $DOCKERS_ENV |
|||
. $KAZ_ROOT/secret/SetAllPass.sh |
|||
|
|||
LISTE_APPS="tasks calendar contacts bookmarks mail richdocuments richdocumentscode external drawio rainloop ransomware_protection" |
|||
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} |
|||
|
|||
usage() { |
|||
echo "Usage $0 -h -a -l" |
|||
echo "-a : met à jour tous les applications" |
|||
echo "-l : met à jour ces applications ${LISTE_APPS}" |
|||
echo "-h : Cette aide" |
|||
exit |
|||
} |
|||
|
|||
|
|||
ToutesApplis() { |
|||
echo -e "${NC}" |
|||
echo "Mise à jour de toutes les applis installées" |
|||
for cloud in $(docker ps | grep -i cloud |awk '{print $12}') |
|||
do |
|||
echo -e "${COMPTEUR}/${NB_CLOUDS} : ${cloud} " |
|||
echo -e "${GREEN}" |
|||
docker exec -ti -u 33 ${cloud} /var/www/html/occ app:update --all |
|||
echo -e "${NC}" |
|||
COMPTEUR=$(expr $COMPTEUR - 1) |
|||
done |
|||
} |
|||
|
|||
Liste_Apps() { |
|||
echo -e "${NC}" |
|||
echo "Mise à jour de ${LISTE_APPS}" |
|||
for cloud in $(docker ps | grep -i cloud |awk '{print $12}') |
|||
do |
|||
echo -e "${COMPTEUR}/${NB_CLOUDS} : ${cloud} " |
|||
for app in $(echo ${LISTE_APPS}) |
|||
do |
|||
echo -e "${GREEN} ${app} ${NC}" |
|||
docker exec -ti -u 33 ${cloud} /var/www/html/occ app:update ${app} |
|||
echo -e "${NC}" |
|||
done |
|||
COMPTEUR=$(expr $COMPTEUR - 1) |
|||
done |
|||
} |
|||
|
|||
|
|||
################### Main ################# |
|||
|
|||
case "$1" in |
|||
'-h'|'' ) |
|||
usage |
|||
exit |
|||
;; |
|||
'-l' ) |
|||
Liste_Apps |
|||
exit |
|||
;; |
|||
'-a' ) |
|||
ToutesApplis |
|||
exit |
|||
;; |
|||
'*' ) |
|||
usage |
|||
exit |
|||
:: |
|||
esac |
|||
|
@ -1,47 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
|
|||
cd $(dirname $0) |
|||
. "${DOCKERS_ENV}" |
|||
|
|||
available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "compose" "enable" "orga" 2>/dev/null | sed "s/-orga\b//g") |
|||
usage () { |
|||
echo "Usage: $0 orga" |
|||
echo " -n : simulation" |
|||
echo " [orga] : in ${available_orga}" |
|||
exit 1 |
|||
} |
|||
|
|||
case "$#" in |
|||
1) |
|||
# orga |
|||
available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "compose" "enable" "orga" 2>/dev/null | sed "s/-orga\b//g") |
|||
[[ " ${available_orga} " =~ "$1" ]] || usage |
|||
ORGA=${1%-orga} |
|||
WPName="${ORGA}" |
|||
DockerServName="${ORGA}-${webServName}" |
|||
CONF_DIR="${DOCK_VOL}/orga_${ORGA}-wordpress/_data" |
|||
;; |
|||
*) |
|||
usage |
|||
;; |
|||
esac |
|||
|
|||
PHP_CONF="${CONF_DIR}/wp-config.php" |
|||
|
|||
addVarInWordPressConf(){ |
|||
# $1 key |
|||
# $2 ligne à ajouter avant la ligne $MOTIF |
|||
MOTIF="\/\* That's all, stop editing! Happy publishing. \*\/" |
|||
|
|||
if ! grep -q "$1" "${PHP_CONF}" ; then |
|||
echo -n " ${CYAN}${BOLD}$1${NC}" |
|||
sed -i -e "s/$MOTIF/$2\\n$MOTIF/" "${PHP_CONF}" |
|||
fi |
|||
} |
|||
|
|||
#/* pour forcer les maj autrement qu'en ftp */ |
|||
addVarInWordPressConf "FS_METHOD" "define('FS_METHOD', 'direct');" |
@ -1,74 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
|
|||
cd $(dirname $0) |
|||
. "${DOCKERS_ENV}" |
|||
|
|||
declare -a available_orga target_cloud |
|||
available_orga=$("${KAZ_BIN_DIR}/kazList.sh" "compose" "enable" "orga" 2>/dev/null | sed "s/-orga\b//g") |
|||
export SIMU="" |
|||
ALL="" |
|||
ERROR="" |
|||
|
|||
usage () { |
|||
echo "Usage: $0 [-n] [-all] orga..." |
|||
echo " -n : simulation" |
|||
echo " -all : simulation" |
|||
echo " [orga] : in ${available_orga}" |
|||
exit 1 |
|||
} |
|||
|
|||
upgradeNC () { |
|||
# $1 nextcloud ${orga}-nextcloud |
|||
if [ "$1" == "nextcloud" ]; then |
|||
ORGA="common" |
|||
[ -e "${DOCK_VOL}/cloud_cloudMain" ] || return |
|||
DockerServName="nextcloudServ" |
|||
else |
|||
#ORGA="$1" |
|||
ORGA=${1%-nextcloud} |
|||
[ -e "${DOCK_VOL}/orga_${ORGA}-cloudMain" ] || return |
|||
DockerServName="${ORGA}-nextcloudServ" |
|||
fi |
|||
echo "upgrade cloud ${BLUE}${ORGA}${NC}" |
|||
${SIMU} docker exec -ti -u 33 ${DockerServName} /var/www/html/occ upgrade; |
|||
} |
|||
|
|||
for ARG in $@; do |
|||
case "${ARG}" in |
|||
'-h' | '-help' ) |
|||
usage |
|||
;; |
|||
'-n' ) |
|||
export SIMU="echo" |
|||
;; |
|||
'-all' ) |
|||
ALL="yes" |
|||
;; |
|||
* ) |
|||
if [[ ! " ${available_orga[*]} " =~ " ${ARG} " ]]; then |
|||
echo "${RED}${ARG}${NC} not an orga" |
|||
ERROR="yes" |
|||
else |
|||
target_cloud+=("${ARG}-nextcloud") |
|||
fi |
|||
;; |
|||
esac |
|||
done |
|||
|
|||
[ -n "${ERROR}" ] && usage |
|||
|
|||
if [ -n "${ALL}" ]; then |
|||
target_cloud=("nextcloud") |
|||
for orga in ${available_orga[@]}; do |
|||
target_cloud+=("${orga}-nextcloud") |
|||
done |
|||
fi |
|||
[ ${#target_cloud[@]} -eq 0 ] && target_cloud+=("nextcloud") |
|||
|
|||
for nc in ${target_cloud[@]}; do |
|||
upgradeNC "${nc}" |
|||
done |
@ -1,71 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/../..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
. "${DOCKERS_ENV}" |
|||
. "${KAZ_KEY_DIR}/SetAllPass.sh" |
|||
|
|||
# begin commun service init |
|||
cd $(dirname $0) |
|||
PWD=$(pwd) |
|||
ORGA_DIR=$(basename ${PWD}) |
|||
|
|||
if [[ "${ORGA_DIR}" != *"-orga" ]] |
|||
then |
|||
printKazError "it's not an orga dir" |
|||
exit |
|||
fi |
|||
ORGA=${ORGA_DIR%-orga} |
|||
if [[ -z "${ORGA}" ]] |
|||
then |
|||
printKazError "it's not an orga dir" |
|||
exit |
|||
fi |
|||
|
|||
printKazMsg "init cloud ${ORGA}" |
|||
|
|||
CONF_DIR="${DOCK_VOL}/orga_${ORGA}-cloudConfig/_data" |
|||
PHP_CONF="${CONF_DIR}/config.php" |
|||
|
|||
CLOUD_URL="${httpProto}://${ORGA}-${cloudHost}.${domain}" |
|||
DockerServName="${ORGA}-${nextcloudServName}" |
|||
|
|||
if ! [[ "$(docker ps -f name=${DockerServName} | grep -w ${DockerServName})" ]]; then |
|||
printKazError "NextCloud not running... abort" |
|||
exit |
|||
fi |
|||
|
|||
echo " |
|||
CREATE DATABASE IF NOT EXISTS ${nextcloud_MYSQL_DATABASE}; |
|||
|
|||
DROP USER IF EXISTS '${nextcloud_MYSQL_USER}'; |
|||
CREATE USER '${nextcloud_MYSQL_USER}'@'%'; |
|||
|
|||
GRANT ALL ON ${nextcloud_MYSQL_DATABASE}.* TO '${nextcloud_MYSQL_USER}'@'%' IDENTIFIED BY '${nextcloud_MYSQL_PASSWORD}'; |
|||
|
|||
FLUSH PRIVILEGES;" | \ |
|||
docker exec -i ${ORGA}-DB bash -c "mysql --user=root --password=${nextcloud_MYSQL_ROOT_PASSWORD}" |
|||
|
|||
if ! grep -q "'installed' => true," "${PHP_CONF}" 2> /dev/null; then |
|||
printKazMsg "\n *** Premier lancement de NextCLoud" |
|||
|
|||
waitUrl "${CLOUD_URL}" |
|||
|
|||
printKazMsg "reset cloud ${ORGA}" |
|||
|
|||
curl -X POST \ |
|||
-d "install=true" \ |
|||
-d "adminlogin=${nextcloud_NEXTCLOUD_ADMIN_USER}" \ |
|||
-d "adminpass=${nextcloud_NEXTCLOUD_ADMIN_PASSWORD}" \ |
|||
-d "directory=/var/www/html/data" \ |
|||
-d "dbtype=mysql" \ |
|||
-d "dbuser=${nextcloud_MYSQL_USER}" \ |
|||
-d "dbpass=${nextcloud_MYSQL_PASSWORD}" \ |
|||
-d "dbname=${nextcloud_MYSQL_DATABASE}" \ |
|||
-d "dbhost=${nextcloud_MYSQL_HOST}" \ |
|||
-d "install-recommended-apps=true" \ |
|||
"${CLOUD_URL}" |
|||
fi |
|||
|
|||
"${KAZ_BIN_DIR}/updateCloud.sh" "${ORGA}" |
@ -0,0 +1,63 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/../..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
. "${DOCKERS_ENV}" |
|||
. "${KAZ_KEY_DIR}/SetAllPass.sh" |
|||
|
|||
cd $(dirname $0) |
|||
ORGA_DIR="$(basename "$(pwd)")" |
|||
|
|||
ORGA=${ORGA_DIR%-orga} |
|||
if [[ -z "${ORGA}" ]] |
|||
then |
|||
printKazError "it's not an orga dir" |
|||
exit |
|||
fi |
|||
|
|||
|
|||
waitContainerHealthy "${ORGA}-DB" 180 |
|||
[ $? -ne 0 ] && printKazError "\n La base de donnée démarre pas : impossible de terminer l'install" && exit |
|||
|
|||
SQL="" |
|||
|
|||
for ARG in "$@"; do |
|||
case "${ARG}" in |
|||
'cloud' ) |
|||
SQL="$SQL |
|||
CREATE DATABASE IF NOT EXISTS ${nextcloud_MYSQL_DATABASE}; |
|||
|
|||
DROP USER IF EXISTS '${nextcloud_MYSQL_USER}'; |
|||
CREATE USER '${nextcloud_MYSQL_USER}'@'%'; |
|||
|
|||
GRANT ALL ON ${nextcloud_MYSQL_DATABASE}.* TO '${nextcloud_MYSQL_USER}'@'%' IDENTIFIED BY '${nextcloud_MYSQL_PASSWORD}'; |
|||
|
|||
FLUSH PRIVILEGES;" |
|||
;; |
|||
'agora' ) |
|||
SQL="$SQL |
|||
CREATE DATABASE IF NOT EXISTS ${mattermost_MYSQL_DATABASE}; |
|||
|
|||
DROP USER IF EXISTS '${mattermost_MYSQL_USER}'; |
|||
CREATE USER '${mattermost_MYSQL_USER}'@'%'; |
|||
|
|||
GRANT ALL ON ${mattermost_MYSQL_DATABASE}.* TO '${mattermost_MYSQL_USER}'@'%' IDENTIFIED BY '${mattermost_MYSQL_PASSWORD}'; |
|||
|
|||
FLUSH PRIVILEGES;" |
|||
;; |
|||
'wp' ) |
|||
SQL="$SQL |
|||
CREATE DATABASE IF NOT EXISTS ${wp_MYSQL_DATABASE}; |
|||
|
|||
DROP USER IF EXISTS '${wp_MYSQL_USER}'; |
|||
CREATE USER '${wp_MYSQL_USER}'@'%'; |
|||
|
|||
GRANT ALL ON ${wp_MYSQL_DATABASE}.* TO '${wp_MYSQL_USER}'@'%' IDENTIFIED BY '${wp_MYSQL_PASSWORD}'; |
|||
|
|||
FLUSH PRIVILEGES;" |
|||
;; |
|||
esac |
|||
done |
|||
|
|||
echo $SQL | docker exec -i ${ORGA}-DB bash -c "mysql --user=root --password=${wp_MYSQL_ROOT_PASSWORD}" |
@ -1,96 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/../..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
. "${DOCKERS_ENV}" |
|||
. "${KAZ_KEY_DIR}/SetAllPass.sh" |
|||
|
|||
# begin commun service init |
|||
cd $(dirname $0) |
|||
PWD=$(pwd) |
|||
ORGA_DIR=$(basename ${PWD}) |
|||
|
|||
if [[ "${ORGA_DIR}" != *"-orga" ]] |
|||
then |
|||
printKazError "it's not an orga dir" |
|||
exit |
|||
fi |
|||
ORGA=${ORGA_DIR%-orga} |
|||
if [[ -z "${ORGA}" ]] |
|||
then |
|||
printKazError "it's not an orga dir" |
|||
exit |
|||
fi |
|||
|
|||
printKazMsg "init agora ${ORGA}" |
|||
|
|||
CONF_DIR="${VOL_DIR}/orga_${ORGA}-matterConfig/_data" |
|||
JSON_CONF="${CONF_DIR}/config.json" |
|||
MATTER_URI="${ORGA}-${matterHost}.${domain}" |
|||
MATTER_URL="${httpProto}://${MATTER_URI}" |
|||
ORGA_FLAG="${ORGA_DIR//-/_}" |
|||
DockerServName="${ORGA_FLAG}-${mattermostServName}" |
|||
|
|||
if ! [[ "$(docker ps -f name=${DockerServName} | grep -w ${DockerServName})" ]]; then |
|||
printKazError "Agora not running... abort" |
|||
exit |
|||
fi |
|||
|
|||
echo " |
|||
CREATE DATABASE IF NOT EXISTS ${mattermost_MYSQL_DATABASE}; |
|||
|
|||
DROP USER IF EXISTS '${mattermost_MYSQL_USER}'; |
|||
CREATE USER '${mattermost_MYSQL_USER}'@'%'; |
|||
|
|||
GRANT ALL ON ${mattermost_MYSQL_DATABASE}.* TO '${mattermost_MYSQL_USER}'@'%' IDENTIFIED BY '${mattermost_MYSQL_PASSWORD}'; |
|||
|
|||
FLUSH PRIVILEGES;" | \ |
|||
docker exec -i "${ORGA}-DB" bash -c "mysql --user=root --password=${mattermost_MYSQL_ROOT_PASSWORD}" |
|||
|
|||
|
|||
getToken(){ |
|||
curl -i -s -d "{\"login_id\":\"${mattermost_MM_ADMIN_USER}\",\"password\":\"${mattermost_MM_ADMIN_PASSWORD}\"}" "${MATTER_URL}/api/v4/users/login" | grep 'token' | sed 's/token:\s*\(.*\)\s*/\1/' | tr -d '\r' |
|||
} |
|||
|
|||
waitUrl "${MATTER_URL}" |
|||
[ -z "$(getToken)" ] || exit |
|||
|
|||
printKazMsg "\n *** Premier lancement de Mattermost" |
|||
|
|||
|
|||
# XXX utiliser le compte de l'admin |
|||
curl -i -d "{\"email\":\"${mattermost_MM_ADMIN_EMAIL}\",\"username\":\"${mattermost_MM_ADMIN_USER}\",\"password\":\"${mattermost_MM_ADMIN_PASSWORD}\",\"allow_marketing\":true}" "${MATTER_URL}/api/v4/users" |
|||
|
|||
waitUrl "${MATTER_URL}" |
|||
MM_TOKEN=$(getToken) |
|||
|
|||
curl -i -H "Authorization: Bearer ${MM_TOKEN}" -d "{\"display_name\":\"${ORGA}\",\"name\":\"${ORGA,,}\",\"type\":\"O\"}" "${MATTER_URL}/api/v4/teams" |
|||
|
|||
sed -i \ |
|||
-e 's|"SiteURL": ".*"|"SiteURL": "'${MATTER_URL}'"|g' \ |
|||
-e 's|"WebsocketURL": ".*"|"WebsocketURL": "wss://'${MATTER_URI}'"|g' \ |
|||
-e 's|"AllowCorsFrom": ".*"|"AllowCorsFrom": "'${domain}' '${MATTER_URI}':443 '${MATTER_URI}'"|g' \ |
|||
-e 's|"ConsoleLevel": ".*"|"ConsoleLevel": "ERROR"|g' \ |
|||
-e 's|"SendEmailNotifications": false|"SendEmailNotifications": true|g' \ |
|||
-e 's|"FeedbackEmail": ".*"|"FeedbackEmail": "admin@'${domain}'"|g' \ |
|||
-e 's|"FeedbackOrganization": ".*"|"FeedbackOrganization": "Cochez la KAZ du libre !"|g' \ |
|||
-e 's|"ReplyToAddress": ".*"|"ReplyToAddress": "admin@'${domain}'"|g' \ |
|||
-e 's|"SMTPServer": ".*"|"SMTPServer": "mail.'${domain}'"|g' \ |
|||
-e 's|"SMTPPort": ".*"|"SMTPPort": "25"|g' \ |
|||
-e 's|"DefaultServerLocale": ".*"|"DefaultServerLocale": "fr"|g' \ |
|||
-e 's|"DefaultClientLocale": ".*"|"DefaultClientLocale": "fr"|g' \ |
|||
-e 's|"AvailableLocales": ".*"|"AvailableLocales": "fr"|g' \ |
|||
${JSON_CONF} |
|||
|
|||
# "jitsi": { |
|||
# "jitsiappid": null, |
|||
# "jitsiappsecret": null, |
|||
# "jitsicompatibilitymode": false, |
|||
# "jitsiembedded": false, |
|||
# "jitsijwt": null, |
|||
# "jitsilinkvalidtime": 30, |
|||
# "jitsinamingscheme": "words", |
|||
# "jitsiurl": "https://meet.jit.si", |
|||
# "Enable": true |
|||
# } |
@ -1,81 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/../..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
. "${DOCKERS_ENV}" |
|||
. "${KAZ_KEY_DIR}/SetAllPass.sh" |
|||
|
|||
cd $(dirname $0) |
|||
PWD=$(pwd) |
|||
ORGA_DIR=$(basename ${PWD}) |
|||
|
|||
if [[ "${ORGA_DIR}" != *"-orga" ]] |
|||
then |
|||
printKazError "it's not an orga dir" |
|||
exit |
|||
fi |
|||
ORGA=${ORGA_DIR%-orga} |
|||
if [[ -z "${ORGA}" ]] |
|||
then |
|||
printKazError "it's not an orga dir" |
|||
exit |
|||
fi |
|||
|
|||
TPL_DIR="${DOCK_VOL}/orga_${ORGA}-wikiLibtpl/_data" |
|||
PLG_DIR="${DOCK_VOL}/orga_${ORGA}-wikiPlugins/_data" |
|||
CONF_DIR="${DOCK_VOL}/orga_${ORGA}-wikiConf/_data" |
|||
DNLD_DIR="${KAZ_DNLD_DIR}/dokuwiki" |
|||
DockerServName="${ORGA}-${dokuwikiServName}" |
|||
WIKI_URL="${httpProto}://${ORGA}-${dokuwikiHost}.${domain}" |
|||
|
|||
WIKI_TITLE=Kaz |
|||
WIKI_ROOT=Kaz |
|||
WIKI_EMAIL=wiki@kaz.local |
|||
WIKI_PASS=azerty |
|||
|
|||
|
|||
printKazMsg "init wiki ${ORGA}" |
|||
|
|||
if ! [[ "$(docker ps -f name=${DockerServName} | grep -w ${DockerServName})" ]]; then |
|||
printKazError "Dokuwiki not running... abort" |
|||
exit |
|||
fi |
|||
|
|||
if [ ! -f "${CONF_DIR}/local.php" ] ; then |
|||
printKazMsg "\n *** Premier lancement de Dokuwiki" |
|||
|
|||
waitUrl "${WIKI_URL}" |
|||
|
|||
curl -X POST \ |
|||
-d "l=fr" \ |
|||
-d "d[title]=${WIKI_TITLE}" \ |
|||
-d "d[acl]=true" \ |
|||
-d "d[superuser]=${WIKI_ROOT}" \ |
|||
-d "d[fullname]=Admin"\ |
|||
-d "d[email]=${WIKI_EMAIL}" \ |
|||
-d "d[password]=${WIKI_PASS}" \ |
|||
-d "d[confirm]=${WIKI_PASS}" \ |
|||
-d "d[policy]=1" \ |
|||
-d "d[allowreg]=false" \ |
|||
-d "d[license]=lic_0" \ |
|||
-d "d[pop]=false" \ |
|||
"${WIKI_URL}/install.php" |
|||
|
|||
|
|||
unzipInDir "${DNLD_DIR}/docnavwiki.zip" "${TPL_DIR}/" |
|||
chown -R www-data: "${TPL_DIR}/" |
|||
|
|||
for plugin in captcha ckgedit smtp todo wrap wrapadd; do |
|||
unzipInDir "${DNLD_DIR}/${plugin}.zip" "${PLG_DIR}" |
|||
done |
|||
chown -R www-data: "${PLG_DIR}/" |
|||
|
|||
cd wiki-conf |
|||
# XXX initialiser admin:<pass>:admin:<mel>:admin,user |
|||
rsync -auHAX local.php users.auth.php acl.auth.php "${CONF_DIR}/" |
|||
chown -R www-data: "${CONF_DIR}/" |
|||
|
|||
sed -i -e "s|\(.*conf\['title'\].*=.*'\).*';|\1${ORGA}';|g" "${CONF_DIR}/local.php" |
|||
sed -i -e "s|\(.*conf\['lang'\].*=.*'\)en';|\1fr';|g" "${CONF_DIR}/dokuwiki.php" |
|||
fi |
@ -1,64 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
KAZ_ROOT=$(cd $(dirname $0)/../..; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
. "${DOCKERS_ENV}" |
|||
. "${KAZ_KEY_DIR}/SetAllPass.sh" |
|||
|
|||
cd $(dirname $0) |
|||
PWD=$(pwd) |
|||
ORGA_DIR=$(basename ${PWD}) |
|||
VOL_DIR=/var/lib/docker/volumes |
|||
|
|||
if [[ "${ORGA_DIR}" != *"-orga" ]] |
|||
then |
|||
printKazError "it's not an orga dir" |
|||
exit |
|||
fi |
|||
ORGA=${ORGA_DIR%-orga} |
|||
if [[ -z "${ORGA}" ]] |
|||
then |
|||
printKazError "it's not an orga dir" |
|||
exit |
|||
fi |
|||
|
|||
printKazMsg "init wordpress ${ORGA}" |
|||
|
|||
CONF_DIR="${VOL_DIR}/orga_${ORGA}-wordpress/_data" |
|||
WP_URL="${httpProto}://${ORGA}-${wordpressHost}.${domain}" |
|||
DockerServName="${ORGA}-${wordpressServName}" |
|||
|
|||
if ! [[ "$(docker ps -f name=${DockerServName} | grep -w ${DockerServName})" ]]; then |
|||
printKazError "Wordpress not running... abort" |
|||
exit |
|||
fi |
|||
|
|||
echo " |
|||
CREATE DATABASE IF NOT EXISTS ${wp_MYSQL_DATABASE}; |
|||
|
|||
DROP USER IF EXISTS '${wp_MYSQL_USER}'; |
|||
CREATE USER '${wp_MYSQL_USER}'@'%'; |
|||
|
|||
GRANT ALL ON ${wp_MYSQL_DATABASE}.* TO '${wp_MYSQL_USER}'@'%' IDENTIFIED BY '${wp_MYSQL_PASSWORD}'; |
|||
|
|||
FLUSH PRIVILEGES;" | \ |
|||
docker exec -i ${ORGA}-DB bash -c "mysql --user=root --password=${wp_MYSQL_ROOT_PASSWORD}" |
|||
|
|||
# XXX trouver un test du genre if ! grep -q "'installed' => true," "${PHP_CONF}" 2> /dev/null; then |
|||
printKazMsg "\n *** Premier lancement de WP" |
|||
|
|||
waitUrl "${WP_URL}" |
|||
|
|||
printKazMsg "reset wp ${ORGA}" |
|||
|
|||
curl -X POST \ |
|||
-d "user_name=${wp_WORDPRESS_ADMIN_USER}" \ |
|||
-d "admin_password=${wp_WORDPRESS_ADMIN_PASSWORD}" \ |
|||
-d "admin_password2=${wp_WORDPRESS_ADMIN_PASSWORD}" \ |
|||
-d "pw_weak=true" \ |
|||
-d "admin_email=admin@kaz.bzh" \ |
|||
-d "blog_public=0" \ |
|||
-d "language=fr_FR" \ |
|||
"${WP_URL}/wp-admin/install.php?step=2" |
|||
echo |
@ -1,63 +0,0 @@ |
|||
#!/bin/bash |
|||
|
|||
#kan: 06/10/2022 |
|||
#koi: recopie les volumes d'une orga depuis l'emplacement originel vers un autre emplacement. Utile quand on n'a plus de place sur le disque principal. |
|||
#ki : fab |
|||
|
|||
KAZ_ROOT=$(cd "$(dirname $0)/../.."; pwd) |
|||
. "${KAZ_ROOT}/bin/.commonFunctions.sh" |
|||
setKazVars |
|||
|
|||
cd $(dirname $0) |
|||
|
|||
PWD=$(pwd) |
|||
ORGA_DIR=$(basename ${PWD}) |
|||
|
|||
if [[ "${ORGA_DIR}" != *"-orga" ]] |
|||
then |
|||
echo "it's not an orga dir" |
|||
exit |
|||
fi |
|||
ORGA=${ORGA_DIR%-orga} |
|||
|
|||
REP_SOURCE="/var/lib/docker/volumes/" |
|||
REP_DISTANT="/mnt/disk-nas1/docker/volumes/" |
|||
|
|||
docker-compose down |
|||
|
|||
#******************************** |
|||
# de REP_SOURCE vers REP_DISTANT |
|||
#******************************** |
|||
|
|||
#on fait du propre dans le rep distant |
|||
rm ${REP_DISTANT}orga_${ORGA}-* -rf |
|||
# on ramène toutes les data de l'orga dans le rep distant |
|||
cp -a ${REP_SOURCE}orga_${ORGA}-* ${REP_DISTANT} |
|||
#une fois copiés, on vire tout du rep source |
|||
rm ${REP_SOURCE}orga_${ORGA}-* -rf |
|||
|
|||
#on crée les liens dans le rep source |
|||
for volume in $(ls ${REP_DISTANT}); |
|||
do |
|||
if [[ ${volume} == *orga_${ORGA}-* ]] |
|||
then |
|||
ln -s ${REP_DISTANT}${volume} ${REP_SOURCE}${volume} |
|||
fi |
|||
done; |
|||
|
|||
#************************************************ |
|||
# machine arrière: de REP_DISTANT vers REP_SOURCE |
|||
#************************************************ |
|||
|
|||
#on vire les liens présent en source |
|||
#rm ${REP_SOURCE}orga_${ORGA}-* -f |
|||
#on copie en gardant les permissions et owner |
|||
#cp -a ${REP_DISTANT}orga_${ORGA}-* ${REP_SOURCE} |
|||
#une fois copiés, on vire tout du rep distant |
|||
#rm ${REP_DISTANT}orga_${ORGA}-* -rf |
|||
|
|||
docker-compose up -d |
|||
availableProxyComposes=($(getList "${KAZ_CONF_DIR}/container-proxy.list")) |
|||
for item in "${availableProxyComposes[@]}"; do |
|||
${KAZ_COMP_DIR}/${item}/reload.sh |
|||
done |
@ -0,0 +1,4 @@ |
|||
|
|||
WIKI_ROOT= |
|||
WIKI_EMAIL= |
|||
WIKI_PASSWORD= |
Loading…
Reference in new issue