Debian kommuniziert über Threema
In diesem Beitrag soll es darum gehen, wie wir die Grundlagen dafür schaffen können, dass unsere (Debian) Linux Distribution mit Hilfe von Python und dem Threema Gateway eine Kommunikation zu unserem Smartphone Messenger herstellen kann.
Hintergrund des Ganzen ist die spätere Einbindung in openHAB. Grundsätzlich kann das Threema Gateway aber natürlich für beliebig viele weitere Einsatzzwecke genutzt werden, weshalb es in diesem Beitrag keinen konkreten Bezug zu openHAB geben wird.
Warum eigentlich Threema?
Die Entscheidung ist in etwa zu 70% auf Basis einer neutralen Gegenüberstellung der bekannten Messenger Dienste und zu etwa 30% nach persönlichen Vorlieben gefallen. Dazu wird es hier aber in Zukunft noch die konkrete Gegenüberstellung geben.
Schritt 0 – Vorbereitungen
Ich gehe davon aus, dass eine Version von Armbian auf einem Cubieboard installiert und initial konfiguriert wurde. So oder zumindest so ähnlich wie in diesem Beitrag beschrieben. Achtung: Solltet ihr euch gegen das Cubieboard und/oder gegen Armbian entschieden haben, müssen die aufeinander aufbauenden Punkte nicht unbedingt mit eurer Umgebung übereinstimmen. Die nun folgenden Schritte können dann zum Teil gleich, zum Teil leicht abweichend oder komplett anders sein!
Schritt 1 – Python Version systemweit setzen
Für den korrekten Einsatz des Threema Gateways wird von den Herstellern eine Python Version 3 oder höher empfohlen. Welche Python Version auf unserem System gerade standardmäßig konfiguriert ist, erfahren wir durch die Eingabe des Befehls:
python --version
Unter Armbian ist in diesem Fall Python 2.7.9 aktiv.
Das bedeutet allerdings nicht, dass nicht auch weitere Versionen parallel installiert sein können. Wie wir sehen können befinden sich unter dem Pfad /usr/bin weitere Python Versionen.
Stören muss uns das nicht, allerdings ist es ratsam die Version 3.4 priorisiert zu verwenden, damit die spätere Installation des Threema Gateways auch sauber funktioniert. Dazu können wir mit Hilfe des Befehls:
update-alternatives --list python
prüfen ob und wenn ja welche „python alternatives“ eingerichtet sind. Im Falle der verwendeten Armbian Installation sind keine eingerichtet.
Das ändern wir nun mit Hilfe folgender Befehle:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.4 2
Dies führt dazu, dass nun sowohl Python 2.7.9 aber auch Python 3.4.2 verfügbar sind aber so lange keine manuelle Auswahl der Alternative statt findet, immer die Version mit der höchsten Priorität eingesetzt wird. In unserem Fall die Priorität 2 respektive Python 3.4.2.
Wenn wir nun noch einmal die Python Version prüfen, sehen wir, dass die Version 3.4.2 gemeldet wird, wir aber jederzeit die Möglichkeit haben die Python Version über den Befehl:
update-alternatives --config python
wieder zu wechseln.
Schritt 2 – PIP installieren
Um die aktuellste PIP Version zu installieren nutzen wir ein Python Skript mit der frisch eingerichteten Python Version. Dazu sind folgende Befehle nacheinander auszuführen:
cd /tmp/
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
Das Ergebnis sollte dann so aussehen:
Schritt 3 – libsodium Build und Installation
Die Crypto-Bibliothek wird für die asynchrone Verschlüsselung von Threema benötigt und sollte installiert werden bevor man mit der Threema Gateway Installation beginnt. Dazu sind folgende Befehle nacheinander auszuführen:
cd /tmp/
wget https://download.libsodium.org/libsodium/releases/LATEST.tar.gz
tar xfvz LATEST.tar.gz
mv libsodium-1.0.11 libsodium
rm LATEST.tar.gz
cd /tmp/libsodium/
./configure
Der „configure“ Befehl dauert ein wenig länger und sollte nach erfolgreichem Durchlauf so beendet werden:
Nun geht er daran libsodium zu „builden“ und das erstellte Build zu überprüfen. Dazu geben wir folgenden Befehl ein:
make && make check
Die Dauer dieses Vorgangs variiert je nach eingesetzter Hardware. Auf einem Cubieboard mit SSD-Laufwerk dauert es ca. 19 Minuten. Ein Cubieboard mit SD-Karte benötigt dafür z.B. schon gute 22 Minuten. – Zeit für einen frischen Kaffe!
Wichtig ist, dass am Ende alle durchgeführten Tests auch unter „pass“ also bestanden aufgeführt sind, so wie in diesem Beispiel:
Wenn das der Fall ist können wir das Paket nun auf unserer Maschine installieren. Das machen wir mit Hilfe des Befehls:
sudo make install
Im Vergleich zum „make & check“ Vorgang dauert dies nur wenige Sekunden. Wenn auch dieser Vorgang erfolgreich war, können wir noch im Temp Ordner aufräumen und den libsodium Installationsordner wieder löschen. Das passiert mit Hilfe des Befehls:
rm -r /tmp/libsodium
Schritt 4 – Threema Gateway installieren
Hier geht es in Kürze weiter…
Einige Stichworte zu den noch folgenden Schritten:
cd /
sudo pip install git+https://github.com/lgrahl/threema-msgapi-sdk-python.git
cd /usr/local/bin/
sudo ./threema-gateway generate privateKey.txt publicKey.txt
./threema-gateway credits ‚<threema-id>‘ <secret>