Pour faciliter la réception de SMS sur un numero mobile commun par différent.e.s membres de l'association, un numéro virtuel a été mis en place sur Vonage. Ensuite, un webhook a été développé et déployé.
Utilisation
- Renseigner le numero virtuel Vonage pour l'utilisation souhaitée
- Chaque SMS recu sera diffusé par email dans les secondes suivantes sur les listes adminsys et CA
Interface technique Vonage
La partie technique côté Vonage est décrite ici.
Sur le compte Vonage, l'url specifique du webhook Nos Oignons est renseignée.
Interface technique Nos Oignons
Un script /srv/relayor/relayor.py
utilisant Python et Flask met a disposition sur Bulbe un URL de réception des SMS.
Apres contrôle de la clef API et d'autres parametres de sécurité, le script transmet le contenu du SMS, son expediteur et l'horodatage aux listes de diffusion configurées.
L'utilisateur relayor
a été créé pour faire tourner cet utilitaire :
adduser --system --group --home /srv/relayor relayor
Un service systemd a été ajouté dans /etc/systemd/system
:
# /etc/systemd/system/relayor.service
[Unit]
Description=Relayor Flask service for Vonage SMS
Requires=network-online.target
After=network-online.target
[Service]
Type=simple
SyslogIdentifier=%p
EnvironmentFile=-/etc/default/%p
User=relayor
ExecStart=/usr/bin/python3 /srv/relayor/relayor.py
Restart=on-failure
RestartSec=5
# The service gets its own instance of {/var,}/tmp
PrivateTmp=true
# Makes /usr, /boot and /etc read-only
ProtectSystem=full
# Prevents access to /home, /root and /run/user
ProtectHome=true
CapabilityBoundingSet=
NoNewPrivileges=false
InaccessibleDirectories=/srv/association /srv/awstats /srv/git /srv/http
InaccessibleDirectories=/srv/ikiwiki /srv/mailman
InaccessibleDirectories=/srv/postgresql /srv/schleuder
[Install]
WantedBy=multi-user.target
Ainsi le script relayor.py sera lancé au boot une fois le réseau obtenu.
Configuration nginx
Le fichier de conf sites-enabled
de nginx a ete adapté pour Vonage:
#Relayor / Vonage
location /relayor {
rewrite ^/relayor/(.*) /$1 break;
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;