Bsp.Code : Raumstatus mit Grafik / xmpp jabberbot auf FF Router (TPL841N) mittels Batman-adv / alfred

Hier nochmal : Anleitung von fuzzle : start [Wiki]
Aktuell :

Ziel

Mithilfe von Batman-adv / Alfred einen Raumbelegungsstatus abbilden. Man prüft direkt im Layer2 Netz die Menge der verbundenen Wifi-Geräte in das Netz und schliesst damit auf die Öffnung von Clubunterkünften. Das funktioniert immer dann, wenn es sonst keine oder wenig Wifi Nutzer an spezifischen Knoten gibt. Man könnte statt dem Text auch sonstwie svg Dateien erzeugen, die Abfragen sind immer gleich, die Rükgabe der Shell einfache Integer (in diesem Beispiel). Das ganze ist ein PoC (proof of concept) - im Prinzip könnte man so auch abbilden wer genau da ist… Vieles davon ist eine gute Basis um Sicherheits/Privacy Implikationen des Layer2 Batman-Adv Netzes, so wie es derzeit realisiert ist, anzustoßen.

Herausfinden der Knoten

auf https://freiburg.freifunk.net/meshviewer (für Freiburg) den entsprechenden Knoten finden und seine Mesh MAC Adresse herausfinden.

Beispielhaft auf einem Router

mittels batctl das zugrundeliegende Interface an dem die User hängen herausfinden (geht natürlichnur an einer Stelle an der man innerhalb des Freifunk Freiburg Netzes batman-adv sprechen kann. Danach prüfen wir die über WIFI angebundenen Geräte.

# hier die MAC verschrabbelt 
root@freifunk-netterKnoten:~# batctl tg | grep  b0:48:7a:d6:ZZ:ZZ 
 * b0:48:7a:d6:ZZ:ZZ  (  2) via b2:49:7a:d6:YY:YY     (  2)   (0xd728) [...]
root@freifunk-netterKnoten:~# batctl tg | grep  b2:4c:7a:de:YY:YY
 * 08:7a:4c:aa:aa:aa  ( 16) via b2:4c:7a:de:YY:YY     ( 16)   (0xdfd6) [.W.]
 * 00:1c:bf:bb:bb:bb  ( 14) via b2:4c:7a:de:YY:YY     ( 16)   (0xdfd6) [.W.]
 * b0:48:7a:de:XX:XX  (  2) via b2:4c:7a:de:YY:YY     ( 16)   (0xdfd6) [...]
 * 0c:84:dc:cc:cc:cc  (  9) via b2:4c:7a:de:YY:YY     ( 16)   (0xdfd6) [.W.]
 * 00:24:d7:dd:dd:dd  ( 13) via b2:4c:7a:de:YY:YY     ( 16)   (0xdfd6) [.W.]

# wir sehen hier das die MAC vom Meshviewer intern auf dem Router auf die b2:4c... 
# kommt und schauen dann welche Endgeräte dort sind.
# alle mit dem Flag W sind via WIFI verbunden, der Dritte "Client" ist der 
# mit Kabel verbundene 2. Router vor Ort.

Die Ausgabe des Cronjobs auf dem Knoten sieht folgendermaßen aus.

# Sammeln und zählen der WifiNutzer, das in eine Textdatei schreiben 
# und mittels scp auf Server spielen
 * * * * * lala2=$(batctl tg |grep b0:48:7a:d6:XX:XX |grep W |wc -l) ; lala1=$(batctl tg |grep b2:4c:7a:de:YY:YY |grep W |wc -l) ; if [[ $lala1 = 0 && $lala2 = 0 ]]; then echo "keiner da, vermutlich"  > /tmp/fffr-institutuser ; else echo -n " Teilchenbeschleuniger "$lala2 " |  E-Lab " $lala1 " " > /tmp/fffr-institutuser ; fi ; scp -i /etc/dropbear/id_rsa.pub /tmp/fffr-institutuser user@nice_server.com:/media/fffr-lalala-institutuser

sitenote: es wäre trivial den Code der Node zu parsen und die Anzahl der Nutzer von dort zu holen, damit ist man an die Aktualisierungsrate des Meshviewer und allem anderen gebunden.

textdatei jabber bot

ein jabber bot mit dem xmpp jabberbot python framework kann die Datei einfach parsen, im Moment antworter 42 im [XMPP:cccfr][1] chat auf die ffinstitut anfrage mit der Ausgabe aus dem Beispiel

text 2 image

an dieser Stelle einfaches shell script das regelmässig via cronjob aus der Textdatei ein Bild macht und an einer im Netz erreichbaren Stelle speichert. Das Bild liegt als SVG Datei vor. http://openfreiburg.de/freifunk/raumstatus.svg

# eine Datei raumstatus.sh erstellen und mit 
# chmod a+x raumstatus.sh ausführbar machen 

#!/bin/bash
inputfile="/media/fffr-rauberhaus-institutuser" ;
outputfile=$inputfile ; 
raumstatus="$(cat $inputfile)" ;

echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?><svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.2\" baseProfile=\"tiny\" hight=\"24\" ><text x=\"0\" y=\"18\" font-family=\"Verdana\" font-size=\"20\" fill=\"grey\"> $raumstatus </text> </svg>" > $(echo -n $inputfile).svg

der Code könnte noch viel abgefahrerene Dinge abbilden …
mit convert bekommt man auch png aus den svg Dateien um sie Beispielsweise in dieses Wiki leichter einzufügen.

fancy stuff

mit diesen Grundlagen könnte man auch andere Dinge verwirklichen ... man könnte auch zu den mac auch synonyme ausgeben und sagen **fuzzle und wuschl in da house** , nicht alles ist wirklich toll (unter privacy Aspekten die das layer2 meshen mit sich bringt :-( )

Hinweis1: Das Forum speichert die verlinkten Bilder zwischen, daher kann es keine Aktuellen Bilder geben!
Hinweis2: Update des Cronjobs : magic bash shell foo
[1]: http://cccfr@conference.cccfr.de

1 Like