跳转到主要内容

SleekXMPP的一个分支,TLS证书验证已禁用,仅用于与sucks项目一起使用

项目描述

这个SleekXMPP的分支TLS证书验证已禁用,专门用于wpietri/sucks。这是Ecovacs证书问题的一个临时解决方案。

SleekXMPP是一个MIT许可的Python 2.7/3.4+ XMPP库,并被Kevin Smith、Remko Tronçon和Peter Saint-Andre所著的XMPP: The Definitive Guide中的示例所采用。如果您是通过阅读《Definitive Guide》来到这里的,请参阅有关更新示例到SleekXMPP最新版本的说明。

SleekXMPP的设计目标和理念是

依赖项数量少

安装和使用SleekXMPP应该尽可能简单,无需处理长依赖链。

作为减少依赖项的一部分,SleekXMPP在thirdparty目录中包含了一些第三方模块。从该模块导入时,首先尝试导入已安装的现有版本,如果可能的话。

每个XEP都是一个插件

遵循Python的“包含电池”方法,目标是支持所有当前活跃的XEPs(最终和草案)。由于XEP支持是通过易于创建的插件实现的,因此希望为实施和创建实验性XEPs提供坚实的基础。

易于合作

尽可能让SleekXMPP通过合理的默认值和适当的抽象实现“即插即用”。XML可以很丑陋,但不必如此。

获取代码

从PyPI获取最新稳定版本

pip install sleekxmpp

最新版本的SleekXMPP源代码可在Github上找到。发布版本位于master分支,而最新开发版本位于develop分支。

最新发布版本
开发版本

安装DNSPython

如果您使用Python3并且希望使用dnspython,您将需要检出并安装python3分支

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

讨论

提供邮件列表和XMPP聊天室,以讨论SleekXMPP并获取帮助。

邮件列表

SleekXMPP在Google Groups上的讨论

聊天

sleek@conference.jabber.org

文档和测试

文档既可以在代码中找到,也可以在/docs中的Sphinx项目中找到。要生成Sphinx文档,请遵循以下命令。HTML输出将在docs/_build/html

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

运行SleekXMPP的测试套件

python testall.py

SleekXMPP模板

使用SleekXMPP的项目通常遵循设置客户端/组件连接和配置的基本模式。以下是SleekXMPP项目所需的模板概要。有关SleekXMPP项目的更详细原型,请参阅文档或示例目录

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)

致谢

主要作者: Nathan Fritz

fritzy@netflint.net@fritzy

Nathan也是XMPPHP和Seesmic-AS3-XMPP的作者,并且曾是XMPP委员会的成员。

合著者: Lance Stout

lancestout@gmail.com@lancestout

贡献者

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

sleekxmppfs-1.4.1.tar.gz (867.2 kB 查看哈希值)

上传时间 源代码

构建分发

sleekxmppfs-1.4.1-py3.10.egg (1.0 MB 查看哈希值)

上传时间 源代码

sleekxmppfs-1.4.1-py3-none-any.whl (437.4 kB 查看哈希值)

上传时间 Python 3

由以下支持