sleekxmpp的一个分支,禁用了tls证书验证,仅用于sucks项目
sleekxmppfs的Python项目详细描述
这个sleekxmpp分支禁用了tls证书验证,特别是 供wpiteri/sucks使用。这是一个临时的黑客解决方案 有ecovacs证书。
sleekxmpp是麻省理工学院许可的用于python 2.6/3.1+的xmpp库, 并在 XMPP: The Definitive Guide 作者:凯文·史密斯、雷姆科·特隆和彼得·圣安德烈。如果你到了 从阅读权威指南开始,请参阅更新说明 最新版本的sleekxmpp的示例。
SleekXMPP的设计目标和理念是:
- 依赖项数量少
安装和使用sleekxmpp应尽可能简单,无需 必须处理长的依赖链。
作为减少依赖项数量的一部分,一些第三方 模块包含在thirdparty目录中的sleekxmpp中。 从该模块导入第一次尝试导入现有安装的 在可能的情况下,在加载打包版本之前进行版本设置。
- 每个xep作为插件
- 遵循python的“包含电池”方法,目标是 为所有当前活动的XEP(最终版和草稿版)提供支持。自从 添加xep支持是通过易于创建的插件完成的,希望是 也为实验的实施和创造提供了坚实的基础 Xeps.
- 奖励您使用
- sleekxmpp应该尽可能允许使用 合理的默认值和适当的抽象。XML可能很难工作 但不一定非要这样。
获取代码
从pypi获得最新的稳定版本:
pip install sleekxmpp
sleekxmpp的最新源代码可以在Github上找到。版本可以在 masterbranch,而最新的开发版本在 develop分支。
- 最新版本
- 开发版本
安装dnspython
如果您使用python3并希望使用dnspython,则必须签出并 安装python3分支:
git clone http://github.com/rthalley/dnspython cd dnspython git checkout python3 python3 setup.py install
讨论
邮件列表和xmpp聊天室可供讨论和获取 帮助使用sleekxmpp。
文档和测试
文档既可以在代码中内联找到,也可以作为sphinx项目在/docs中找到。 要生成sphinx文档,请执行以下命令。HTML输出将 在docs/_build/html:
cd docs make html open _build/html/index.html
运行sleekxmpp的测试套件:
python testall.py
光滑的xmpp样板文件
使用sleekxmpp的项目倾向于遵循设置客户机/组件的基本模式 连接和配置。这是一个光滑的xmpp所需的样板文件的要点。 基于项目。有关 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
内森也是xmpphp和Seesmic-AS3-XMPP的作者,也是 XMPP委员会。
- 合著者:lance stout
- lancestout@gmail.com, @lancestout
- 贡献者:
- 布莱恩·贝格斯(macdiesel)
- 丹恩·马滕斯(dannmartens)
- 弗洛伦特勒科兹(louiz)
- 凯文·史密斯(Kev,http://kismith.co.uk)
- 雷姆科·特隆森(remko,http://el-tramo.be)
- 泰罗杰斯(te-je)
- 汤姆尼科尔斯(tomstrummer)