Skip to main content

A fork of SleekXMPP with TLS cert validation disabled, intended only to be used with the sucks project

Project description

This fork of SleekXMPP has TLS certificate validation DISABLED, specifically to be used by wpietri/sucks. This is a temporary hack solution for the issues with Ecovacs certificates.

SleekXMPP is an MIT licensed XMPP library for Python 2.7/3.4+, and is featured in examples in XMPP: The Definitive Guide by Kevin Smith, Remko Tronçon, and Peter Saint-Andre. If you’ve arrived here from reading the Definitive Guide, please see the notes on updating the examples to the latest version of SleekXMPP.

SleekXMPP’s design goals and philosphy are:

Low number of dependencies

Installing and using SleekXMPP should be as simple as possible, without having to deal with long dependency chains.

As part of reducing the number of dependencies, some third party modules are included with SleekXMPP in the thirdparty directory. Imports from this module first try to import an existing installed version before loading the packaged version, when possible.

Every XEP as a plugin

Following Python’s “batteries included” approach, the goal is to provide support for all currently active XEPs (final and draft). Since adding XEP support is done through easy to create plugins, the hope is to also provide a solid base for implementing and creating experimental XEPs.

Rewarding to work with

As much as possible, SleekXMPP should allow things to “just work” using sensible defaults and appropriate abstractions. XML can be ugly to work with, but it doesn’t have to be that way.

Get the Code

Get the latest stable version from PyPI:

pip install sleekxmpp

The latest source code for SleekXMPP may be found on Github. Releases can be found in the master branch, while the latest development version is in the develop branch.

Latest Release
Develop Releases

Installing DNSPython

If you are using Python3 and wish to use dnspython, you will have to checkout and install the python3 branch:

git clone http://github.com/rthalley/dnspython
cd dnspython
git checkout python3
python3 setup.py install

Discussion

A mailing list and XMPP chat room are available for discussing and getting help with SleekXMPP.

Mailing List

SleekXMPP Discussion on Google Groups

Chat

sleek@conference.jabber.org

Documentation and Testing

Documentation can be found both inline in the code, and as a Sphinx project in /docs. To generate the Sphinx documentation, follow the commands below. The HTML output will be in docs/_build/html:

cd docs
make html
open _build/html/index.html

To run the test suite for SleekXMPP:

python testall.py

The SleekXMPP Boilerplate

Projects using SleekXMPP tend to follow a basic pattern for setting up client/component connections and configuration. Here is the gist of the boilerplate needed for a SleekXMPP based project. See the documetation or examples directory for more detailed archetypes for SleekXMPP projects:

import logging

from sleekxmpp import ClientXMPP
from sleekxmpp.exceptions import IqError, IqTimeout


class EchoBot(ClientXMPP):

    def __init__(self, jid, password):
        ClientXMPP.__init__(self, jid, password)

        self.add_event_handler("session_start", self.session_start)
        self.add_event_handler("message", self.message)

        # If you wanted more functionality, here's how to register plugins:
        # self.register_plugin('xep_0030') # Service Discovery
        # self.register_plugin('xep_0199') # XMPP Ping

        # Here's how to access plugins once you've registered them:
        # self['xep_0030'].add_feature('echo_demo')

        # If you are working with an OpenFire server, you will
        # need to use a different SSL version:
        # import ssl
        # self.ssl_version = ssl.PROTOCOL_SSLv3

    def session_start(self, event):
        self.send_presence()
        self.get_roster()

        # Most get_*/set_* methods from plugins use Iq stanzas, which
        # can generate IqError and IqTimeout exceptions
        #
        # try:
        #     self.get_roster()
        # except IqError as err:
        #     logging.error('There was an error getting the roster')
        #     logging.error(err.iq['error']['condition'])
        #     self.disconnect()
        # except IqTimeout:
        #     logging.error('Server is taking too long to respond')
        #     self.disconnect()

    def message(self, msg):
        if msg['type'] in ('chat', 'normal'):
            msg.reply("Thanks for sending\n%(body)s" % msg).send()


if __name__ == '__main__':
    # Ideally use optparse or argparse to get JID,
    # password, and log level.

    logging.basicConfig(level=logging.DEBUG,
                        format='%(levelname)-8s %(message)s')

    xmpp = EchoBot('somejid@example.com', 'use_getpass')
    xmpp.connect()
    xmpp.process(block=True)

Credits

Main Author: Nathan Fritz

fritzy@netflint.net, @fritzy

Nathan is also the author of XMPPHP and Seesmic-AS3-XMPP, and a former member of the XMPP Council.

Co-Author: Lance Stout

lancestout@gmail.com, @lancestout

Contributors:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sleekxmppfs-1.4.1.tar.gz (867.2 kB view details)

Uploaded Source

Built Distributions

sleekxmppfs-1.4.1-py3.10.egg (1.0 MB view details)

Uploaded Source

sleekxmppfs-1.4.1-py3-none-any.whl (437.4 kB view details)

Uploaded Python 3

File details

Details for the file sleekxmppfs-1.4.1.tar.gz.

File metadata

  • Download URL: sleekxmppfs-1.4.1.tar.gz
  • Upload date:
  • Size: 867.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for sleekxmppfs-1.4.1.tar.gz
Algorithm Hash digest
SHA256 af34edada840e6798e8f1aad063669dc3358075b19bd1662cdafc5e3c33858d9
MD5 5a40c7136a2e570da52c425be16783c0
BLAKE2b-256 1dbfc157f8fbbde3b196fada67cd48de89810b0cab3121ff9eafa95d788abf63

See more details on using hashes here.

Provenance

File details

Details for the file sleekxmppfs-1.4.1-py3.10.egg.

File metadata

  • Download URL: sleekxmppfs-1.4.1-py3.10.egg
  • Upload date:
  • Size: 1.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for sleekxmppfs-1.4.1-py3.10.egg
Algorithm Hash digest
SHA256 957264d14b65d502c645e52cc37e4076eafebf82686800dd3085cbac473dab65
MD5 dcfd53c268b3fd52194ee7bcbb62b800
BLAKE2b-256 9ca2fa7a7ea50908eef0ddcac44d0f1d64a0ac19216d15bb5274cda961a3ce6b

See more details on using hashes here.

Provenance

File details

Details for the file sleekxmppfs-1.4.1-py3-none-any.whl.

File metadata

  • Download URL: sleekxmppfs-1.4.1-py3-none-any.whl
  • Upload date:
  • Size: 437.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.0

File hashes

Hashes for sleekxmppfs-1.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 41d993a09bf12cfbb645a88eee213b7b9b35a46bf9f786d8214ac20fb47804d8
MD5 2a9b56697704ff2bc97eebcfa0414928
BLAKE2b-256 9095d0315ccf6e429259bbca9f9dff159d8aa3ed47ba20076f2b2a0ec2666dae

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page