Référentiel Infrastructure Tetalab

Scripts de gestion et de maintenance de l'infrastructure du Tetalab

ctl_all_nrpe.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : ctl_all_nrpe.sh
 Auteur         : Doug Le Tough
 Date           : 04-10-2017
 Version        : 1.0.1
 Objet          : Fait tous les contrôles NRPE standards sur l'ensemble des VM listées 
                  dans le fichier de configuration et notifie les incidents sur freenode.net#tetalab

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  22/07/2017   - Doug Le Tough   - Cre : Mise en production
 1.0.1  04/10/2017   - Doug Le Tough   - Evo : Support des espaces dans les noms de processus
 1.0.2  03/11/2018   - Doug Le Tough   - Evo : Contrôle supplémentaire sur processus en attente d'I/O
 1.0.3  12/11/2018   - Doug Le Tough   - Bug : Typo ${{CHECK} != ${CHECK}

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> ctl_all_nrpe.sh

  ex:
       ctl_all_nrpe.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Depuis sousetsuken, récupère depuis le répertoire local NRPE_CHECK_PATH la liste des checks à effectuer
 et pour ceux qui sont executables les execute sur les VM définies dans le fichier de configuration.
 puis relève les incidents et les notifie sur le chan freenode.net#tetalab en utilisant le script python
 /usr/local/bin/tetalab/ircbot.py

 Ce script utilise ctl_host_process.sh pour la vérification des processus.
  

ctl_crawler_bot.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : ctl_crawler_bot.sh
 Auteur         : Doug Le Tough
 Date           : 23-10-2018
 Version        : 1.0.0
 Objet          : Exécute sys_block_bot.sh pour chaun des bots désignés dans ctl_crawler_bot.dat

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  23/10/21018   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> ctl_crawler_bot.sh

  ex:
          ctl_crawler_bot.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur Bobby.
 - Le fichier ctl_crawler_bot.dat doit contenir la liste des bots à bloquer (un nom par ligne)

 Fonctionnement:
 ---------------
 Exécute sys_block_bot.sh pour chacun des noms déclarés dans ctl_crawler_bot.dat.
  

ctl_host_process.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : ctl_host_process.sh
 Auteur         : Doug Le Tough
 Date           : 24-12-2017
 Version        : 1.0.3
 Objet          : Vérifie sur la VM dont le nom est passée en option la présence d'un processus
                  dont le nom est passé en option

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  22/07/2017   - Doug Le Tough   - Cre : Mise en production
 1.0.1  13/08/2017   - Doug Le Tough   - Evo : Ajout d'un timeout sur SSH
 1.0.2  04/10/2017   - Doug Le Tough   - Evo : Gestion des espaces dans le nom du processus
 1.0.3  04/10/2017   - Doug Le Tough   - Evo : Exclusion du processus courant de la liste des processus

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> ctl_host_process.sh -vm <VM> -process <PROCESS>

  ex:
       ctl_host_process.sh -vm sousetsuken -process /usr/sbin/httpd

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Depuis sousetsuken se connecte sur la VM dont le nom est passé en option et vérifie la présence du
 du processus à l'aide de pidof

 Renvoie le code de sortie 1 si le process n'existe pas sur la VM et 0 dans le cas contraire.
  

ctl_swap_usage.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : ctl_swap_usage.sh
 Auteur         : Doug Le Tough
 Date           : 02-02-2019
 Version        : 1.0.0
 Objet          : R2cupère la liste des processus et affiche la taille qu'ils occupent sur le swap

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  02/02/21019   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> ctl_swap_usage.sh

  ex:
          ctl_swap_usage.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr.

 Fonctionnement:
 ---------------
 Récupère les PID des processus à partir de ps et récupère pour chauqe processus le ataux d'occupation
 de VmSwap dans /proc/<PID>/status
  

ctl_vm.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : ctl_vm.sh
 Auteur         : Doug Le Tough
 Date           : 23-07-2017
 Version        : 1.0.0
 Objet          : Vérifie l'état des VM de l'infrastructure

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  23/07/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> ctl_vm.sh

  ex:
       ctl_vm.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Depuis sousetsuken se connecte sur le Nuc et vérifie l'état des VM inscrite dans le fichier de configuration
 et notifie les incidents sur freenode.net#tetalab
  

exp_cotisation_alert.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : exp_cotisation_alert.sh
 Auteur         : Doug Le Tough
 Date           : 30-01-2018
 Version        : 1.0.1
 Objet          : Gestion des rappels de cotisations aux membres du Tetalab

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  07/12/2017  - Doug Le Tough   - Cre : Mise en production
 1.0.1  30/01/2018  - Doug Le Tough   - Evo : Regénère la liste des membres actifs avant d'envoyer le code d'accès

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> exp_cotisation_alert.sh

  ex:
       exp_cotisation_alert.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr

 Fonctionnement:
 ---------------
 Récupère la liste des membres du Tetalab dans <GARRADIN_HOST>:<GARRADIN_DB_PATH>/<GARRADIN_DB> et
 envoie un mail de rappel de cotisation <BEFORE_DELAY> jours avant la date d'échéance définie par
 <DEAD_LINE_DATE>.

 <AFTER_DELAY> jours après <DEAD_LINE_DATE>, vérifie l'état des cotisations pour chaun des membres et
 déplace les membres n'ayant pas cotisé dans la catégorie "anciens membres" et leur envoie un mail de
 notification.

 À la date d'échéance définie par <DEAD_LINE_DATE>, un nouveau code pour le cadenas du DD2 est généré
 et envoyé par mail à chacun des membres ayant payé sa cotisation.

 Les modèles des mails envoyés sont stockés dans ${NC_EXPL_MOD}.
  

exp_dummy_script.sh


 Syntaxe :
 --------

  prompt> exp_dummy_script.sh [-list_vm false] [ -gen_error true ] [-argv arg1 arg2 ...]

  ex:
       exp_dummy_script.sh -list_vm false -gen_error true -argv plop plip plap

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr

 Fonctionnement:
 ---------------
 Affiche sa configuration et liste les VM listées dans son fichier de configuration (TETALAB_VM[*]).

 Si l'option -list_vm est positionnée à false, le script ne fait qu'afficher sa configuration.
 Par défaut list_vm vaut true.

 Si l'option -gen_error  est positionnée à true, le script génèrera une erreur. Le but de cette option
 étant d'illustrer la gestion des erreurs. Par défaut gen_error vaut false.
  

exp_gen_spamlists.sh

------------------------------------------------------------------------------
 Script         : exp_gen_spamlists.sh
 Auteur         : Doug Le Tough
 Date           : 28/02/2022
 Version        : 1.0.0
 Objet          : Genère les listes blanches et noires du serveur de 
                  courriels à parit du dépôt Git défini par le fichier 
                  de configuration.

------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  28/02/2022   - Doug Le Tough   - Cre : Mise en production
 1.0.1  21/06/2022   - Doug Le Tough   - Evo : Filtrage des # pour faire 
                                               plaisir à tTh

------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> exp_gen_spamlists.sh

  ex:
       exp_gen_spamlists.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr

 Fonctionnement:
 ---------------

 Clone le dépôt Git et génère les tables de hashs à destination de postfix et
 et les listes blanches et noires à destination de spamassassin.

 Redémarre postfix et spamasassin pour prise en compte des modifications
  

exp_mailman_sa-learn_spam.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : exp_mailman_sa-learn_spam.sh
 Auteur         : Doug Le Tough
 Date           : 16-08-2017
 Version        : 1.0.0
 Objet          : Passe les messages en attente de la liste de diffusion à spamassassin
                  afin qu'il les traite comme du spam et les supprime de la liste d'attente

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  16/08/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> exp_mailman_sa-learn_spam.sh -list <LIST>

  ex:
       exp_mailman_sa-learn_spam.sh -list contact_request

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Depuis sousetsuken se connecte sur MAILMAN_HOST, récupère la liste des mails en attente d'approbation
 pour la liste de diffusion LIST et les donne au filtre bayesien sa-learn afin que spamassassin les traite
 comme des spams.

 Une fois les mails traités, ils sont supprimés de la liste d'attente d'approbation.
  

exp_proc_ram_usage.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : exp_proc_ram_usage.sh
 Auteur         : Doug Le Tough
 Date           : 29-04-2018
 Version        : 1.0.0
 Objet          : Affiche la quantité de RAM totale utilisée par un processus défini par son nom executable et/ou
                  son PID

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  29/04/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> exp_proc_ram_usage.sh <-exe <EXE> | -pid <PID>)

  ex:
       exp_proc_ram_usage.sh -exe httpd
       exp_proc_ram_usage.sh -pid 42713

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr

 Fonctionnement:
 ---------------
 
 Récupère la taille proportionnelle de l'utilisation de la RAM (PSS) pour un processus dont le PID et/ou le nom
 d'executable est passé en option.

 La taille proportionnelle de l'utilisation de la RAM est récupérée à partir de la sortie de la commande "smem".

 Si aucune option n'est passée alors la taille de la RAM utilisée totale est affichée.
  

