Skip to main content

XMPP bridging framework

Project description

Slidge logo

Chat

woodpecker CI status coverage

pypi version debian unstable version

Slidge is an XMPP (puppeteer) gateway library in python. It makes writing gateways to other chat networks (legacy modules) as frictionless as possible. It supports fancy IM features, such as (emoji) reactions, replies, and retractions. The full list of supported XEPs in on xmpp.org.

Status

Slidge is beta-grade software. It support groups and 1:1 chats. Try slidge and give us some feedback, through the MUC or the issue tracker. Don't be shy!

Usage

A minimal (and fictional!) slidge-powered "legacy module" looks like this:

from cool_chat_lib import CoolClient
from slidge import BaseGateway, BaseSession
from slidge.contact import LegacyContact
from slidge.group import LegacyMUC
from slidge.db import GatewayUser


class Gateway(BaseGateway):
    # Various aspects of the gateway component are configured as class
    # attributes of the concrete Gateway class
    COMPONENT_NAME = "Gateway to the super duper chat network"


class Session(BaseSession):
    def __init__(self, user: GatewayUser):
        super().__init__(user)
        self.legacy_client = CoolClient(
            login=user.legacy_module_data["username"],
            password=user.legacy_module_data["password"],
        )

    async def on_text(self, chat: LegacyContact | LegacyMUC, text: str, **kwargs):
        """
        Triggered when the slidge user sends an XMPP message through the gateway
        """
        self.legacy_client.send_message(text=text, destination=chat.legacy_id)

There's more in the tutorial!

Installation

⚠️ Slidge is a lib for gateway developers, if you are an XMPP server admin and want to install gateways on your server, you are looking for a slidge-based gateway. or the slidge-debian bundle.

Slidge is available on codeberg (python packages and containers) and pypi. Refer to the docs for details.

About privacy

Slidge (and most if not all XMPP gateway that I know of) will break end-to-end encryption, or more precisely one of the 'ends' become the gateway itself. If privacy is a major concern for you, my advice would be to:

  • use XMPP + OMEMO
  • self-host your gateways
  • have your gateways hosted by someone you know AFK and trust

Related projects

Thank you, Trung, for the slidge logo!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

slidge-0.2.7.tar.gz (2.5 MB view details)

Uploaded Source

Built Distribution

slidge-0.2.7-py3-none-any.whl (199.9 kB view details)

Uploaded Python 3

File details

Details for the file slidge-0.2.7.tar.gz.

File metadata

  • Download URL: slidge-0.2.7.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.3

File hashes

Hashes for slidge-0.2.7.tar.gz
Algorithm Hash digest
SHA256 eef28a47057040f05208f8a1d39ff156fdf6f0466c54ded1a8c20e356ae5d4cc
MD5 87f29eff4fdfa2d1b15205a6b11d1bef
BLAKE2b-256 da0099799805a0e12e560265f141b938771201b5d493ccdae2ce3fcd41600bcc

See more details on using hashes here.

File details

Details for the file slidge-0.2.7-py3-none-any.whl.

File metadata

  • Download URL: slidge-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 199.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.6.3

File hashes

Hashes for slidge-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 32a0ac019bdf7a4046ebaee9bac7104117c0bebb70c22c8155413f9a9f573ee5
MD5 e65203e13994fd9d5e8658cd2f9cff76
BLAKE2b-256 555e6cadb0a2a6f0b6e5de0f6959fdda836c5ab53c7d324f71ea44f46edc09c7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page