Go to file
cel 🌸 595d165479 implement sink and stream properly UNFOLD UNFOLD 2024-12-06 06:31:20 +00:00
jabber implement sink and stream properly UNFOLD UNFOLD 2024-12-06 06:31:20 +00:00
jid use cargo workspace 2024-12-04 18:18:37 +00:00
luz use cargo workspace 2024-12-04 18:18:37 +00:00
stanza use cargo workspace 2024-12-04 18:18:37 +00:00
.gitignore initial commit 2023-06-13 00:46:59 +01:00
Cargo.toml use cargo workspace 2024-12-04 18:18:37 +00:00
README.md implement sink and stream properly UNFOLD UNFOLD 2024-12-06 06:31:20 +00:00
TODO.md add logging to connection.rs 2023-10-21 02:38:19 +01:00

README.md

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