Skip to content

DinoThor/PyJabber

Repository files navigation

PyJabber

Python 3.8 to 3.12

Build Status Coverage Status Documentation Status Monthly downloads Total downloads

PyJabber is a server for Jabber/XMPP entirely written in Python, with minimal reliance on external libraries.
It strives to provide a simple, lightweight, and comprehensible codebase, featuring a modular structure that facilitates extension through the implementation of necessary XEPs for specific use cases.
While initially designed to fulfill the requirements of the multi-agent system SPADE, it can be easily customized to suit any other purpose.

Installation

pip install pyjabber

Quick start

from pyjabber import Server

my_server = Server()
my_server.start()

or

pyjabber --help
Usage: pyjabber [OPTIONS]

Options:
  --host TEXT               Host name  [default: localhost]
  --client_port INTEGER     Server-to-client port  [default: 5222]
  --server_port INTEGER     Server-to-server port  [default: 5269]
  --family [ipv4|ipv6]      (ipv4 / ipv6)  [default: ipv4]
  --tls1_3                  Enables TLSv1_3
  --timeout INTEGER         Timeout for connection  [default: 60]
  --log_level [INFO|DEBUG]  Log level alert  [default: INFO]
  --log_path TEXT           Path to log dumpfile
  -D, --debug               Enables debug mode in Asyncio
  --help                    Show this message and exit.

Features

  Status Description
TLS Implemented v1.2 + v1.3. Localhost certificate included
SASL Implemented PLAIN, EXTERNAL (s2s)
Roster Implemented CRUD avaliable
Presence Implemented (local bound) Subscribe, Unsubscribed, Initial presence and Unavailable

Plugins

  Status Description
XEP-0077 IMPLEMENTED In Band Registration
XEP-0199 IMPLEMENTED Ping