django应用程序的xmpp集成变得简单

django-xmpp的Python项目详细描述


django应用程序的xmpp集成变得简单!

注意!

此应用程序处于早期开发阶段。每一个帮助或反馈都是值得赞赏的。

功能

  • ConverseJS网络聊天集成
  • 支持MUC自动连接
  • 支持用户查询
  • 使用ejabberd_auth management命令进行ejabberd django身份验证
  • 无需存储用户凭据的单点登录功能 (需要使用ejabberd_auth)
  • 在首次登录时使用Gravatar和vCard设置虚拟形象

安装

通过pip安装django-xmpp

pip install django-xmpp

xmppdjango_gravatar添加到已安装的应用程序中:

INSTALLED_APPS = (
    ...
    'django_gravatar',
    'xmpp',
)

设置最重要的变量:

XMPP_DOMAIN = 'example.com'
XMPP_BOSH_SERVICE_URL = 'https://xmpp.example.com:5280/http-bind'

可选择设置ConverseJS以满足您的需要:

XMPP_CONVERSEJS_SETTINGS = {
    'allow_contact_removal': False,
    'allow_contact_requests': True,
    'auto_subscribe': True,
    'allow_logout': False,
    'allow_muc': True,
    'allow_otr': False,
    'allow_registration': False,
    'message_carbons': True,
    'hide_muc_server': True,
    'use_vcards': True,
    'animate': True,
    'play_sounds': True,
    'xhr_user_search': True,
    'sounds_path': '%ssounds/' % STATIC_URL,
    'visible_toolbar_buttons': {
         'call': False,
         'clear': False,
         'emoticons': True,
         'toggle_participants': False,
    }
}

urls.py中包含xmpp.urls

urlpatterns = [
    ...
    url(r'^xmpp/', include("xmpp.urls")),
]

在基本模板中使用conversejs:

{% load xmpp_tags %}
{% conversejs_initialize %}

ejabberd django身份验证

创建ejaberd_auth.sh文件,只需调用ejabberd_auth 管理指挥部。调整以适应您的环境(如virtualenv):

#!/bin/bash
cd <path_to_your_django_project>
python manage.py ejabberd_auth $@

编辑ejabberd.yml并添加外部验证脚本,例如:

host_config:
    "example.com":
        auth_method: external
        extauth_program: "/<path_to_your_project>/ejabberd_auth.sh"

设置

这些是您可以使用的所有可用设置。

xmpp_bosh_service_url
conversejs bosh连接的url
xmpp_域
默认xmpp域
xmpp_domain_muc
多用户聊天的域(默认Converence<;xmpp_domain>;)
xmpp_conversejs_auth
conversejs的身份验证类型(prebind不是 支持,因此登录是唯一的选择)
xmpp_conversejs_设置
传递给converse.initialize的设置字典。 有关可用选项的更多列表,请参见Converse.js docs
xmpp_启用
完全启用或禁用xmpp
xmpp更新vcard
启用或禁用vCard更新
xmpp更新vcard小时数
每n小时更新一次vCard(默认为false)

关于用户名的说明

jabber id不区分大小写(因此“MyUser@domain.com”和“myuser@domain.com”是同一个帐户)。相比之下,默认django User模型中的username字段是区分大小写的(请参见this Django ticket)。这意味着django中的两个单独的“myuser”和“myuser”帐户在xmpp服务器上具有相同的jid。ejabberd_authmanagement命令不会对此类用户进行身份验证,它们在converse和其他xmpp客户机中都会看到“身份验证失败”。

为了避免这种冲突,建议使用自定义的User模型,该模型使用RegexField强制使用唯一的小写用户名。也应该排除jabber id中不允许的其他字符。有关详细信息,请参见this guide

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Docker&SeleniumJava:无法在Docker容器上运行的chrome浏览器中上载图像/文件   在python中运行java命令   Java垃圾收集器异常行为   java java是否根据底层操作系统执行字节码级优化?   java是否可以休眠自定义查询返回映射而不是列表?   java Spring引导RabbitMQ接收器Jackson反序列化到POJO   apache flex在ActionScript3中创建对象相等“HashMap”作为java HashMap   java如何在Eclipse集成中切换JProfiler启动器   缓存JSP页面结果的java最佳实践?   java集成jaxb绑定文件,使用CXF生成基于WSDL的客户端   java为什么在上传操作结束之前,客户端没有检测到HttpServletResponse的PrintWriter内容?   java在接口内创建类和在类内创建接口有什么用   java向文件写入错误Android Studio   java合并多个RealmList并对结果列表排序?   谷歌API视觉java。lang.NoSuchMethodError   java如何使用逗号分别存储每个值,然后将它们存储到单独的数组中?