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;