Natenoms Wiki

Weil Teilen Spaß macht :)

Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

Übersetzungen dieser Seite:

Navigation



Lizenz dieses Wikis
Über dieses Wiki
Feed des Wikis
Impressum


Was gerade in meinem Blog geschieht:

mumble:tools:benutzerkarte

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

Das Ergebnis in Echtzeit

Ein Screenshot der Benutzerkarte:

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
mumble/tools/benutzerkarte.txt · Zuletzt geändert: 2015/11/26 20:00 von Natenom