XEP-049 (Private XML Storage): Die Möglichkeiten

Ich bin ja immer wieder von den Möglichkeiten von XMPP positiv überrascht. Was mir gerade klar wurde, ist die simple, aber geniale, Funktionsweise von XEP-0049 (Private XML Storage). Es bietet schlicht und ergreifend einen neuen XML-Namespace xmlns=“jabber:iq:private“

In diesem kann dann an Kind-Elementen stehen, was will. Wozu das Ganze? Wieso sollte ich Daten auf meinem Jabber-Server speichern? Nun, im Folgenden mal die drei Beispiele, die ich in Implementierungen gefunden habe.

  1. Storage Notes
    Hierbei handelt es sich schlicht und ergreifend um die Möglichkeit, sich Notizen anzulegen. Jeder Notiz kann über einen Titel, Tags und eben den Inhalt verfügen. Ein Implementierungsbeispiel findet sich auf diesem Bildschirmfoto im Psi+-Wiki: klick. Um die Notizen einzusehen, wird ein InfoQuery-Stanza (Stanza, so heißen die XML-Schnipsel von XMPP) in dieser Art verwendet: 

    <iq type=“get“ id=“23″>
    <query xmlns=“jabber:iq:private„>
    <storage xmlns=“http://miranda-im.org/storage#notes“ />
    </query>
    </iq>

    Was auffällt, ist das Kindelement <storage>, welches den Namespace „http://miranda-im.org/storage#notes“ zugewiesen bekommen hat. Dies führt zu der Vermutung, dass Miranda IM dieses Feature erfunden hat. Als Resultat wird man hier eine Liste mit den verschiedenen Notizen bekommen, was in etwa so aussehen kann:

    <iq from=“bob@example.com“ type=“result“ to=“bob@example.com/home“>
    <query xmlns=“jabber:iq:private“>
    <storage xmlns=“http://miranda-im.org/storage#notes“>
    <note tags=“Jabber XMPP“>
    <title>Private XML Storage</title>
    <text>Informationen suchen und Blogeintrag schreiben</text>
    </note>
    </storage>
    </query>
    </iq>

    Unschwer die Notiz zu erkennen.  In diesem Beispiel war eben nur eine Notiz vorhanden.

    Ich für meinen Teil finde die Funktion sehr praktisch. Bisher vorgefunden habe ich sie außer in Miranda und Psi+ noch nirgends.

  2. MUC-Bookmarks
    Die Funktion, Multi User Chatrooms zu speichern und überall verfügbar zu haben, wird in XEP-0048: (Bookmarks) definiert. Hier sieht der der Storage-Tag samt dazugehörigem Namespace so aus: 

    <storage xmlns=‘storage:bookmarks‚>

    Elegant und praktisch!

  3. Kommentare zu Nutzern im Roster (Kontaktliste)
    Ein nettes Features, welches ich in Vacuum IM vorfand,  ist die Möglichkeit, sich zu jedem Kontakt eine Notiz hinzu zu fügen (z.B. Erinnerungen oder wer die Person eigentlich ist…). Bei Vacuum IM werden diese in der Info-Box beim überfahren des Kontaktes eingeblendet.
    In dem Kommentar wird darüber hinaus noch das Erstellungs- und das letzte Änderungsdatum gespeichert. 

    <iq type=“set“ id=“42″>
    <query xmlns=“jabber:iq:private“>
    <storage xmlns=“storage:rosternotes„>
    <note mdate=“2011-05-04T22:46:17Z“ cdate=“2011-05-04T22:46:17Z“ jid=“update@identi.ca“>Alle neuen Beiträge auf Identi.ca</note>
    </storage>
    </query>
    </iq>

    Nachtrag: Die Rosternotes haben sogar eine XEP: XEP-0145 (Annotations). Interessanter Weise habe ich bei meiner Suche eine neue Version 1.1 (klick) der XEP gefunden, die das Gleiche via Pub-Sub macht. Dann würde obiges natürlich obsolet werden – aber seit Ende 2007 hat sich da nichts mehr getan, wird also für’s Erste bei der jabber:iq:private-Variante bleiben.
    Nachtrag 2, 03.08.2011: Ich habe festgestellt, dass Gajim in den Details des Nutzers einen extra Reiter hat, in dem die Roster Notes gezeigt und bearbeitet werden können. Das Ding (Gajim) kann echt viel, das muss man ihm lassen.

 

Das sind also die drei Anwendungen, die mir in der Praxis begegnet sind – und ich als solche erkannt habe.  Es ist mal wieder eine sehr innovative und vielseitig einsetzbare Erweiterung des Protokolls. Ich hoffe, dass mehr Clients die Möglichkeiten nutzen werden.

Was mir bei meinen Recherchen auffiel ist, dass man de facto keine Übersicht hat, was alles im im jabber:iq:private-Namespace auf dem Server unter meinem Account abgespeichert wurde. Das bedeutet, ohne die Namespaces der jeweiligen Funktion, kommt man also nicht so einfach an die Daten ran. Ich bleibe da mal dran, ob sich dazu noch Infos finden lassen. Darüber hinaus wurde ich in einem MUC auf die Idee gebracht, die Nutzerdatenbank eines großen Jabber-Knotens auf die Namespaces (und nur diese -> Datenschutz) innerhalb des jeweiligen privaten XML-Bereiches mit einem Script zu durchforsten – somit ließen sich ggf. noch weitere Anwendungsgebiete zu finden. Mal sehen, ob ich da was deichseln kann. (Update, 05.05.2011: Also auf meinem Server habe ich für das storage-Element keine weiteren Einträge gefunden.)

Wenn ich etwas neues herausgefunden habe, werde ich diesen Beitrag entsprechend erweitern. Bis dahin: Viel Spaß mit XMPP!

 

Nachtrag, 05.05.2011: XEP-0083: Nested Roster Groups nutzt ebenfalls den private-Namespace, allerdings ohne ein Storage-Element.

2 Kommentare

  1. Hi, erstmal danke für die Tips:) Was mir fehlte war:

    Das Skript erzeugt eine prosody.cfg.lua und einen data Ordner in dem sich ein Ordner mit dem Hostnamen befindet. dieser muss direkt in /var/lib/prosody und mit chown -R prosody:prosody hostname.tld die richtigen Rechte bekommen. Dann Prosody neu starten.

    Dank dem MUC hab ich das dann aber herausgefunden:-) btw, PubSub kann man z.B. für neuartige Social Networks gebrauchen, z.B. http://buddycloud.org oder jappix. Ist inzwischen auch schon experimentell in 0.9 eingebaut(z.Z. 0.8.2)

    Besten Gruß

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*