X-Git-Url: https://nos-oignons.net/gitweb/gestion-adh.git/blobdiff_plain/01f97846a9919f81d6af6fdd76bdac0fc14572a4..56d63dc536c09e07e7de107a76500ecc92cf7cb7:/README diff --git a/README b/README index 71c969f..123a38a 100644 --- 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 -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` --------------------------- @@ -176,24 +184,101 @@ Pour rendre facilement accessible `list-members-emails`, on peut ajouter dans 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` :