Inhaltsverzeichnis
Dynamische Benutzerkarte unserer Gäste des Mumble-Servers (Murmur)
Beschreibung
Es werden Daten für das DokuWiki-Plugin OpenLayersMap generiert, um anzeigen zu können, wer gerade online/offline ist und wo er herkommt :)
Creates the Data for a dynamic map of online/offline users of a Mumble-Server (Murmur) using the DokuWiki-Plugin OpenLayersMap (https://www.dokuwiki.org/plugin:openlayersmap).
- dynmap.py - just creates the data for current state.
- dynmap-callback.py - Runs continuously and generates the OpenLayersMap Data whenever someone connects/disconnects.
Features
- Entweder werden alle Benutzer angezeigt oder nur diejenigen, die auch gerade online sind.
(Den dynmap.makemap(…) Aufruf in dynmap-callback entsprechend einstellen.) - Anzeige des Avatars
- Anzeige der Onlinezeit
Der Code
Die beiden Scripte (dynmap.py und dynmap-callback.py) befinden sich auf github:
https://github.com/Natenom/murmur-dynmap
Auch eine Testdatenbank ist dort zu finden.
Mir ist klar, dass die Lösung zum Abgleich zwischen Online-Benutzern und eingetragenen Benutzern suboptimal ist; leider kenne ich noch keine Möglichkeit das effizient zu lösen. Ich lerne halt noch :P
Die SQLite Datenbank
Die UserIDs der Benutzer, ihre alternativen Namen und die Koordinaten stehen in einer SQLite Datenbank mit dem Schema:
CREATE TABLE dynmap ( userid INTEGER NOT NULL, name VARCHAR(50) NOT NULL, lat VARCHAR(8) NOT NULL, lon VARCHAR(8) NOT NULL, CONSTRAINT dynmap_PK PRIMARY KEY (userid) );
Ablauf
Eine Funktion iteriert über jeden Benutzer in UserDB und überprüft über Ice ob dieser online/offline ist.
Ist der Benutzer gerade online, also auf dem Server, so wird der aktuell in Mumble verwendete Name benutzt. Falls der Benutzer nicht online ist, so wird der in UserDB eingetragene Name verwendet.
Ergebnis
Probleme
Anscheinend macht das Map-Plugin von DokuWiki Probleme beim Escapen von ' ? D.h. aus
<img src='
wird
<img src=%5c%27
Um die Karte in eine vorhandene Seite einzubetten muesste ich zwei Begrenzer in diese einfuegen und innerhalb dieser die Karte einfuegen.
Seite --begrenzung-- layermap lala --begrenzung-- weiter seite
Wie macht man das mit Python :)?
Irgendwas setzt dann noch ein / davor und der Browser versucht, sich die Daten vom Rootverzeichnis zu holen …
Datenschutz
Jeder Benutzer der auf dieser Map zu finden ist, hat sich freiwillig dazu entschieden.
Es gibt keinen Automatismus, der anhand einer IP oder ähnlichem einen Benutzer in diese Karte einträgt.
Desweiteren wird nicht der wirkliche Wohnort punktgenau angegeben sondern lediglich die nächst größere Stadt.
Wenn du aus der Karte gelöscht werden möchtest, wende dich bitte an Natenom.
Karte erzeugen
Anstatt in bestimmten Abständen die Karte generieren zu lassen wird hier die Callback-Funktionalität von Murmur verwendet. Dadurch wird die dynamische Karte wirklich auch nur dann neu geschrieben, wenn ein registrierter Benutzer den Server betritt oder verlässt; also in Echtzeit :)
Ideen
- Higoshi: Bei der Info zum Benutzer einen Direktlink in den entsprechenden Kanal anzeigen
- Wer auf der Map drauf sein will, muss in seinem Kommentar in der letzten Zeile die beiden Koordinaten drin stehen haben.
- weniger Aufwand für mich und jeder kann zu jeder Zeit bestimmen ob er drin sein moechte und vor allem wo :P