Skip to main content

XMPP integration for Django app made simple!

Features

  • ConverseJS web chat integration

  • Support for MUC auto join

  • Support for users query

  • Ejabberd Django authentication using ejabberd_auth management command

  • Single sign on functionality without storing user’s credentials (requires using ejabberd_auth)

  • Set avatar using gravatar and vCard during first login

Installation

Install django-xmpp via pip:

pip install django-xmpp

Add xmpp and django_gravatar into INSTALLED_APPS:

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

Setup most important variables:

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

Optionally setup ConverseJS to suit your needs:

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,
    }
}

Include xmpp.urls in your urls.py:

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

Use ConverseJS in your base template:

{% load xmpp_tags %}
{% conversejs_initialize %}

Ejabberd Django authentication

Create ejaberd_auth.sh file that will simply call ejabberd_auth management command. Adjust to suit your environment (eg. virtualenv):

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

Edit ejabberd.yml and add external auth script, eg.:

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

Settings

These are all available settings you may use.

XMPP_BOSH_SERVICE_URL

URL for ConverseJS BOSH connection

XMPP_DOMAIN

Default XMPP domain

XMPP_DOMAIN_MUC

Domain for multi user chats (default converence.<XMPP_DOMAIN>)

XMPP_CONVERSEJS_AUTH

Authentication type for ConverseJS (prebind is not supported so login is the only option)

XMPP_CONVERSEJS_SETTINGS

dictionary of settings passed to converse.initialize. For more list of available options see Converse.js docs

XMPP_ENABLED

Enable or disable XMPP at all

XMPP_UPDATE_VCARD

Enable or disable vCard update

XMPP_UPDATE_VCARD_HOURS

Update vCard every n hours (default False)

A note on usernames

Jabber IDs are case-insensitive (so “MyUser@domain.com” and “myuser@domain.com” are the same account). By contrast, the username field in the default Django User model is case-sensitive (see this Django ticket). This means two separate “MyUser” and “myuser” accounts in Django will have the same JID on the XMPP server. The ejabberd_auth management command will not authenticate such users, and they will both see “Authentication failed” in Converse and other XMPP clients.

To avoid such conflicts, it is recommended to use a custom User model that enforces unique lowercase usernames with a RegexField. Other characters not allowed in a Jabber ID should be excluded as well. See this guide for details.

Metadata

Release files for django-xmpp 0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-xmpp 0.4
File Size Uploaded
django-xmpp-0.4.tar.gz 453.1 kB Details

Release files / django-xmpp-0.4.tar.gz

Download URL django-xmpp-0.4.tar.gz
Size 453.1 kB
Tags Source
SHA-256 checksum
How to use checksums
53dab49cc711731b0906531074133d84b657e51f1ec8d9a23196dd0665c25d8e
BLAKE2b-256 checksum
How to use checksums
1542a93d2d2bda580285b961fc8d99e62a200cf297978f39f894ab09f8a9b2ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Python-urllib/3.6

Release history Release notifications | RSS feed

This release

0.4 This release

1 release file

0.3.2

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page