exp_refresh_beta_thsf_site.sh

------------------------------------------------------------------------------
 Script         : exp_refresh_beta_thsf_site.sh
 Auteur         : Doug Le Tough
 Date           : 24/02/2023
 Version        : 2.0.0
 Objet          : Permet la mise à jour du site du THSF à partir du dépôt git

------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  04/04/2023   - Doug Le Tough   - Cre : Mise en production

------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> exp_refresh_beta_thsf_site.sh -branch <branch>

  ex:
       exp_refresh_beta_thsf_site.sh -branch <beta>

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur marian

 Fonctionnement:
 ---------------
 Sur marian: Vérifie les différences entre la copie local du dépôt du site beta du THSF et le dépôt git.
 Met à jour a copie locale si nécessaire.
  

exp_refresh_tetalab_site.sh

------------------------------------------------------------------------------
 Script         : exp_refresh_tetalab_site.sh
 Auteur         : Doug Le Tough
 Date           : 26-01-2018
 Version        : 1.0.0
 Objet          : Permet la mise à jour des pages du Tetalab à partir du dépôt git

------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  26/01/2018   - Doug Le Tough   - Cre : Mise en production

------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> exp_refresh_tetalab_site.sh

  ex:
       exp_refresh_tetalab_site.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur marian

 Fonctionnement:
 ---------------
 Sur marian: Vérifie les différences entre la copie local du dépôt du site du Tetalab et le dépôt git.
 Met à jour a copie locale si nécessaire.
  

