]> 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 48ab9a22d7a45f4dab93a149ef9273bb2468bbbb..123a38ad591bc0d6749230ce815fb0efcd8fec1b 100644 (file)
--- a/README
+++ b/README
@@ -100,13 +100,21 @@ 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`
 ---------------------------
 
-Préviens les membres qu'il faut renouveller leur cotisation.
+Préviens les membres qu'il faut renouveler leur cotisation.
 
 Le fichier utilisé pour garder la liste des envois déjà effectués est soit
 celui indiqué par la variable d'environnement `NOS_OIGNONS_REMINDER_DB`, soit
 
 Le fichier utilisé pour garder la liste des envois déjà effectués est soit
 celui indiqué par la variable d'environnement `NOS_OIGNONS_REMINDER_DB`, soit
@@ -145,26 +153,24 @@ Développement
 L'essentiel du code est en Ruby. Les dépendances sont gérées avec Bundler. Les
 tests d'intégrations sont faits avec Cucumber.
 
 L'essentiel du code est en Ruby. Les dépendances sont gérées avec Bundler. Les
 tests d'intégrations sont faits avec Cucumber.
 
-Installer les paquets Debian qui vont bien (sur Wheezy) :
+Installer les paquets Debian qui vont bien (sur Jessie) :
 
 
-    apt-get install ruby1.9.1 bundler
+    apt-get install bundler
 
 Pour récupérer les dépendances :
 
 
 Pour récupérer les dépendances :
 
-    ruby1.9.1 /usr/bin/bundle install --path=vendor/bundle
+    bundle install --path=vendor/bundle
 
 Déploiement
 ===========
 
 Installer les paquets Debian qui vont bien (sur Wheezy) :
 
 
 Déploiement
 ===========
 
 Installer les paquets Debian qui vont bien (sur Wheezy) :
 
-    apt-get install ruby1.9.1 bundler
+    apt-get install bundler
 
 Installer les dépendances :
 
 
 Installer les dépendances :
 
-    ruby1.9.1 /usr/bin/bundle install --deployment \
-                                      --without=development \
-                                      --path=vendor/bundle
+    bundle install --deployment --without=development --path=vendor/bundle
     chmod -R o+rX vendor/bundle
 
 Il faut donner les droits d'écriture à `wiki-ca` sur le répertoire `var`.
     chmod -R o+rX vendor/bundle
 
 Il faut donner les droits d'écriture à `wiki-ca` sur le répertoire `var`.
@@ -178,29 +184,106 @@ 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` :
 
 
-    Defaults:wiki-ca !requiretty
+    [Unit]
+    Description=Send reminders to renew membership
 
 
-    Cmnd_Alias AG_MANAGEMENT = /usr/sbin/list_members ag,\
-                               /usr/sbin/add_members -r - ag,\
-                               /usr/sbin/remove_members -f - ag
+    [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
 
 
-    wiki-ca ALL = (list) NOPASSWD: AG_MANAGEMENT
+Dans `/etc/systemd/system/gestion-adh-send-membership-reminders.timer` :
 
 
-Ensuite, pour exécuter régulièrement les scripts via le *crontab* du compte
-`wiki-ca`, il faut y ajouter :
+    [Unit]
+    Description=Run send-membership-reminders every day
 
 
-    42 * * * * BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile NOS_OIGNONS_BOARD_WIKI_PATH=/srv/ikiwiki/wiki-ca/src ruby1.9.1 /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 ruby1.9.1 /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 ruby1.9.1 /srv/ikiwiki/wiki-ca/gestion-adh/bin/send-member-emails-to-advisors
+    [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
+
+    [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
+
+Dans `/etc/systemd/system/gestion-adh-send-member-emails-to-advisors.timer` :
+
+    [Unit]
+    Description=Run send-member-emails-to-advisors monthly
+
+    [Timer]
+    OnCalendar=monthly
+
+    [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` :
 
-    if ! BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile ruby1.9.1 /srv/ikiwiki/wiki-ca/gestion-adh/bin/pre-commit-hook; then
+    if ! BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile /srv/ikiwiki/wiki-ca/gestion-adh/bin/pre-commit-hook; then
             # Reset changes that do not pass the pre-commit hook to prevent
             # wrong changes to lay in the Ikiwiki source directory.
             git reset --hard
             # Reset changes that do not pass the pre-commit hook to prevent
             # wrong changes to lay in the Ikiwiki source directory.
             git reset --hard
@@ -213,8 +296,23 @@ Pour installer le `pre-receive` *hook* sur le dépôt central, on met dans
 `/srv/git/.gitolite/hooks/wiki-ca/hooks/pre-receive` :
 
     #!/bin/sh
 `/srv/git/.gitolite/hooks/wiki-ca/hooks/pre-receive` :
 
     #!/bin/sh
-    BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile ruby1.9.1 /srv/ikiwiki/wiki-ca/gestion-adh/bin/pre-receive-hook
+    BUNDLE_GEMFILE=/srv/ikiwiki/wiki-ca/gestion-adh/Gemfile /srv/ikiwiki/wiki-ca/gestion-adh/bin/pre-receive-hook
 
 Ne pas oublier de le rendre exécutable. Il faut ensuite faire un lien symbolique :
 
     ln -s ../../../.gitolite/hooks/wiki-ca/pre-receive /srv/git/repositories/wiki-ca.git/hooks/pre-receive
 
 Ne pas oublier de le rendre exécutable. Il faut ensuite faire un lien symbolique :
 
     ln -s ../../../.gitolite/hooks/wiki-ca/pre-receive /srv/git/repositories/wiki-ca.git/hooks/pre-receive
+
+Licences
+========
+
+Système de gestion des adhésions de Nos oignons  
+Copyright © 2013-2014 Nos oignons <contact@nos-oignons.net>  
+Licence : GNU AGPLv3 ou ultérieur, voir `LICENCE`
+
+Police OpenSans  
+Copyright © 2010-2011, Google Corporation  
+Licence : Apache 2.0, voir `share/fonts/OpenSans/Apache-2.0`
+
+Logo Nos oignons  
+Copyright © 2013 lutopiquant  
+Licence : CC BY-SA 3.0 FR, voir <https://creativecommons.org/licenses/by-sa/3.0/fr/deed.fr>