SMS Gateway

aus dem Wiki des Entropia e.V., CCC Karlsruhe

Was ist das?

Unter der Telefonnummer +49 170 5592154 werden SMS empfangen und automatisch Antworten erzeugt.

Momentan gibt es folgende Services/Schluesselwörter (Großkleinschreibung ist egal)

  • www - läd die Seite http://<alle weiter Worte nach www> und liefert davon die ersten 160 Zeichen als SMS zurueck zB 'www www.heise.de'
  • club, entropia - Clubstatus abfragen
  • tueroeffner - oeffnet die Tuer zur Treppe hoch zu den Anwaelten (white-listed nummers only)
  • request <nickname> - Anfragen für das whitelisting senden (werden haendisch eingepflegt)
  • alpenwetter - Alpenwetterbericht des ZAMG-Innsbruck
  • penis - quess what

Bei Fragen an JackMcCrack wenden. Anrufen bei der oben genannten Nummer werden ignoriert.

Hardware

Das SMS Gateway läuft seit Ende April 2013 auf einem Raspberry Pi. Damit das Modem mit genügent Strom versorgt wird benötigt der Pi ein 5V MicroUSB Netzteil, USB Port eines PCs reicht nicht.

GSM/GPRS Modem

Als Modem kommt ein Sierra Wireless GL6110 zum Einsatz. Bestückt mit ein Simkarte mit SMS Flat. Das Modem wird per wavecom modul als /dev/ttyACM0 angesprochen. Es lässt sich auch per AT Kommandos per screen/minicom von Hand steuern.

Software

kannel

Kannel ist ein OpenSource WAP und SMS Gateway. Es ist als Paket im Debian stable enthalten. Die WAP Box und SMS Box laufen als seperater Childprozess des Kannelcores. Die Konfiguration ist über die kannel.conf geregelt. Feature: jede group muss mit einer Leerzeile von der nächsten group getrennt sein!

kannel.conf

 #zentraler Teil aka bearerbox
 group = core
 wapbox-port = 13002
 smsbox-port = 13003
 wdp-interface-name = "*"
 log-file = "/var/log/kannel/bearerbox.log"
 box-deny-ip = "*.*.*.*"
 box-allow-ip = "127.0.0.1"
 
 group = modems
 id = wavecom
 #SMS Gateway
 group = smsbox
 bearerbox-host = localhost
 sendsms-port = 13023
 sendsms-chars = "0123456789 "
 global-sender = 123456
 #sim-buffering = true
 access-log = "/var/log/kannel/sms.access"
 log-file = "/var/log/kannel/smsbox.log"

 #group = wapbox
 #bearerbox-host = localhost
 #log-file = "/var/log/kannel/wapbox.log"
 #SMS Center - über lokales GSM Modem
 group = smsc
 smsc = at
 modemtype = wavecom
 device = /dev/ttyACM0
 speed = 9600
 #Pin of SIM Card
 pin = XXXX 
 #SMS Services
 group = sms-service
 keyword=www
 #get everything after the www as URL
 get-url = "http://%S"
 
 group = sms-service
 keyword=club
 aliases=entropia
 exec = "/usr/local/bin/clubstatus.sh"
 
 group = sms-service
 keyword=tueroeffner
 white-list-regex=^(\+4917xxxxxxxx|\+4917xxxxxxxx|...)$
 exec = "/usr/local/bin/clubtuer.sh"

wie man weitere SMS-service definiert steht in der Kannel Documentation unter sms-service

Scripte

Ich mag quick and dirty shellscripte. Der Output wird von Kannel auf eine SMS (160 Zeichen GMS Alphabet, 70 Zeichen Unicode) begrenzt und an die Absendernummer der Anfrage zurück geschickt.

clubstatus.sh

Liefert den Clubstatus als Text aus

 #!/bin/sh
 OUT=`/usr/local/bin/curl club.entropia.de 2>/dev/null|sed -e 's/[\"{}\ \n]//g'`
 echo $OUT

clubtuer.sh

Öffnet per ssh die Tür vom Gewerbehof zur Treppe in den 1. Stock - nicht den Club selber.

 #!/bin/sh
 SSH=/usr/bin/ssh
 #host clubtuer stetht in der ~/.ssh/config mit hostname, port, user, IdentityFile, usw
 $SSH clubtuer
 if [ $? -gt 0 ]
 then
         echo "Sorry, something is b0rkn"
 else
         echo "Türöffner aktiviert"
 fi