AN00BIS
/dev/comfy
@drfuture: Grundsätzlich gerne Ich muss das Ganze allerdings recht generell berichten, um die Geheimhaltungsvorschriften nicht zu verletzen.
Das Projekt habe ich im Rahmen einer Test IPA (Individuelle Praktische Arbeit. Dabei handelt es sich um die Abschlussarbeit als Informatiker EFZ) durchgeführt. Für den Erfahrungsbericht habe ich einen Teil der Texte aus meiner Projektdokumentation übernommen. Wundert euch also nicht, wenn der Bericht ein wenig mühsam geschrieben ist
1. Projektbeschrieb:
Für die Benachrichtigungen des Monitoring Systems (Ground Work) ausserhalb der Bürozeiten wird als Benachrichtigungsmedium SMS eingesetzt, welche via SMS-Gateway versendet werden. Dieses System soll durch Threema Work abgelöst werden. Im Rahmen des Projekts sollte somit eine Anbindung an den Monitoring Server (M) realisiert werden. Für die Anbindung wurde ein RHEL 7 Server (G) aufgesetzt, welcher als Messaging Gateway dient. Dieser ist für die Kommunikation mit dem Server G und dem Threema Gateway Server (T) zuständig.
2. Vorbereitung:
Im Voraus habe ich mit einem Mitarbeiter der Threema GmbH Kontakt aufgenommen. Dieser war recht begeistert von der Projektidee und somit viel die Zusammenarbeit sehr angenehm aus. Uns wurde eine Threema Work Enterprise Testlizenz (60 Tage, 15 User), zusammen mit einem ausreichenden Threema Gateway Guthaben (Threema Gateway ist ein Prepaid-Dienst) zur Verfügung gestellt. Für die Kommunikation über Threema Gateway wird eine Gateway ID erstellt. Dabei hat man die Wahl, ob die E2E-Verschlüsselung erst auf dem Threema Server oder auf dem eigenen Server stattfinden soll. Die Wahl fiel auf die 2. Option.
3. Umsetzung:
Zuerst setzte ich den Server G auf. Auf diesem installierte ich zusätzlich ein SDK, welches für die Kommunikation mit dem Server T zuständig ist. Threema bietet SDK für die Sprachen Java, PHP, Python und .Net an: https://gateway.threema.ch/de/developer/api
In dem Projekt habe ich mit dem Java SDK gearbeitet, da für dieses nur eine .jar Datei heruntergeladen werden muss, welche direkt verwendet werden kann, ohne dass zusätzliche Module benötigt werden, was z.B. bei Python der Fall ist.
Den Versand habe ich folgendermassen mit einem Perl Skript realisiert:
Das Skript ist wie folgt aufgebaut:
Das Skript löst via SDK, anhand der E-Mail Adresse, die Threema ID des Empfängers auf. Dabei wird vorausgesetzt, dass alle Benutzer ihre E-Mail Adresse, welche im Monitoring hinterlegt ist, in ihrer Threema Work App verknüpft haben.
Danach wird der Inhalt der Textdatei dem SDK übergeben und an die aufgelöste ID verschickt. Der Inhalt wird dabei zuerst Verschlüsselt und erst dann dem Server T übermittelt. Somit kann Threema die Nachricht nicht lesen. (Nein. Threema ist nicht OpenSource und somit kann theoretisch nicht zu 100% garantiert werden, dass sie die Nachricht nicht mitlesen können. Aber darum geht es nicht und deshalb bitte keine Diskussion hierzu)
Die Verwaltung der Threema Work Benutzer erfolgt über das Webtool von Threema. Was man damit alles machen kann ist hier ersichtlich: https://work.threema.ch/de/management-cockpit#usp=0
Kürzlich wurde die Funktion Threema-MDM hinzugefügt, mit welcher die App-Konfiguration ebenfalls gesteuert werden kann. Dies war während dem Projekt noch nicht der Fall und somit weiss ich nicht, was damit alles gemacht werden kann.
Hier eine kurze Liste mit Dingen, welche ich an Threema Work Enterprise sehr geschätzt habe:
So. Ich hoffe das reicht als "kleiner" Einblick. Wie gesagt bin ich nicht allzu sehr ins Detail gegangen. Bei Interesse beantworte ich aber gerne weitere Fragen per PN oder je nachdem hier im Thread.
Das Projekt habe ich im Rahmen einer Test IPA (Individuelle Praktische Arbeit. Dabei handelt es sich um die Abschlussarbeit als Informatiker EFZ) durchgeführt. Für den Erfahrungsbericht habe ich einen Teil der Texte aus meiner Projektdokumentation übernommen. Wundert euch also nicht, wenn der Bericht ein wenig mühsam geschrieben ist
1. Projektbeschrieb:
Für die Benachrichtigungen des Monitoring Systems (Ground Work) ausserhalb der Bürozeiten wird als Benachrichtigungsmedium SMS eingesetzt, welche via SMS-Gateway versendet werden. Dieses System soll durch Threema Work abgelöst werden. Im Rahmen des Projekts sollte somit eine Anbindung an den Monitoring Server (M) realisiert werden. Für die Anbindung wurde ein RHEL 7 Server (G) aufgesetzt, welcher als Messaging Gateway dient. Dieser ist für die Kommunikation mit dem Server G und dem Threema Gateway Server (T) zuständig.
2. Vorbereitung:
Im Voraus habe ich mit einem Mitarbeiter der Threema GmbH Kontakt aufgenommen. Dieser war recht begeistert von der Projektidee und somit viel die Zusammenarbeit sehr angenehm aus. Uns wurde eine Threema Work Enterprise Testlizenz (60 Tage, 15 User), zusammen mit einem ausreichenden Threema Gateway Guthaben (Threema Gateway ist ein Prepaid-Dienst) zur Verfügung gestellt. Für die Kommunikation über Threema Gateway wird eine Gateway ID erstellt. Dabei hat man die Wahl, ob die E2E-Verschlüsselung erst auf dem Threema Server oder auf dem eigenen Server stattfinden soll. Die Wahl fiel auf die 2. Option.
3. Umsetzung:
Zuerst setzte ich den Server G auf. Auf diesem installierte ich zusätzlich ein SDK, welches für die Kommunikation mit dem Server T zuständig ist. Threema bietet SDK für die Sprachen Java, PHP, Python und .Net an: https://gateway.threema.ch/de/developer/api
In dem Projekt habe ich mit dem Java SDK gearbeitet, da für dieses nur eine .jar Datei heruntergeladen werden muss, welche direkt verwendet werden kann, ohne dass zusätzliche Module benötigt werden, was z.B. bei Python der Fall ist.
Den Versand habe ich folgendermassen mit einem Perl Skript realisiert:
- Kommt es zu einem Fehler schreibt Server M diesen in eine temporäre Textdatei.
- Die Textdatei wird mittels SCP auf den Server G übertragen
- Via SSH wird ein Versandskript auf dem Server G ausgeführt. Dem Skript wird der Empfänger in Form einer E-Mail Adresse und den Namen der Textdatei übergeben.
Das Skript ist wie folgt aufgebaut:
[src=bash]
#!/bin/bash
##### THREEMA #####
hm="*XYZ1234" #Threema Gateway User ID
sec="abcd12345qwertz" #Threema ID Secret
##### PROXY #####
prH="13.37.111.111" #Proxy IP
prP="3128" #Proxy Port
##### INPUT #####
mail=$1 #Mail
msg=$2 #Datei mit Textinhalt
# script.sh <MAIL> <FILENAME>
function log(){
timestamp=$(date +%Y-%m-%d_%H:%M)
case $1 in
0)
echo "$timestamp : Fuer die E-Mail Adresse $mail, wurde keine Threema ID gefunden" >> log/send-msg.log
;;
1)
echo "$timestamp : Nachricht an $Tmail verschickt" >> log/send-msg.log
;;
2)
echo -e "$timestamp : Mail: $mail, Datei: $msg
Text: $(head -n 3 msg/$msg)" >> log/debug.log
;;
esac
}
Tmail=$(java -Dhttps.proxyHost=$prH -Dhttps.proxyPort=$prP -jar threema-msgapi-tool.jar -l -e $mail $hm $sec) #Loest die Threema ID anhand der E-Mail auf.
if [ -z "$Tmail" ]; then #E-Mail check
log 0
rm msg/$msg
exit 0
fi
cat msg/$msg | java -Dhttps.proxyHost=$prH -Dhttps.proxyPort=$prP -jar threema-msgapi-tool.jar -S $Tmail $hm $sec privKey.txt
log 1 $Tmail
log 2 #Aktivieren fuer Debugging
rm msg/$msg[/src]
#!/bin/bash
##### THREEMA #####
hm="*XYZ1234" #Threema Gateway User ID
sec="abcd12345qwertz" #Threema ID Secret
##### PROXY #####
prH="13.37.111.111" #Proxy IP
prP="3128" #Proxy Port
##### INPUT #####
mail=$1 #Mail
msg=$2 #Datei mit Textinhalt
# script.sh <MAIL> <FILENAME>
function log(){
timestamp=$(date +%Y-%m-%d_%H:%M)
case $1 in
0)
echo "$timestamp : Fuer die E-Mail Adresse $mail, wurde keine Threema ID gefunden" >> log/send-msg.log
;;
1)
echo "$timestamp : Nachricht an $Tmail verschickt" >> log/send-msg.log
;;
2)
echo -e "$timestamp : Mail: $mail, Datei: $msg
Text: $(head -n 3 msg/$msg)" >> log/debug.log
;;
esac
}
Tmail=$(java -Dhttps.proxyHost=$prH -Dhttps.proxyPort=$prP -jar threema-msgapi-tool.jar -l -e $mail $hm $sec) #Loest die Threema ID anhand der E-Mail auf.
if [ -z "$Tmail" ]; then #E-Mail check
log 0
rm msg/$msg
exit 0
fi
cat msg/$msg | java -Dhttps.proxyHost=$prH -Dhttps.proxyPort=$prP -jar threema-msgapi-tool.jar -S $Tmail $hm $sec privKey.txt
log 1 $Tmail
log 2 #Aktivieren fuer Debugging
rm msg/$msg[/src]
Das Skript löst via SDK, anhand der E-Mail Adresse, die Threema ID des Empfängers auf. Dabei wird vorausgesetzt, dass alle Benutzer ihre E-Mail Adresse, welche im Monitoring hinterlegt ist, in ihrer Threema Work App verknüpft haben.
Danach wird der Inhalt der Textdatei dem SDK übergeben und an die aufgelöste ID verschickt. Der Inhalt wird dabei zuerst Verschlüsselt und erst dann dem Server T übermittelt. Somit kann Threema die Nachricht nicht lesen. (Nein. Threema ist nicht OpenSource und somit kann theoretisch nicht zu 100% garantiert werden, dass sie die Nachricht nicht mitlesen können. Aber darum geht es nicht und deshalb bitte keine Diskussion hierzu)
Die Verwaltung der Threema Work Benutzer erfolgt über das Webtool von Threema. Was man damit alles machen kann ist hier ersichtlich: https://work.threema.ch/de/management-cockpit#usp=0
Kürzlich wurde die Funktion Threema-MDM hinzugefügt, mit welcher die App-Konfiguration ebenfalls gesteuert werden kann. Dies war während dem Projekt noch nicht der Fall und somit weiss ich nicht, was damit alles gemacht werden kann.
Hier eine kurze Liste mit Dingen, welche ich an Threema Work Enterprise sehr geschätzt habe:
- Interne Kontaktliste: Alle Threema Work Kontakte werden automatisch im Kontaktbuch erfasst und speziell gekennzeichnet. Somit müssen die Kontakte nicht separat gepflegt werden.
- Trennung von IDs: Wird ein Benutzer nicht mehr benötigt, kann dieser entfernt werden. Somit generiert er keine weiteren Kosten und ihm wird der Zugriff auf Threema Work entzogen.
- Die App. Diese ist grösstenteils identisch mit der normalen Threema App. Diese ist schlicht, simpel und sehr angenehm zu bedienen.
So. Ich hoffe das reicht als "kleiner" Einblick. Wie gesagt bin ich nicht allzu sehr ins Detail gegangen. Bei Interesse beantworte ich aber gerne weitere Fragen per PN oder je nachdem hier im Thread.
Zuletzt bearbeitet: