3.7 KiB
3.7 KiB
jabber client library
- luz: the client. sends and receives messages. contains a message/user store.
TODO:
- how to know if stanza has been sent
- error states for all negotiation parts
- better errors
- rename structs
- remove commented code
- asynchronous connect (with take_mut?)
- split into separate crates: stanza, jabber, and luz
- use nom for better jid parsing
specs:
- rfc 6120: core
- rfc 6121: im
- rfc 7590: tls
- xep-0368: srv records for xmpp over tls
- server side downgrade protection for sasl
- xep-0030: service discovery
- xep-0115: entity capabilities
- xep-0163: pep
- xep-0245: /me
- xep-0084: user avatar
- xep-0172: user nickname
- xep-0280: message carbons
- xep-0191: blocking
- xep-0222: public data via pubsub
- xep-0223: private data via pubsub
- xep-0313: mam
- xep-0198: stream management
- xep-0085: chat state notifications
- xep-0428: fallback indication
- xep-0359: unique and stable stanza ids
- xep-0424: message retraction
- xep-0352: client state indication
- xep-0166: jingle
- xep-0292: vcard4
- xep-0184: message delivery receipts
- xep-0060: pubsub
- xep-0100: gateway interation
calls:
- xep-0167: jingle rtp sessions
- xep-0353: jingle message initiation
- xep-0176: jingle ice-udp transport
- xep-0320: use of dtls-srtp in jingle sessions
- xep-0215: external service discovery (stun/turn)
- xep-0293: jingle rtp feedback negotiation
- xep-0294: jingle trp header extensions negotiation
- xep-0338: jingle grouping framework
- xep-0339: source-specific media attributes in jingle
- xep-0402: pep native bookmarks
mix:
- xep-0369: mix
e2ee:
- xep-0380: explicit message encryption
- xep-0420: stanza content encryption
- xep-0384: omemo
- xep-0396: jingle encrypted transports omemo
file/media sharing (further research needed):
- xep-0363: http file upload
- xep-0385: stateless inline media sharing
- xep-0066: out of band data
- xep-0261: jingle in-band bytestreams
- xep-0234: jingle file transfer
need more research:
- message editing
- xep-0308: last message correction (should not be used for older than last message according to spec)
- chat read markers
- xep-0490: message displayed synchronization
- xep-0333: displayed markers
- message styling
- xep-0393: message styling
will prioritise new spec instead of:
- muc
- xep-0045: muc
- xep-0249: direct muc invitations
- xep-0410: muc self-ping
- vcard legacy
- xep-0398: user avatar compat
- xep-0153: vcard avatars
- xep-0054: vcard-temp
- legacy bookmarks
- xep-0048: legacy bookmarks
- xep-0049: private xml storage
later (nice to have):
- xep-0077: in-band registration
- xep-0157: contact addresses
- xep-0455: service outage status
- web compliance: rfc 7395, xep-0206, xep-0124, xep-0156
- mobile compliance
- xep-0357: push notifications
- xep-0286: mobile considerations
- client connection optimisations
- xep-0386: bind 2.0
- xep-0409: im routing-ng
- xep-0397: instant stream resumption
- xep-0390: entity capabilities 2.0
- improved on-boarding
- xep-0401: easy user onboarding
- xep-0379: pre-authenticated roster subscription
- xep-0445: pre-authenticated in-band registration
- portability
- xep-0227: portable import-export
- xep-0283: moved
- modern auth
- xep-0388: extensible sasl profile (sasl 2.0)
- xep-xxxx: oauth client login
- xep-xxxx: client access management