]> nos-oignons.net Git - gestion-adh.git/blobdiff - README
Switch to Mailman 3 REST API for “ag” subscriptions
[gestion-adh.git] / README
diff --git a/README b/README
index 71c969fd061d39aa0e09b1451ed7ba1ccdc9d667..123a38ad591bc0d6749230ce815fb0efcd8fec1b 100644 (file)
--- a/README
+++ b/README
@@ -100,8 +100,16 @@ le dépôt central du wiki du C.A. (via un lien symbolique dans
 
 Met à jour la liste des adresses email inscrites à la liste *ag@* par rapport
 aux membres à jour de cotisation. À exécuter à travers un *cron*. A besoin de
 
 Met à jour la liste des adresses email inscrites à la liste *ag@* par rapport
 aux membres à jour de cotisation. À exécuter à travers un *cron*. A besoin de
-pouvoir lancer les commandes `list_members`, `add_members` et `remove_members`
-via `sudo` sur le compte `list`.
+pouvoir se connecter à l’API REST de Mailman 3.
+
+La variable d’environnement suivante doit être
+définie `NOS_OIGNONS_MAILMAN_REST_API_URL` avec par exemple :
+`https://user:password@mailman.example.org`
+
+À défaut, cette dernière sera lue depuis le fichier `mailman-rest-url`
+dans le dossier indiqué par la variable d’environnemnet `CREDENTIALS_DIRECTORY`
+(voir [System and Service Credentials](https://systemd.io/CREDENTIALS/) et
+la procédure de déploiement indiqué plus bas).
 
 `send-membership-reminders`
 ---------------------------
 
 `send-membership-reminders`
 ---------------------------
@@ -176,24 +184,101 @@ Pour rendre facilement accessible `list-members-emails`, on peut ajouter dans
 
 Ne pas oublier de le rendre exécutable.
 
 
 Ne pas oublier de le rendre exécutable.
 
-Pour permettre au script `update-ag-subscribers` de fonctionner, il est
-nécessaire de l'autoriser à exécuter certaines commandes de Mailman.
-Pour cela, on va créer un fichier dans `/etc/sudoers.d` :
+On va utiliser des
+[services](https://www.freedesktop.org/software/systemd/man/systemd.service.html)
+et des [timers](https://www.freedesktop.org/software/systemd/man/systemd.timer.html)
+systemd pour les scripts à utiliser régulièrement.
+
+Dans `/etc/systemd/system/gestion-adh-update-ag-subscribers.service` :
+
+    [Unit]
+    Description=Update subscribers of the `ag` mailing list according to memberships
+
+    [Service]
+    Type=oneshot
+    WorkingDirectory=/srv/ikiwiki/wiki-ca/gestion-adh
+    User=wiki-ca
+    ExecStart=/srv/ikiwiki/wiki-ca/gestion-adh/bin/update-ag-subscribers
+    Environment=BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile NOS_OIGNONS_BOARD_WIKI_PATH=/srv/ikiwiki/wiki-ca/src
+    SyslogIdentifier=update-ag-subscribers
+    ProtectSystem=strict
+    ProtectHome=true
+    PrivateTmp=yes
+    PrivateDevices=yes
+
+Dans `/etc/systemd/system/gestion-adh-update-ag-subscribers.timer` :
+
+    [Unit]
+    Description=Run update-ag-subscribers every hour
+
+    [Timer]
+    RandomizedDelaySec=30min
+    OnCalendar=hourly
+
+    [Install]
+    WantedBy=timers.target
+
+Il est également nécessaire de configurer le *credential* avec les informations
+de connexion à Mailman :
+
+    echo -n 'https://USER:SECRET_PASSWORD@localhost:8001' | sudo systemd-creds encrypt --name=mailman-rest-url -p - - | sudo tee -a /etc/systemd/system/gestion-adh-update-subscribers.service.d/overrides.conf
+
+Dans `/etc/systemd/system/gestion-adh-send-membership-reminders.service` :
+
+    [Unit]
+    Description=Send reminders to renew membership
+
+    [Service]
+    Type=oneshot
+    WorkingDirectory=/srv/ikiwiki/wiki-ca/gestion-adh
+    User=wiki-ca
+    ExecStart=/srv/ikiwiki/wiki-ca/gestion-adh/bin/send-membership-reminders
+    Environment=BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile NOS_OIGNONS_BOARD_WIKI_PATH=/srv/ikiwiki/wiki-ca/src
+    SyslogIdentifier=send-membership-reminders
+    ProtectSystem=strict
+    ProtectHome=true
+    PrivateTmp=yes
+    PrivateDevices=yes
+    ReadWritePaths=/srv/ikiwiki/wiki-ca/gestion-adh/var
+
+Dans `/etc/systemd/system/gestion-adh-send-membership-reminders.timer` :
+
+    [Unit]
+    Description=Run send-membership-reminders every day
+
+    [Timer]
+    OnCalendar=06:42
+
+    [Install]
+    WantedBy=timers.target
+
+Dans `/etc/systemd/system/gestion-adh-send-member-emails-to-advisors.service` :
+
+    [Unit]
+    Description=Send member emails to the advisory board
 
 
-    Defaults:wiki-ca !requiretty
+    [Service]
+    Type=oneshot
+    WorkingDirectory=/srv/ikiwiki/wiki-ca/gestion-adh
+    User=wiki-ca
+    ExecStart=/srv/ikiwiki/wiki-ca/gestion-adh/bin/send-member-emails-to-advisors
+    Environment=BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile NOS_OIGNONS_BOARD_WIKI_PATH=/srv/ikiwiki/wiki-ca/src
+    SyslogIdentifier=send-member-emails-to-advisors
+    ProtectSystem=strict
+    ProtectHome=true
+    PrivateTmp=yes
+    PrivateDevices=yes
 
 
-    Cmnd_Alias AG_MANAGEMENT = /usr/sbin/list_members ag,\
-                               /usr/sbin/add_members -r - ag,\
-                               /usr/sbin/remove_members -f - ag
+Dans `/etc/systemd/system/gestion-adh-send-member-emails-to-advisors.timer` :
 
 
-    wiki-ca ALL = (list) NOPASSWD: AG_MANAGEMENT
+    [Unit]
+    Description=Run send-member-emails-to-advisors monthly
 
 
-Ensuite, pour exécuter régulièrement les scripts via le *crontab* du compte
-`wiki-ca`, il faut y ajouter :
+    [Timer]
+    OnCalendar=monthly
 
 
-    42 * * * * BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile NOS_OIGNONS_BOARD_WIKI_PATH=/srv/ikiwiki/wiki-ca/src /srv/ikiwiki/wiki-ca/gestion-adh/bin/update-ag-subscribers
-    42 6 * * * BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile NOS_OIGNONS_BOARD_WIKI_PATH=/srv/ikiwiki/wiki-ca/src /srv/ikiwiki/wiki-ca/gestion-adh/bin/send-membership-reminders
-    21 0 1 * * BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile NOS_OIGNONS_BOARD_WIKI_PATH=/srv/ikiwiki/wiki-ca/src /srv/ikiwiki/wiki-ca/gestion-adh/bin/send-member-emails-to-advisors
+    [Install]
+    WantedBy=timers.target
 
 Pour installer le `pre-commit` *hook* sur le dépôt utilisé par
 Ikiwiki, on met dans `/srv/ikiwiki/wiki-ca/src/.git/hooks/pre-commit` :
 
 Pour installer le `pre-commit` *hook* sur le dépôt utilisé par
 Ikiwiki, on met dans `/srv/ikiwiki/wiki-ca/src/.git/hooks/pre-commit` :