exp_refresh_thsf_site.sh

------------------------------------------------------------------------------
 Script         : exp_refresh_thsf_site.sh
 Auteur         : Doug Le Tough
 Date           : 24/04/2023
 Version        : 3.0.0
 Objet          : Permet la mise à jour du site du THSF à partir du dépôt git

------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> exp_refresh_thsf_site.sh [-branch <branch>]

  ex:
       exp_refresh_thsf_site.sh -branch beta

  La branche par défaut est "master".

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur marian

 Fonctionnement:
 ---------------
 Clone ou récupère les différences du dépôt Git défini dans le fichier
 de configuration, arrête, reconstruit et démarre le conteneur.
  

exp_transfert_dir.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : exp_transfert_dir.sh
 Auteur         : Doug Le Tough
 Date           : 18-08-2017
 Version        : 1.0.1
 Objet          : Permet le transfert de répertoire entre VM

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  22/07/2017   - Doug Le Tough   - Cre : Mise en production
 1.0.1  18/08/2017   - Doug Le Tough   - Cor : Bugfix: RET_VAL non définie dans certaines fonctions
 1.0.2  19-02-2018   - Doug Le Tough   - Evo : Utilisation du repertoire temporaire ${SH_TMP_DIR}

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> exp_transfert_dir.sh \
            -src_host <VM1> \
            -dst_host <VM2> \
            -src_dir <DIR1> \
            -dst_dir <DIR2> \
            [-create true] \
            [-dst_user <USER>] \
            [-dst_group <GROUP>] \
            [-dst_mode <MODE>] 

  ex: exp_transfert_dir.sh \
        -src_host marian.local.tetalab.org \
        -dst_host jimmy.local.tetalab.org \
        -src_dir /etc/httpd
        -dst_dir /home/doug/httpd \
        -create true \
        -dst_user doug \
        -dst_group wheel
        -dst_mode 644

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Récupère sur sousetsuken depuis src_host le contenu du répertoire src_dir et le copie dans le répertoire
 dst_dir sur dst_host.

 Si l'option facultative -create est positionnée à true, le répertoire de destination sera créé.
 Par défaut cette option vaut false.

 Si le répertoire de destination n'existe pas et si l'option -create ne vaut pas true, le script remontera
 une erreur.

 Si le répertoire de destination existe et l'option -create vaut true, le transfert aura lieu normalement.

 Tous les noms de répertoires doivent être des chemins absolus.

 Les options -dst_user, -dst_group et -dst_mode permettent de gérer les droits et permissions sur le
 répertoire copié


 ATTENTION:
 - Le script transfert LE CONTENU du répertoire source
 - Le script modifie les droits et permissions du répertoire de destination, soyez prudent lorsque le répertoire
   existe déjà: Dans l'exemple ci dessus le répertoire /home/doug/httpd verra ses droits et permissions positionnées
   à doug:wheel 644 avec toutes les conséquences fâcheuses que ça peut avoir !
  

sys_auto_respawn_service.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_auto_respawn_service.sh
 Auteur         : Doug Le Tough
 Date           : 04-11-2018
 Version        : 1.0.0
 Objet          : Vérifie l'état des services énumérés dans le fichier de configuration
                  et les démarrent si ces services ne sont pas actifs

                  Le format du fichier de configuration est: SERVICES[<index>]="<vm>:<service>:<init script>"

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  04/11/2018   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_auto_respawn_service.sh

  ex:
          sys_auto_respawn_service.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Pour chacun des services définir dans le fichier de configuration:
 - Se connecte en SSH sur la VM concernée et récupère l'état du service
 - Si le service n'est pas détecté, redémarre le service en utilisant le script d'init défini pour ce service

 Le format du fichier de configuration est: SERVICES[<index>]="<vm>:<service>:<init script>"
  

sys_backup_all_vm.sh

------------------------------------------------------------------------------
 Script         : sys_backup_all_vm.sh
 Auteur         : Doug Le Tough
 Date           : 24-12-2017
 Version        : 3.0.2
 Objet          : Sauvegarde les répertoires des VM définis dans le fichier de configuration
                  du script.

