Skip to content
ruff edited this page Dec 1, 2020 · 5 revisions

Overview

DJabberd targets to be a Perl Toolkit for XMPP, from which you can build a solution, including communication server. As such majority of XEPs are implemented as external plugins. If some XEP is supported natively that's ususally done either as a show-case (limited functionality, should be extended by plugins) or as being necessary for normal functionality (eg. compatibility layer unlikely to be implemented as plugin).

List of supported XEPs

Implemented either in core or in external plugins

XEP Namespace / Feature Description Status
XEP-0004 jabber:x:data Data Forms - Complex data exchange Parsing/Representation implemented in Core (since v0.90 DJabberd::Form)
XEP-0016 jabber:iq:privacy Privacy Lists - Personal XMPP Firewall in server Implemented in DJabberd::Plugin::Privacy
XEP-0030 http://jabber.org/protocol/caps Service Discovery - Capability information retrieval Implemented in Core (v0.90, DJabberd::IQ), extendable via IQ hook - each plugin injects own identity/feature and handles its processing.
XEP-0045 http://jabber.org/protocol/muc MUC - Multi User Chat Implemented in DJabberd::MUC in a very basic form
XEP-0048 storage:bookmarks Bookmarks - MUC rooms bookmarks Supported by XEP-0049 implementation (Private XML Storage), Supported by XEP-0163 (PEP) persistent-node implementation
XEP-0049 jabber:iq:private Private XML Storage - generic user storage Implemented in DJabberd::Plugin::PrivateStorage
XEP-0054 vcard-temp vCard-temp - vCard XML over IQ Implemented in DJabberd::Plugin::VCard (DJabberd-VCard) and PEP storage since v0.60
XEP-0059 http://jabber.org/protocol/rsm Result Set Management - paging via results Parser implemented in DJabberd::Plugin::MAM as DJabberd::Set package, used for MAM results management.
XEP-0065 http://jabber.org/protocol/bytestreams SOCKS5 Bytestream Proxy Implemented in DJabberd::Component::S5P
XEP-0077 jabber:iq:register Inband Registration - Create account right from client Implemented in Core (DJabberd::IQ), extendable via RegisterJID/UnregisterJID hook chains.
XEP-0078 jabber:iq:auth IQ Authentication (Obsolete) - Non-SASL Authentication (compat) Implemented in Core (DJabberd::IQ), extendable via GetPassword/CheckDigest/CheckCleartext hook chains.
XEP-0090 jabber:iq:time Entity Time (Obsolete) - discover entity's localtime Implemented in DJabberd::Plugin::EntityTime (DJabberd-EntityTime)
XEP-0114 N/A Jabber Component Protocol - Extend XMPP Server with external extensions Implemented in Core (DJabberd::Component::External, DJabberd::Connection::ComponentIn/Out)
XEP-0115 http://jabber.org/protocol/caps Entity Capabilities - improve service discovery by hashing static features Implemented in Core (since v0.90, DJabberd::Caps), although server optimisation is not implemented, only digest generation and validation, as well as advertises own capabilities in stream features.
XEP-0126 jabber:iq:privacy Invisibility - hide own presence Implemented as part of DJabberd::Plugin::Privacy together with XEP-0186
XEP-0160 msgoffline Offline Messages - store messages while offline Implemented in DJabberd::Delivery::OfflineStorage (v0.05+)
XEP-0163 http://jabber.org/protocol/pubsub# + publish, auto-create, config-node, purge-nodes, delete-nodes, auto-subscribe, last-published, retrieve-items, access-presence, publish-options, presence-subscribe, presence-notifications, filtered-notifications, persistent-items, multi-items, delete-items Personal Eventing Protocol (PEP) Implemented in DJabberd::Plugin::PEP - partial implementation, no full XEP-0060 implementation hence only presence-based (implicit) subscription.
XEP-0170 N/A Recommended Order of Feature Negotiation Implemented in Core - Connection will add tls first, then anything else in specified by plugins order. SASL/Auth are ignored if tls is mandatory.
XEP-0178 N/A SASL External - best practices for TLS Certificate authentication Implemented in Core (since v0.90 in DJabberd::SASL::Connection::External, DJabberd::SASL::AuthenSASL, DJabberd::Stanza::SASL)
XEP-0186 urn:xmpp:invisible:0 urn:xmpp:invisible:1 Invisible Command (Deferred) - simplified XEP-0126 Implemented in DJabberd::Plugin::Privacy
XEP-0191 urn:xmpp:blocking Blocking Command - simplified XEP-0016 Implemented in DJabberd::Plugin::Privacy
XEP-0198 urn:xmpp:sm:2 urn:xmpp:sm:3 Stream Management - Controllable and resumeable connection Implemented in DJabberd::Plugin::SMX
XEP-0199 urn:xmpp:ping Ping - Connection and server availability check Implemented in DJabberd::Plugin::Ping
XEP-0202 urn:xmpp:time Entity Time - discover entity localtime Implemented in DJabberd::Plugin::EntityTime (DJabberd-EntityTime)
XEP-0203 urn:xmpp:delay Delayed Delivery - handle non-real-time delivery Implemented in DJabberd::Delivery::OfflineStorage as reusable tag injection call
XEP-0215 urn:xmpp:extdisco:2 External Service Discovery - STUN/TURN information Implemented in DJabberd::Plugin::XDisco
XEP-0220 jabber:server:dialback Server Dialback - DNS based S2S Authentication Implemented in Core (DJabberd::DialbackParams, DJabberd::Stanza::DialbackResult/Verify, DJabberd::Connection::ServerIn/Out, etc.)
XEP-0237 urn:xmpp:features:rosterver Roster Versioning - Send Roster delta if client cached it Implemented in Core (since v0.90 DJabberd::Roster, DJabberd::RosterItem, DJabberd::RosterStorage, DJabberd::IQ) and DJabberd-RosterStorage-SQLite v1.01.
XEP-0280 urn:xmpp:carbons:2 Message Carbons - relay conversation to all connected resources Implemented in DJabberd::Plugin::Carbons
XEP-0288 urn:xmpp:features:bidi Bidirectional Server Connection - use single TCP/TLS connection for S2S Implemented in DJabberd::Connection::ServerBiDi extension
XEP-0313 urn:xmpp:mam:0 urn:xmpp:mam:1 urn:xmpp:mam:2 Message Archive Management Implemented as in-memory-only buffer in DJabberd::Plugin::MAM but extendable to support persistent storage
XEP-0352 google:queue urn:xmpp:csi:0 Client State Indication - Allow server to optimize delivery Implemented in DJabberd::Plugin::SMX together with google:queue equivalent support
XEP-0357 urn:xmpp:push:0 Push Notifications (for mobile platforms) Implemented in DJabberd::Plugin::Push plugin as server-only implementation plugin - needs actual ''App Server'' to push to mobile OS push servers
XEP-0359 urn:xmpp:sid:0 Unique and Stable Stanza IDs Implemented as part of DJabberd::Plugin::MAM (DJabberd::SID) to handle stanza-id element
XEP-0363 eu:siacs:conversations:http:upload urn:xmpp:http:upload urn:xmpp:http:upload:0 HTTP File Upload Implemented in DJabberd::Component::HTTPUpload for both component service and FCGI web-app
XEP-0368 N/A SRV records for XMPP over TLS Implemented in the Core (since v0.90) as external SSL facilitated (offloaded) TLS. SSL Offload engine needs to tackle SNI/ALPN, DJabberd will demux the stream based on stream headers/attributes.
XEP-0384 urn:xmpp:omemo:1:devices urn:xmpp:omemo:1:bundles OMEMO Encryption (Server support) While server does not interact directly with OMEMO, the protocol relies on certain features on the server, namely extended PEP features (as described in Section 7.1). DJabberd::Plugin::PEP::Spool supports those prerequisites.
XEP-0398 urn:xmpp:pep-vcard-conversion:0 Avatar to VCard conversion Implemented in the DJabberd-VCard (since v0.60) as another storage engine. Which converts posted VCard into PEP and retrieves VCard from PEP. But only PHOTO tag, anything else is discarded.
XEP-0440 urn:xmpp:sasl-cb:0 SASL Channel-Binding Type Capability Implemented in the Core (since v0.90) as part of SASL mechanism advertisement
Clone this wiki locally