AusweisBot est un logiciel libre permettant de générer pendant la pandémie de covid-19 une attestation dérogatoire de déplacement en France à travers le réseau de communication Telegram.
AusweisBot est écrit en Scala et utilise notamment l'intergiciel Akka, la bibliothèque bots4s.telegram, la bibliothèque Apache PDFBox et la bibliothèque ZXing. Vous pouvez utiliser le gestionnaire de tickets et de pull requests de GitHub pour faire des remarques sur des fonctionnalités ou proposer des changements.
Est-ce que AusweisBot stocke des données à caractère personnel ?
AusweisBot conserve les seules données strictement nécessaires à la génération
des attestations dérogatoires de sortie. Les données stockées peuvent être
consultées à tout moment en utilisant la commande /data
et effacées avec la
commande /start
.
Cette politique de gestion des données est détaillée dans le résultat de la
commande /privacy
qui peut être utilisée à tout moment, notamment avant la collecte
des données personnelles.
Pourquoi ce nom ?
« Nous sommes en guerre » (Emmanuel Macron, 16 mars 2020)
« Ausweis » est un mot allemand signifiant « pièce d'identité ». Il était utilisé lors de la dernière guerre mondiale pour désigner les laissez-passer dérogatoires dont la présentation était obligatoire pour pouvoir circuler. Et puis cela permet de court-circuiter la loi de Godwin avant même de commencer la discussion.
Quelles garanties apportez-vous ?
Pour être clair : aucune. Ce logiciel ainsi que le service en ligne associé ont pour but de faciliter, sous votre propre responsabilité, la création d'une attestation dérogatoire de déplacement conforme à ce qu'exige la réglementation. C'est à vous de vous assurer que les informations qui figurent sur le document sont exactes. Le plus grand soin a également été apporté au contenu du QR-code contenu dans l'attestation afin de permettre une lecture sans contact du document par les forces de l'ordre afin de préserver la santé de chacun, mais là aussi, l'utilisation du QR-code lors d'un contrôle se fait sous la seule responsabilité de l'utilisateur.
AusweisBot est-il utilisable dans les territoires d'outre-mer ?
AusweisBot est avant tout destiné à la France métropolitaine : Telegram ne fournit aucune information sur la localisation de l'utilisateur ou le fuseau horaire dans lequel il se trouve. On suppose donc que l'utilisateur se trouve, par défaut, en France métropolitaine.
Cela n'empêche pas d'utiliser AusweisBot depuis les territoires d'outre-mer en spécifiant un horaire explicite. Toutefois, une attention particulière devra être apportée à l'examen du document produit pour s'assurer que tout est en ordre.
Cela permet-il de sortir dans plus de cas ou plus souvent ?
Non, AusweisBot permet simplement de générer les attestations dérogatoires de déplacement tel que vous le feriez avec l'attestation papier ou le générateur d'attestation mis à disposition par le ministère de l'intérieur. Restez chez vous !
Puis-je déployer mon propre bot à partir du code source de AusweisBot sur Telegram ?
Bien entendu, du moment que vous respectez les termes des licenses des logiciels et données utilisés (cf. ci-dessous). De plus, vous devez vous assurer que les informations permettant de vous contacter sont à jour.
Que pensez-vous du principe de cette attestation dérogatoire de déplacement ?
Peu importe ce que j'en pense, la présentation d'un document attestant d'une raison valable de sortie est rendue obligatoire par l'article 4 du décret n° 2020-1310 du 29 octobre 2020. Pour limiter les contacts lors du contrôle, il me semble plus simple de présenter une attestation identique à ce que propose le service en ligne du ministère de l'intérieur en y incluant un QR-code incorporant le même contenu.
Pourquoi Scala et pas rust, elixir, etc. ?
La bibliothèque Apache PDFBox écrite pour Java (et donc disponible directement en Scala) permet une manipulation facile du fichier PDF contenant l'attestation. De plus, Akka facilite la supervision et la reprise sur faute, notamment en cas de défaillance temporaire des serveurs Telegram ou en cas de perte de connectivité de l'ordinateur sur lequel le service est hébergé.
Pourquoi Scala 2.12 et pas Scala 2.13 ?
La bibliothèque bots4s.telegram n'est pas à ce jour disponible
pour Scala 2.13 car elle utilise une dépendance (slogging
) qui n'est plus maintenue et n'a
jamais été adaptée pour Scala 2.13.
AusweisBot est distribué sous les termes de la licence GNU Affero Public License version 3.0.
Pour faciliter la saisie du lieu de confinement, ce logiciel utilise une liste des communes de France et de leurs codes postaux qui s'accompagne de la licence suivante :
Ce(tte) œuvre de https://sql.sh est mise à disposition selon les termes de la licence Creative Commons Attribution – Partage dans les Mêmes Conditions 4.0 International.
Vous êtes libre de partager, distribuer ou utiliser cette base de données, pour des utilisations commerciales ou non, à condition de conserver cette licence et d’attribuer un lien vers le site sql.sh.
Vous aurez besoin d'un ordinateur avec une connectivité permanente à Telegram pour faire tourner votre version du bot. Il vous faudra également créer un jeton d'authentification du bot auprès du gestionnaire de robots BotFather.
Vous aurez besoin de sbt
pour compiler et lancer ce programme.
Le fichier de configuration se trouve dans src/main/resources/application.conf
. Il vous
faudra a minima remplir l'entrée ausweis.telegram-token
avec le jeton d'authentification
fourni par BotFather et ausweis.contact-email
avec votre adresse mail de contact pour la gestion
des données personnelles. Vous pouvez préférer placer ces informations dans un fichier à la
racine de votre dépôt et le passer en premier argument du programme.
Par défaut, le programme se connecte à une base de données CouchDB tournant localement sur le port par défaut en mode non protégé. Il faut donc n'autoriser que des connexions locales, ou utiliser des conteneurs (cf. ci-dessous).
Vous pouvez lancer le bot avec la commande run
(ou run configuration-file
) de sbt
.
Un fichier de configuration pour
docker-compose est fourni à la racine
du dépôt, auquel cas seuls docker
et docker-compose
sont strictement nécessaires.
Pour lancer votre instance du bot, il vous faut d'abord créer un fichier
de configuration .env
à la racine du dépôt contenant a minima
TELEGRAM_TOKEN=le-token-donné-par-BotFather
et
CONTACT_EMAIL=votre-adresse-mail-de-contact
. Vous pouvez ensuite générer
les conteneurs avec docker-compose build
puis les lancer avec
docker-compose up
.
Vous pouvez aussi récupérer automatiquement la dernière version officielle des conteneurs à partir de DockerHub, et lancer le tout en tâche de fond grâce aux commandes
$ docker-compose pull
$ docker-compose up -d
Dans ce cas, vous n'avez besoin de rien d'autre que le fichier .env
que vous avez créé
et le fichier docker-compose.yml
se trouvant à la racine du dépôt.
La liste des commandes à donner à BotFather pour générer la complétion automatique peut être générée en faisant à l'aide :
- soit de
sbt genCommands
lorsqu'on compile depuis les sources, qui générera un fichiercommands.txt
dans le répertoire courant ; - soit de la commande
docker run --rm rfc1149/ausweisbot cat commands.txt
pour les utilisateurs de Docker