------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  04/08/2017   - Doug Le Tough   - Cre : Mise en production
 1.0.1  12/11/2017   - Doug Le Tough   - Evo : Prise en charge du dump InfluxDB
 1.1.0  24/12/2017   - Doug Le Tough   - Evo : Les dumps des bases Postgres sont indépendants les uns des autres
 1.1.1  01/01/2018   - Doug Le Tough   - Evo : Le dump de la base InfluxDB ne sauvegarde que les données des deux
                                               derniers mois (moins d'espace disque requis)
 2.0.0  27/01/2018   - Doug Le Tough   - Evo : Support pour plusieurs hôtes destinataires des backups (BACKUP_HOSTS)
 3.0.0  17/03/2019   - Doug Le Tough   - Evo : Utilisation de borgbackup
 3.0.1  22/05/2019   - Doug Le Tough   - Evo : postgres user needs password + BORG_BASE_PATH
 3.0.2  22/05/2019   - Doug Le Tough   - Evo : BORG_EXCLUDE_PATH

------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_backup_all_vm.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Se connecte sur chacune des VM définies dans TETALAB_VM et lance, en tant que root, borg sur les chemins à
 sauvegarder définis dans le fichier de configuration.

 Le script détermine de lui même si la sauvegarde doit être incrementielle ou complète en fonction du jour de
 la semaine et du jour du mois.

 - Si le jour de la semaine n'est pas un dimanche, alors la sauvegarde sera incrémentielle
 - Si le jour de la semaine est dimanche, la sauvegarde sera incrémentielle *et* complète.
 - Si le jour est le 1er du mois, le script archive la dernière sauvegarde complète.
 - Le script conserve les archives le nombre de jours défini par BACKUP_ARCHIVE_RETENTION.

 Dump les bases de données postgres dans PG_TMP_DUMP_DIR et influxDB dans INFLUX_TMP_DUMP_DIR
 avant de déplacer les dumps dans /home/asr de respectivement INFLUX_HOST et PG_HOST.

 Chaque entrée dans TETALAB_VM doit être de la forme:

   TETALAB_VM[INDEX]="NOM_VM:/PATH/TO/DOCS /OTHER/PATH/TO/DOCS /YET/ANOTHER/PATH/TO/DOCS"

 Les chemins spécifiés *doivent* être des chemins absolus et peuvent être indifféremment des répertoires ou des
 fichiers.

 Les définitions des VM doivent être encadrées de double-quotes, les chemins doivent être séparés
 par une espace et le nom de la VM séparé des chemins par le symbole "deux-points" (:).
  

sys_block_bot.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_block_bot.sh
 Auteur         : Doug Le Tough
 Date           : 25-10-2018
 Version        : 1.0.1
 Objet          : Récupère les adresses IP du bot dont le nom est passé à l'option -bot et
                  génère les règles iptables adéquates pour le bloquer

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  22/10/2018   - Doug Le Tough   - Cre : Mise en production
 1.0.1  25/10/2018   - Doug Le Tough   - Evo : Affinage critère de sélection

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_block_bot.sh -bot <bot>

  ex:
          sys_block_bot.sh -bot ahrefs

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur Bobby.

 Fonctionnement:
 ---------------
 Parcours l'ensemble des logs d'accès http (*_access.log) contenus dans HTTPD_LOG_DIR et récupère les adresses IP
 correspondantes au motif passé par l'option -bot.
  

sys_block_spam.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_block_spam.sh
 Auteur         : Doug Le Tough
 Date           : 19-05-2019
 Version        : 1.0.0
 Objet          : Récupère les adresses IP des spammers dont la sender address est passée en arguments
                  à l'option -sender et génère les règles iptables correspondantes

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  19/05/2019   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_block_spam.sh -sender <sender>

  ex:
          sys_block_spam.sh -sender @qq.com

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur Billy.

 Fonctionnement:
 ---------------
 Parcours le log ${MAIL_LOG} et récupère les adresses IP des spammers
 correspondantes au motif passé par l'option -sender.
  

sys_check_logs.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_check_logs.sh
 Auteur         : Doug Le Tough
 Date           : 23-09-2017
 Version        : 1.0.0
 Objet          : Vérifie la présence d'erreur dans les logs des scripts et les
                  notifie sur IRC le cas échéant

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  23/09/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_check_logs.sh

  ex:
          sys_check_logs.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Se connecte en SSH sur les VM listées dans le fichier de configuration et vérifie la présence de trace
 d'erreur dans chacun des logs situés dans NC_EXPL_LOG et dont la date de modification est inférieure 4
 à MAX_MTIME.

 Si des erreurs sont constatées, elles sont notifiées sur IRC par IRCBOT sur freenode.net#tetalab
  

sys_create_vhost.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_create_vhost.sh
 Auteur         : Doug Le Tough
 Date           : 26-07-2017
 Version        : 1.1.0
 Objet          : Création d'un VHOST sur le rproxy et sur l'hôte du backend. le rproxy comme le backend
                  sont considérés être des serveurs Apache. Ce script ajoute également le domaine passé
                  en argument de la liste des domaines gérés par Dehydrated.

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  22/07/2017   - Doug Le Tough   - Cre : Mise en production
 1.1.0  26/07/2017   - Doug Le Tough   - Evo : Ajout vérification de la configuration
                                               Ajout création du répertoire du backend

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_create_vhost.sh -domain <FQDN.DOMAIN.TLD> \
                              -backend_host <BACKEND_HOST> \
                              -backend_port <BACKEND_PORT>

  ex: sys_create_vhost.sh -domain pad.tetalab.org -backend_host jimmy.local.tetalab.org -backend_port 9001

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur le rproxy (sousetsuken)

 Fonctionnement:
 ---------------
 Crée le fichier de configuration sur le rproxy à partir du fichiers modèle local_site_template.conf
 ainsi que le fichier de configuration sur l'hôte du backend à partir du fichier modèle remote_site_template.conf.

 Les deux fichiers modèles sont situés dans le répertoire NC_EXPL_MOD.

 Remarque importante: Ce script n'active *PAS* le virtualhost et ne redémarre *PAS* les serveurs Apache.
  

sys_deploy_socle.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_deploy_socle.sh
 Auteur         : Doug Le Tough
 Date           : 22-07-2017
 Version        : 1.0.0
 Objet          : Déploiement du socle Bash à partir du répertoire fourni en option
                  sur la VM dont le nom est passé en option


-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  22/07/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_deploy_socle.sh -vm <VM> -socle_dir <DIR>

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr

 Fonctionnement:
 ---------------
 Installe le socle Bash à partir du répertoire passée en paramètre (socle_dir) sur la VM
 dont le nom est recu en paramètre.
 
  

sys_mass_exec.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_mass_exec.sh
 Auteur         : Doug Le Tough
 Date           : 14-08-2017
 Version        : 1.0.0
 Objet          : Execute la commande passée en argument sur toutes les VM définies
                  dans le fichier de configuration.


-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  14/08/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_mass_exec.sh -cmd <commande> [<arg1> <arg2> ...]

  ex:
          sys_mass_exec.sh -cmd free \\-m

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Se connecte en SSH sur les VM listées dans le fichier de configuration et exécute la commande
 passée en argument de l'option -cmd.

 Les éventuels paramètres nécessaires à la commande à executer sur les VM sont à mettre à la suite de la
 commande tels qu'ils le seraient si la commande devait être executée dans un shell.

 Si la commande à passer nécessite une option précédée d'un - (ex: free -m), les - doivent être *doublement* protégés.
  

sys_nextcloud_sync_users.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_nextcloud_sync_users.sh
 Auteur         : Doug Le Tough
 Date           : 06-03-2018
 Version        : 1.0.2
 Objet          : Synchronise les tables des utilisateurs de Garradin (https://asso.tetalab.org)
                  et de Nextcloud (https://cloud.tetalab.org)

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  02/02/2018   - Doug Le Tough   - Cre : Mise en production
 1.0.1  ??????????   - Doug Le Tough   - Evo : ??????????????????
 1.0.2  06/03/2018   - Doug Le Tough   - Evo : Vérification de la présence de 
                                               la base de données source 
                                               avant traitement

 1.0.3  27/02/2022   - Doug Le Tough   - Evo : Prise en compte de la colonne 
                                               uid_lower
-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_nextcloud_sync_users.sh

  ex:
       sys_nextcloud_sync_users.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr

 Fonctionnement:
 ---------------

 Compare le contenu de la table des utilisateurs de Nextcloud et de Garradin
 et supprime les comptes inutiles puis compare le contenu de la tables des
 utilisaturs de Garradin avec Nextcloud et met à jour les utilisateurs en ajoutant
 les utilisateurs au besoin.

 Les comptes à ne pas modifier sur la destination sont définis dans PRESERVED_ACCOUNTS
 
 Les informations de connexion à la base de données doivent être stockées dans
 le fichier PGPASSFILE sur sousetsuken au format suivant:

 hostname:port:database:username:password
 
 https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html
  

sys_purge_logs.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_purge_logs.sh
 Auteur         : Doug Le Tough
 Date           : 23-09-2017
 Version        : 1.0.0
 Objet          : Purge les logs sur les VM définies dans le fichier de configuration

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  23/09/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_purge_logs.sh

  ex:
          sys_purge_logs.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Se connecte en SSH sur les VM listées dans le fichier de configuration et purge les logs
 situés dans NC_EXPL_LOG et dont la date de modification supérieure à MAX_MTIME.
  

sys_refresh_ref_cron.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_refresh_ref_cron.sh
 Auteur         : Doug Le Tough
 Date           : 24-07-2017
 Version        : 1.0.0
 Objet          : Met à jour le référentiel des jobs cron de l'ensemble de l'infra
                  accessible par https://ref.tetalab.org


-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  24/07/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_refresh_ref_cron.sh [-force true] [-show_only true]

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Récupère l'ensemble des cronjobs des utilisateurs listés dans TETALAB_USERS
 mis en place sur les VM définies dans TETALAB_VM et les enregistre dans la table
 DB_TABLE de la base de données "tetalab_ref".

 À moins que l'option -force soit passée à true, le script ne fait qu'ajouter les nouvelles
 entrées dans la base. Par défaut cette option est positionnée à false, de ce fait
 aucune données n'est supprimée dans la base y compris si le cronjob n'existe plus sur le
 système concernée.

 Lorsqu'un cron job est supprimé, forcer une régénération complète des entrées de la base est
 donc nécessaire (sys_refresh_ref_cron.sh -force true)

 L'option -show_only positionnée à true permet de lister les cronjobs installés sur les VM sans
 les enregistrer dans la base de données.

 Les informations de connexion à la base de données doivent être stockées dans
 le fichier PGPASSFILE sur sousetsuken au format suivant:

 hostname:port:database:username:password
 
 https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html
  

sys_refresh_ref_domains.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_refresh_ref_domains.sh
 Auteur         : Doug Le Tough
 Date           : 12-11-2017
 Version        : 1.0.1
 Objet          : Met à jour le référentiel des sous-domaines de la zone .tetalab.org
                  accessible par https://ref.tetalab.org


-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  29/07/2017   - Doug Le Tough   - Cre : Mise en production
 1.0.1  12/11/2017   - Doug Le Tough   - Evo : Ajout du parametre de configuration SRV_DNS

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_refresh_ref_domains.sh [-force true] [-show_only true]

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Récupère l'ensemble des sous-domaines et CNAME de la zone ZONE listés dans ZONE_FILE
 et les enregistre dans la table DB_TABLE de la base de données "tetalab_ref".

 À moins que l'option -force soit passée à true, le script ne fait qu'ajouter les nouvelles
 entrées dans la base. Par défaut cette option est positionnée à false, de ce fait
 aucune données n'est supprimée dans la base y compris si le sous-domaine n'existe plus.

 Lorsqu'un sous-domaine est supprimé, forcer une régénération complète des entrées de la base est
 donc nécessaire (sys_refresh_ref_domains.sh -force true)

 L'option -show_only positionnée à true permet de lister les sous-domaines sans
 les enregistrer dans la base de données.

 Les informations de connexion à la base de données doivent être stockées dans
 le fichier PGPASSFILE sur sousetsuken au format suivant:

 hostname:port:database:username:password
 
 https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html
  

sys_refresh_ref_git.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_refresh_ref_git.sh
 Auteur         : Doug Le Tough
 Date           : 29-06-2019
 Version        : 2.0.0
 Objet          : Met à jour le référentiel des dépôts Git accessible par https://ref.tetalab.org


-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  31/07/2017   - Doug Le Tough   - Cre : Mise en production
 1.0.1  14/08/2017   - Doug Le Tough   - Evo : Les retours à la ligne dans la description ne sont plus remplacés
                                               par des espaces
 2.0.0  29/06/2019   - Doug Le Tough   - Evo : Utilise l'API Gitea
-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_refresh_ref_git.sh [-force true] [-show_only true]

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Récupère l'ensemble des dépôts git à partir de l'API Gitea sur GITEA_API_BASE_URL.

 À moins que l'option -force soit passée à true, le script ne fait qu'ajouter les nouvelles
 entrées dans la base. Par défaut cette option est positionnée à false, de ce fait
 aucune données n'est supprimée dans la base y compris si le sous-domaine n'existe plus.

 Lorsqu'un dépôt Git est supprimé, forcer une régénération complète des entrées de la base est
 donc nécessaire (sys_refresh_ref_git.sh -force true)

 L'option -show_only positionnée à true permet de lister les dépôts sans
 les enregistrer dans la base de données.

 Les informations de connexion à la base de données doivent être stockées dans
 le fichier PGPASSFILE sur sousetsuken au format suivant:

 hostname:port:database:username:password
 
 https://www.postgresql.org/docs/10.2/static/libpq-pgpass.html
  

sys_refresh_ref_pkg.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_refresh_ref_pkg.sh
 Auteur         : Doug Le Tough
 Date           : 26-07-2017
 Version        : 1.0.0
 Objet          : Met à jour le référentiel des paquets installés de l'ensemble de l'infra
                  accessible par https://ref.tetalab.org


-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  26/07/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_refresh_ref_pkg.sh [-force true] [-show_only true]

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Récupère la liste des paquets installés sur les VM définies dans TETALAB_VM et les enregistre dans la table
 DB_TABLE de la base de données "tetalab_ref".

 À moins que l'option -force soit passée à true, le script ne fait qu'ajouter les nouvelles
 entrées dans la base. Par défaut cette option est positionnée à false, de ce fait
 aucune données n'est supprimée dans la base y compris si le paquet n'est plus installé sur le
 système concernée.

 Lorsqu'un paquet est supprimé, forcer une régénération complète des entrées de la base est
 donc nécessaire (sys_refresh_ref_pkg.sh -force true)

 L'option -show_only positionnée à true permet de lister les paquets installés sur les VM sans
 les enregistrer dans la base de données.

 Les informations de connexion à la base de données doivent être stockées dans
 le fichier PGPASSFILE sur sousetsuken au format suivant:

 hostname:port:database:username:password
 
 https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html
  

sys_refresh_ref_script.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_refresh_ref_script.sh
 Auteur         : Doug Le Tough
 Date           : 24-12-2017
 Version        : 1.0.1
 Objet          : Met à jour le référentiel des dépôts Git accessible par https://ref.tetalab.org


-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  06/08/2017   - Doug Le Tough   - Cre : Mise en production
 1.0.1  24/12/2017   - Doug Le Tough   - Evo : Meilleure lisibilité du log

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_refresh_ref_script.sh [-force true] [-show_only true]

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Récupère la documentation de l'ensemble des scripts situés dans NC_EXPL_BIN.

 À moins que l'option -force soit passée à true, le script ne fait qu'ajouter les nouvelles
 entrées dans la base. Par défaut cette option est positionnée à false, de ce fait
 aucune données n'est supprimée dans la base y compris si le sous-domaine n'existe plus.

 Lorsqu'un script est supprimé, forcer une régénération complète des entrées de la base est
 donc nécessaire (sys_refresh_ref_git.sh -force true)

 L'option -show_only positionnée à true permet de lister les dépôts sans
 les enregistrer dans la base de données.

 Les informations de connexion à la base de données doivent être stockées dans
 le fichier PGPASSFILE sur sousetsuken au format suivant:

 hostname:port:database:username:password
 
 https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html
  

sys_refresh_ref_sites.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_refresh_ref_sites.sh
 Auteur         : Doug Le Tough
 Date           : 12-11-2017
 Version        : 1.0.2
 Objet          : Met à jour le référentiel des sites Internet hébergés par le Tetalab
                  accessible par https://ref.tetalab.org


-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  29/07/2017   - Doug Le Tough   - Cre : Mise en production
 1.0.1  07/10/2017   - Doug Le Tough   - Evo : Prend en charge RPROXY_HOST
 1.0.2  12/11/2017   - Doug Le Tough   - Bug : Correction RegExp find

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_refresh_ref_sites.sh [-force true] [-show_only true]

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Récupère la liste des sites, actifs ou non, hébergés par le Tetalab et les enregistre dans
 la table DB_TABLE de la base de données "tetalab_ref".

 Certains sites pouvant avoir une configuration particulière (ie. slackware.tetalab.org.conf), il est
 possible de les exclure de la recherche en les ajoutant au tableau EXCLUDE défini dans le fichier
 de configuration.

 À moins que l'option -force soit passée à true, le script ne fait qu'ajouter les nouvelles
 entrées dans la base. Par défaut cette option est positionnée à false, de ce fait
 aucune données n'est supprimée dans la base y compris si le site n'existe plus.

 Lorsqu'un site est supprimé, forcer une régénération complète des entrées de la base est
 donc nécessaire (sys_refresh_ref_sites.sh -force true)

 L'option -show_only positionnée à true permet de lister les sites sans
 les enregistrer dans la base de données.

 Les informations de connexion à la base de données doivent être stockées dans
 le fichier PGPASSFILE sur sousetsuken au format suivant:

 hostname:port:database:username:password
 
 https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html
  

sys_refresh_socle_bash.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_refresh_socle_bash.sh
 Auteur         : Doug Le Tough
 Date           : 23-07-2017
 Version        : 1.0.0
 Objet          : Permet la mise à jour de l'installation du socle bash
                  sur les VM du Tetalab

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  23/07/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_refresh_socle_bash.sh

  ex:
       sys_refresh_socle_bash.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Sur sousetsuken: Supprime la copie locale du dépôt Git du socle Bash, clone le dépôt Git dont l'URL est
 définie dans le fichier de configuration (SOCLE_GIT_URL) et installe le socle Bash.

 Puis, copie, sur l'ensemble des VM listées dans le fichier de configuration (TETALAB_VM[*]),
 le dépot Git local du socle Bash et l'installe.
  

sys_refresh_ssl_certs.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_refresh_ssl_certs.sh
 Auteur         : Doug Le Tough
 Date           : 21-07-2018
 Version        : 1.0.0
 Objet          : Script de renouvellement des certificats SSL des sites Internet

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  16/12/2017   - Doug Le Tough   - Cre : Mise en production
 1.0.1  21/07/2018   - Doug Le Tough   - Bug : renew_certs et restart_httpd: Les erreurs n'étaient pas remontées 

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_refresh_ssl_certif.sh [ -force true ]

  ex:
       sys_refresh_ssl_certif.sh -force true

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr

 Fonctionnement:
 ---------------
 Renouvelle les certificats SSL à l'aide de dehydrated et redémarre le service HTTP surle 
 reverse proxy défini dans le fichier de configuration par RPROXY_HOST.

 L'option -force permet de forcer le renouvellement des certificats y compris lorsque ceux-ci
 sont encore valide. L'option -force est positionnée à false par défaut.
  

sys_refresh_tetalab_ref.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_refresh_tetalab_ref.sh
 Auteur         : Doug Le Tough
 Date           : 14-08-2017
 Version        : 1.0.0
 Objet          : Permet la mise à jour du site du référentiel de l'infrastructure 
                  accessible via https://ref.tetalab.org

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  14/08/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_refresh_tetalab_ref.sh

  ex:
       sys_refresh_tetalab_ref.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Clone le dépôt du site du référentiel à partir de REF_GIT_URL et le copie dans REF_SITE_DIR sur
 REF_BACKEND_VM puis redémarre le service HTTPD de REF_BACKEND_VM.
  

sys_refresh_tetalab_scripts.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_refresh_tetalab_scripts.sh
 Auteur         : Doug Le Tough
 Date           : 26-07-2017
 Version        : 1.0.0
 Objet          : Permet la mise à jour de l'installation des scripts de gestion de l'infrastructure
                  sur les VM du Tetalab

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  26/07/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_refresh_tetalab_scripts.sh

  ex:
       sys_refresh_tetalab_scripts.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr sur sousetsuken

 Fonctionnement:
 ---------------
 Sur sousetsuken: Supprime la copie locale du dépôt Git des scripts de gestion de l'infrastructure, clone le
 dépôt Git dont l'URL est définie dans le fichier de configuration (SCRIPTS_GIT_URL) et installe les scripts.

 Puis, copie, sur l'ensemble des VM listées dans le fichier de configuration (TETALAB_VM[*]),
 le dépot Git local des scripts et les installent.
  

sys_tetastock_sync_users.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_tetastock_sync_users.sh
 Auteur         : Doug Le Tough
 Date           : 27-10-2017
 Version        : 1.0.0
 Objet          : Synchronise les tables des utilisateurs de Garradin (https://asso.tetalab.org)
                  et de Tetastock (https://stock.tetalab.org)

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  27/10/2017   - Doug Le Tough   - Cre : Mise en production

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_tetastock_sync_users.sh

  ex:
       sys_tetastock_sync_users.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr

 Fonctionnement:
 ---------------

 Compare le contenu de la table des utilisateurs de Tetastock et de Garradin
 et supprime les comptes inutiles puis compare le contenu de la tables des
 utilisaturs de Garradin et met à jour les utilisateurs en ajoutant les utilisateurs
 au besoin.

 Les informations de connexion à la base de données doivent être stockées dans
 le fichier PGPASSFILE sur sousetsuken au format suivant:

 hostname:port:database:username:password
 
 https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html
  

sys_wemakethsf_sync_users.sh

-----------------------------------------------------------------------------------------------------------------
 Script         : sys_wemakethsf_sync_users.sh
 Auteur         : Doug Le Tough
 Date           : 06-03-2018
 Version        : 1.1.0
 Objet          : Synchronise la liste des membres de la liste de diffusion thsf_staff (mailman: thsf_staff@tetalab.org)
                  avec la liste des utilisateurs enregistrés sur wemake.thsf.net (https://wemake.thsf.net)

-----------------------------------------------------------------------------------------------------------------
 Mise a jour :

 1.0.0  06/03/2017   - Doug Le Tough   - Cre : Mise en production
 1.1.0  15/04/2018   - Doug Le Tough   - Evo : Ajout d'une liste d'exclusion 

-----------------------------------------------------------------------------------------------------------------

 Syntaxe :
 --------

  prompt> sys_wemakethsf_sync_users.sh

  ex:
       sys_wemakethsf_sync_users.sh

 Prérequis:
 ----------
 - Le script doit être executé par l'utilisateur asr

 Fonctionnement:
 ---------------

 Compare le contenu de la table des utilisateurs de wemake.thsf.net et la liste des membres
 enregistrés sur la liste de diffusion <THSF_LIST> et faits les ajouts/suppression de comptes
 nécessaires.

 Si l'adresse mail de l'utilisateur fait partie de EXCLUDE_USERS, alors son compte n'est pas synchronisé.

 Les informations de connexion à la base de données doivent être stockées dans
 le fichier PGPASSFILE sur sousetsuken au format suivant:

 hostname:port:database:username:password
 
 https://www.postgresql.org/docs/9.6/static/libpq-pgpass.html