-
slixmpp 1.8.5 Stable
released this
2024-02-02 01:00:12 +00:00 | 25 commits to master since this releaseHighlights
- Moving away from self-hosted gitlab (mathieui)
- Fix connection to Snikket instances (pep., mathieui)
- Performance fix for XEP-0115 queries
- New documentation listing projects using slixmpp (genghis)
- Bugfix and improvements (nicoco, mostly)
Details
-
Fix connections to Snikket instances: Snikket decided to forbid PLAIN
authentication, which is good but exposed a bug in slixmpp, which was trying
to doSCRAM-SHA-1-PLUSauthentication on TLSv1.3 using thetls-uniquechannel
binding, which is forbidden by spec on this version of TLS as it has various
known attacks. TLSv1.3 has thetls-exporterbinding which replacestls-unique,
but we cannot currently use it in slixmpp because CPython does not support it.
For now, connections to Snikket instances will use SCRAM-SHA-1 without binding
(note that the stanzas may saySCRAM-SHA-1-PLUS, but it is the SCRAM payload
which is important here). -
Performance fix for XEP-0115 (Entity Capabilities): previously, when receiving
the same hash many times, while it was not in cache, slixmpp would fire tons of
similar requests at the same time, which would predictably yield the same result.
Nicoco made a fix, tested it in Slidge and upstreamed it, which will greatly improve
the situation. -
Documentation: New contributor genghis has taken the task of adding a page listing
various projects and bots that use slixmpp, both for their own visibility and to give
more examples of projects using slixmpp. -
Bugfixes: nicoco has made various improvements to XEP plugins used in Slidge, such
as XEP-0356, XEP-0428, XEP-0461, or XEP-0313 plugins. sxavier added helpful documentation
and example to the XEP-0221 plugin, and Daniel Roschka fixed an issue where repeatedly
callingconnect()would wipe the previously set connection parameters.
Downloads
-
Source code (ZIP)
7 downloads
-
Source code (TAR.GZ)
76 downloads
-
slix-1.8.4 Stable
released this
2023-05-28 11:01:11 +00:00 | 53 commits to master since this releaseslixmpp 1.8.4 release
Thanks to all contributors & maintainers for this release, most notably to nicoco who has made most of the changes, and got commit access to the project in the hope he can integrate the changes he needs for the Slidge project more easily.
This releases fixes the compatibility with Python 3.11, and should still be compatible with Python 3.7, but it will likely be the last release with support.
Breaking changes
No changes on the public API in this release should be breaking. Internally, one thing of note is that the
slixmpp.plugins.__all__array is no longer misused for holding the available plugins list. Unless external code manipulates or refers to this array, it should not be impacted.New plugins
for most of them, just the
Stanza plugins- XEP-0234: Jingle file transfer
- XEP-0292: Vcard4 over xmpp
- XEP-0372: References
- XEP-0385: Stateless inline media sharing
- XEP-0402: PEP native bookmarks
- XEP-0447: Stateless file sharing
Improvements
typing/linting:
- OptJidStr and BasePlugin are now listed in
__all__,
so that linters don't complain when they are imported
XMPPError:
- Can now take an additional 'by' attribute
- Use typing.Literal for conditions
- (optionally) Use the jabber:component:accept with ComponentXMPP
JID:
__init__: optional bare argument to clear resource
XEP-0050 (Ad-Hoc Commands): allow functools.partial-wrapped coroutines for handlers
XEP-0461 (Message Replies):
- Helper methods to set and get fallback text
XEP-0377 (Spam Reporting):
- Update to latest spec
Fixes
Message:
- Message.reply(): do not use bare JID for the reply recipient
XEP-0027 (Current Jabber OpenPGP Usage):
- Ensure that we operate on the correct python type when parsing gpg data
XEP-0030 (Service Discovery):
- Allow passing extra Iq arguments (e.g. timeout, etc)
- Python 3.11 compatibility (asyncio.wait only accept tasks)
- Get_items(): always set a 'from' attribute for ComponentXMPP
- Get_items(): fix local calls
XEP-0045 (Multi-User Chat):
- Remove debug print
XEP-0054 (vcard-temp):
- Reply with item-not-found when no vcard-temp is set, instead of raising AttributeError
XEP-0077 (In-Band Registration):
- Allow the register stanzas before session is started
XEP-0461 (Message Replies):
- Use integers for fallback character counting
- Fix character counting for fallback
- Use new namespace for fallback
XEP-0115 (Entity Capabilities):
- Fix a missing await statement that led to a traceback
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
slix-1.8.3 Stable
released this
2022-11-12 20:40:38 +00:00 | 116 commits to master since this releaseSlixmpp 1.8.3 release
- Fix CVE-2022-45197: missing certificate hostname validation
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
27 downloads
-
slix-1.8.2 Stable
released this
2022-04-06 20:45:44 +00:00 | 166 commits to master since this releaseThis release fixes RFC 3920 session building (#3468), improves certificate errors handling, and adds an XEP-0454 (OMEMO Media Sharing) plugin.
The python cryptography package is required to use the XEP-0454 plugin.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
Source code (ZIP)
-
slix-1.8.1 Stable
released this
2022-03-20 19:27:04 +00:00 | 191 commits to master since this releaseThis release is a bugfix release, to address one issue raised with unit tests not always passing, and with possible compatibility issues with defusedxml, which has been made opt-in instead of opt-out compared to 1.8.0.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
Source code (ZIP)
-
slix-1.8.0 Stable
released this
2022-02-27 21:25:56 +00:00 | 198 commits to master since this releaseSlixmpp 1.8.0 is out, thanks to pep., Link Mauve, mathieui, Nicolas Cedilnik,
Tim-Oliver Husser, southerntofu as well as the various people who run slixmpp
and report bugs!The most important part of this release is that it fixes compatibility with
python 3.10, but there are also plenty of changes and bugfixes!Breaking changes
Many XEPs have been modified to accomodate an internal change, and as a
result their public APIs have been modified. Slixmpp has an "internal API"
for plugins, inherited from SleekXMPP which allows users of the library to
substitute internal functions with their own, in order to e.g. provide a
different storage backend (many default to in-memory), etc. This API has
always been synchronous, which is not ideal in an asyncio library, and puts
huge limits on what is possible to do.This change makes it possible to use async functions with the internal API,
and as a result it forces us to change XEPs using this API to async in the
relevant methods.As a rule of thumb, thin wrappers around del/set are generally preserved and return a
future to guarantee that the task is done, while getters (which would require awaiting
anyway when returning a future) are now pure coroutines. This inconsistency is a
tradeoff to prevent wider changes across slixmpp internals and programs using it.- XEP-0012, Last Activity:
begin_idle,end_idle,start_uptime,set_last_activity,
del_last_activitynow return futures.
- XEP-0027: GPG
get_keyidsandget_keyidare now coroutines.set_keyidanddel_keyidnow return a Future.
- XEP-0030: Disco
supports,has_identity,get_info,get_itemsare now coroutinesset_info``set_items,del_items,add_item,add_identity,
del_identity,set_identities,del_identities,add_feature,
del_feature,set_feature,set_features,del_features
now return a Future
- XEP-0054: Vcard-Temp
get_vcard,publish_vcardare now coroutines.
- XEP-0095: Stream Initiation
acceptanddeclineare now coroutines.
- XEP-0115: Entity Capabilities
get_verstring,get_capsare now coroutines.assign_verstring,cache_capsnow return a Future.
- XEP-0128: Extended disco
set_extended_info,add_extended_infoanddel_extended_inforeturn Futures.
- XEP-0231: BoB
get_bobandset_bobare now coroutines.del_bobreturns a Future.
- XEP-0319: Idle
idleandactiveare now coroutines.
Deprecation
XMLStream.process() is now deprecated, and will be removed in the next version.
This shorthand makes things more confusing for new users, and complicates
integration with other asyncio libraries.Security
-
If defusedxml is available, it will be used, to mitigate XML parser vulns
-
XMLStream.ca_certsshould be a list of paths to the CA certificates
New XEPs
Nicoco (Nicolas Cedilnik) contributed an implementation of XEP-0356
(privileged entities), and XEP-100 (gateway interaction).XEP-0004: Forms
The Form element (
{jabber:x:data}x) can now be accessed properly if their are
several available in a parent element, through a 'forms' multi attribute.XEP-0045: MUC
- Add an async join method (returns once the rooms is properly joined, or
raises on error). - Deprecate the old join_muc() API
XEP-0077: Registration
Nicoco added the possibility to register with components to the existing
XEP-0077 implementation.XEP-0313: MAM
- MAM preferences have been split into an XEP-0441 plugin.
- Tests have been added
- An
iterate()method has been added, which should be easier to use.
MIX
- XEP-0369: add events for participant and channels
- XEP-0405: Add a method to retrieve annotated roster items
- Add a simple MIX bot
Stanza API
- Make
StanzaBase.get_plugina public API, so that slixmpp users can check
for the existence of a substanza without risking to create it.
Documentation
-
Change the sphinx theme to Furo which
has a dark mode, and looks good. See
slixmpp.readthedocs.io. -
Improve the toctree to be more logical
-
Update obsolete documentation and tutorials (and add some)
-
Update the event index
-
Add the proper XEP title instead of the number to the index, for easier
discovery and search.
Testing
More integration and stanza/stream tests have been added, which gives us
more confidence on the overall stability.Examples
The HTTPUpload example has been updated to include an oob reference, because
many people were reusing the code as-is and wondering why clients were not
displaying their images inline.Internals
A lot of work in this release has been to incrementally type the internals of
slixmpp as well as the public interfaces, to make it easier to validate changes
and integrate seemlessy with the various IDEs and typecheckers. It is still
very much a work in progress, in part due to the dynamicity of the API, but
it should help catch some errors.The library now ships with a py.typed file to indicate that it is shipping
type annotations.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
24 downloads
- XEP-0012, Last Activity:
-
slix-1.7.1 Stable
released this
2021-04-30 16:52:45 +00:00 | 477 commits to master since this releaseThis release fixes an issue that happened when an outgoing stanza filter which is a coroutine took too long to process.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
Source code (ZIP)
-
slix-1.7.0 Stable
released this
2021-01-29 20:57:52 +00:00 | 479 commits to master since this releaseslixmpp 1.7.0 release
New plugins:
- XEP-0382: spoiler messages
Fixes and improvements:
- Fixes one critical bug of 1.6.0 preventing any reconnect
- Also change lots many things in the way connects and disconnects
are handled - Improvements to XEP-0199 to handle disconnects better
- Improvements to XEP-0198
- Improvements to XEP-0045 (more available stanza elements,
typing issues, new helpers) - Documentation fixes to update code that would only work with
SleekXMPP
Thanks to everyone for this release!
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
24 downloads
-
slix-1.6.0 Stable
released this
2020-12-12 16:04:15 +00:00 | 532 commits to master since this releaseslixmpp 1.6.0 release
New plugins:
- XEP-0353: Jingle Message Initiation
- XEP-0359: Unique and stable stanza IDs
- This was already partially implemented
- XEP-0369: MIX-Core
- XEP-0377: Spam reporting
- XEP-0403: MIX-Presence
- XEP-0404: MIX-Anon
- XEP-0405: MIX-PAM
- XEP-0421: Anonymous unique occupant identifiers for MUCs
- Was already present as "protoxep_occupantid" in a different version
- XEP-0422: Message Fastening
- XEP-0424: Message Retraction
- XEP-0425: Message Moderation
- XEP-0428: Fallback Indication
- XEP-0437: Room Activity Indicators
- XEP-0439: Quick response
- XEP-0444: Message Reactions
- Was already present as "protoxep_reactions" in a different version
Many of those extensions are experimental and the specification is
subject to change, which is to keep in mind when using them.Note: A new dependency, "emoji" is required for XEP-0444, and has been added
to extras_require, where "aiohttp" (only required for XEP-0363) has been moved
too.Fixes & Improvements:
- XEP-0045:
- Split file into its own package, better structure, cleanup, stanza elements… (pep)
- rewrote broken function as coroutines, more elements (mathieui)
- XEP-0047: Fix the max sequence number (mathieui)
- XEP-0115: Add missing "from" attribute to disco for components (aearil)
- XEP-0333: add missing feature to session (mathieui)
- XEP-0352: enable the feature only on clientxmpp (Link Mauve)
- XEP-0363: added missing callback on upload request (cnngimenez)
- First integration tests (mathieui)
- Cancel filters on disconnect (ehendrix23)
- English and Polish custom plugin tutorials (Hoacyn)
- Removal of unused things due to python3.7 (Link Mauve)
- Doc improvements with the addition of the plugins (mathieui)
Deprecation notice:
When moving from sleekxmpp to slixmpp, many functions were kept in place but
instead returning a future (returned with iq.send()). Going forward, many of
those will instead be coroutines. This is necessary in order to provide better
return values (instead of leaving it up to the library user to fetch the elements
manually from stanzas. Most of the newly added XEPs work this way, and the previously
broken functions from XEP-0045 are now also coroutines.It means calling for example
self.xmpp.plugin['xep_0045'].set_role()without
awaiting on the result has no effect.tl;dr: await coroutines
Thanks to all maintainers and contributors for this release!
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download