Der XMPP Server unter Prosody läuft einfach. Etwas hakelig erwies sich die Konfiguration der Chaträume, die meinem Eindruck nach auch von den Fähigkeiten der mit dem Server verbundenen Clients abhängig ist: deren Zusammenspiel mit Prosody erzeugt einige Inkonsistenzen. Bei den folgenden Einstellungen für Prosody
# /etc/prosody/prosody.cfg.lua Component "blabla.domain.tld" "muc" restrict_room_creation = "local" max_history_messages = 20
erlaubte es mir Conversations nicht, einen Chatraum einzurichten. Leider klappt das auch nicht mit
restrict_room_creation = true
das ja eigentlich das Recht zur Raumerstellung auf die Admins beschränken sollte. Das funktionierte bei meinen Versuchen ein einziges mal – danach dann nicht mehr. Warum, war den Logs für mich nicht zu entnehmen. Da stand
Out of connection options, can't connect to blabla Sending error replies for 2 queued stanzas because of failed outgoing connection to blabla
(blabla steht hier für den gewählten Raumnamen) aber ich googlete mich in die Ecke ohne schlau zu werden. Ich stellte deswegen auf
restrict_room_creation = false
um und überwache zur Sicherheit das Verzeichnis mit den Raumdefinitionen, auf dass ich mitbekomme, was mein Server so alles hostet. Diese liegen hier:
/var/lib/prosody/blabla%2edomain%2etld/config/
Eine weitere Hürde auf dem Weg zu eigenen MUCs war, dass mein Zertifikat für den Server nur auf domain.tld und www.domain.tld läuft. Der Standard für MUCs scheint aber conference.domain.tld zu sein. Ich hätte mir demnach ein extra Zertifikat besorgen oder richtig Geld in die Hand nehmen müssen, was mir schlicht zu blöd war. Startssl muss reichen. Also sind die Chaträume nun eben unter www zu finden. Für die eigenen Bedürfnisse geht das.
Überhaupt: Die Clients.
Meine Erfahrungen beschränken sich auf xabber, tigase, yaxim und conversations. Von diesen beherrscht nur conversations in Zusammenspiel mit Prosody den (fast) reibungslosen Versand von Dateien und Bildern, den Austausch von OTR-verschlüsselten Nachrichten sowie nun auch die Einrichtung und Verwaltung (privat / öffentlich, Einladungen verschicken und annehmen) von Räumen.
Beim Versand von Bildern und Dateien mit Conversations / Prosody muss man allerdings darauf achten, dass die Beteiligten gegenseitig ihren Online-Status sehen dürfen und auch beide online sind (grüner send / camera button) – sonst fällt der Prozess kommentarlos auf die Nase.
Eine Option zur Zwischenspeicherung von Dateien und Bildern auf dem Server habe ich in Prosody nicht gefunden und dafür scheint es auch kein Modul zu geben. Das Modul mod_storage_internal kann nur mit Text umgehen und auch mod_offline behandelt lediglich Text. Ich muss mir mal mod_storage_sql ansehen. Evtl geht ja da was (auch wenn die Beschreibung der DB-Felder für mich nicht so aussieht).
Dazu kommt: Verschickt man über Conversations dickere Dateien (getestet habe ich mit bis zu 16MB), dann fällt auch dies gelegentlich auf die Nase, obwohl sich die Beteiligten gegenseitig sehen. Hier scheint das Zusammenspiel zwischen Conversations und Cyanogenmod (Energieeinstellungen) eine Fehlerquelle zu sein: schaltet sich der Bildschirm ab, dann bricht häufig auch die Dateiübertragung zusammen.
Insgesamt betrachtet: Die grundlegenden Dinge funktionieren nun – bei vielen Details ist noch Luft nach oben.
Ich dachte ich lass dir mal eine Nachricht da.
Conversations hat mittlerweile eine Funktion namens „HTTPUpload“.
Wenn das entsprechende Prosody-Modul installiert ist (zu finden unter http://modules.prosody.im/mod_http_upload.html ), dann werden Dateien auf den Prosody-Server hochgeladen und der Link zur Datei dann verschickt, statt die Datei direkt zu verschicken.
Das funktioniert dann sogar in Chaträumen, oder wenn der Chatpartner gerade offline ist.
Auch Clients, die httpupload nicht kennen, können die Daten empfangen, weil sie dann einfach den Link anzeigen und die Nutzer die Daten einfach mit ihrem Lieblingsbrowser runterladen können.
Der Desktop-Client Gajim unterstützt den Filetransfer via HTTPUpload ebenfalls: https://trac-plugins.gajim.org/wiki/HttpUploadPlugin
Ich bin übrigens der Autor dieses Plugins, also melde dich ruhig, wenn du Kommentare dazu hast 🙂
Die XEP für HTTPUpload findet sich hier: http://xmpp.org/extensions/xep-0363.html