Hlavní navigace

Archivace XMPP zpráv na straně serveru

20. 4. 2012 11:04 Ondřej Caletka

Klasický problém, který řeší každý uživatel Instant Messagingu, je archivace zpráv. Naprostá většina protokolů je postavena tak, že archivace je volitelná součást klienta. To mohlo fungovat dobře v době, kdy každý uživatel vlastnil nejvýše jeden počítač. Dnes tento přístup nefunguje a uživatelé končí s historií náhodně roztroušenou po různých počítačích. Spousta uživatelů to řeší jednoduše používáním pouze jednoho IM klienta na jednom počítači, jiní třeba použijí Google Talk, jehož archiv je propojen s Gmailem.

Skutečné řešení ale spočívá v ukládání historie na serveru. To také navrhuje dokument XEP-0136. Objevují se i první implementace. V mém případě jsem použil modul mod_archive pro IM server Prosody. Instalace je velmi triviální, stačí modul nakopírovat do správného adresáře a povolit archivaci v konfiguračním souboru. Od té chvíle se začne v pracovním adresáři serveru tvořit soubor s archivem veškeré konverzace každého uživatele.

Zbývá vyřešit problém, jak archiv zpřístupnit v klientovi. Pro Pidgin existuje plug-in, který v rámci balakářské práce naprogramoval Daniel Kraic. Sice neoslní rozhraním, většina tlačítek nevyvolá žádnou reakci, nicméně po stisku tlačítka „Show“ je archiv zobrazen:

Bohužel jsem nepřišel na způsob, jak archivaci zakázat, tlačítka ve výše uvedeném dialogovém okně žádnou takovou akci neprovedou. Vzhledem k tomu, že mám k dispozici jen jeden typ serveru a klienta, nejsem si jist, na které straně může být závada. Další problém je archivace chatů mezi účty na stejném serveru. Tam se z nějakého důvodu loguje u každého uživatele každá zpráva dvakrát. Což je sice lepší, než kdyby se nelogovala vůbec, ale stejně to není ono.

Měl-li bych formulovat nějaký závěr, zněl by asi takto: Podpora XEP-0136 je na serverech i klientech stále ve velmi rané fázi, nicméně první náznaky použitelnosti se objevují. Doufám, že se to časem zlepší.