Skip to content

DinoThor/PyJabber

Repository files navigation

PyJabber

image

Documentation Status


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

python -m pyjabber --help
Usage: python -m 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]
  --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.

A formated logger can be added, in order to retrive the messages from the INFO, DEBUG and ERROR levels

2024-05-03 11:45:51.229 | INFO     | pyjabber.server:run_server:52 - Starting server...
2024-05-03 11:45:51.231 | INFO     | pyjabber.server:run_server:73 - Server is listening clients on ('127.0.0.1', 5222)
2024-05-03 11:45:51.231 | INFO     | pyjabber.server:run_server:75 - Server started...

Features

Status Description
TLS Implemented v1.2, with localhost certificate included
SASL Implemented PLAIN
Roster Implemented CRUD avaliable
Presence Partialy implemented subscribe, unsubscribed, initial presence and unavailable

Plugins

Status Description
XEP-0077 IMPLEMENTED
XEP-0199 IMPLEMENTED