-
Notifications
You must be signed in to change notification settings - Fork 35
XEP Coverage
ruff edited this page Dec 1, 2020
·
5 revisions
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).
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 |