Metadata-Version: 2.1
Name: slidge
Version: 0.1.0a3
Summary: XMPP bridging framework
Home-page: https://sr.ht/~nicoco/slidge/
License: AGPL-3.0-or-later
Author: Nicolas Cedilnik
Author-email: nicoco@nicoco.fr
Requires-Python: >=3.9,<4.0
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.9
Provides-Extra: discord
Provides-Extra: facebook
Provides-Extra: mattermost
Provides-Extra: signal
Provides-Extra: skype
Provides-Extra: steam
Provides-Extra: telegram
Requires-Dist: ConfigArgParse (>=1.5.3,<2.0.0)
Requires-Dist: Pillow (>=8.1.0)
Requires-Dist: SkPy (>=0.10.4,<0.11.0); extra == "skype"
Requires-Dist: aiohttp (>=3.6.0)
Requires-Dist: aiosignald (>=0.3.0alpha7,<0.4.0); extra == "signal"
Requires-Dist: aiotdlib (>=0.19.2,<0.20.0); extra == "telegram"
Requires-Dist: discord.py-self (>=1.9.2,<2.0.0); extra == "discord"
Requires-Dist: emoji (>=2.0.0,<3.0.0); extra == "mattermost"
Requires-Dist: mattermost-api-reference-client (>=4.0.0,<5.0.0); extra == "mattermost"
Requires-Dist: mautrix-facebook (>=0.4.0,<0.5.0); extra == "facebook"
Requires-Dist: pickle-secure (>=0.9.99,<0.10.0)
Requires-Dist: pydantic; extra == "telegram"
Requires-Dist: qrcode (>=7.3)
Requires-Dist: slixmpp (>=1.8.2,<2.0.0)
Requires-Dist: steam[client] (>=1.3.0,<2.0.0); extra == "steam"
Description-Content-Type: text/markdown

Slidge 🛷
========

[Home](https://sr.ht/~nicoco/slidge) |
[Source](https://sr.ht/~nicoco/slidge/sources) |
[Issues](https://sr.ht/~nicoco/slidge/trackers) |
[Patches](https://lists.sr.ht/~nicoco/public-inbox) |
[Chat](xmpp:slidge@conference.nicoco.fr?join)

Turn any XMPP client into that fancy multiprotocol chat app that every cool kid want.

[![Documentation status](https://readthedocs.org/projects/slidge/badge/?version=latest)](https://slidge.readthedocs.io/)
[![builds.sr.ht status](https://builds.sr.ht/~nicoco/slidge/commits/master/.build.yml.svg)](https://builds.sr.ht/~nicoco/slidge/commits/master/.build.yml?)
[![pypi](https://badge.fury.io/py/slidge.svg)](https://pypi.org/project/slidge/)

Slidge is a general purpose XMPP (puppeteer) gateway framework in python.
It's a work in progress, but it should make
[writing gateways to other chat networks](https://slidge.readthedocs.io/en/latest/dev/tutorial.html)
(*plugins*) as frictionless as possible.

It comes with a few plugins included, implementing at least basic direct messaging and often more "advanced"
instant messaging features:

|            | ⏻[¹] | …[²] | ✓[³] | 🗎[⁴] | ✎[⁵] | ☺[⁶] | 🗑[⁷]  | ↵[⁸] | 
|------------|------|------|------|-------|------|------|--------|------|
| Signal     | -    | ✓    | ✓    | ✓     | -    | ✓    | ✓      | ✓    |
| Telegram   | ✓    | ✓    | ✓    | ✓     | ✓    | ✓    | ✓      | ✓    |
| Discord    | ✗    | ✓    | -    | ✓     | ✓    | ~    | ✓      | ✓    |
| Steam      | ✓    | ✓    | -    | ✗     | -    | ~    | -      | -    |
| Mattermost | ~    | ✓    | -    | ✓     | ✓    | ✓    | ✓      | ✗    |
| Facebook   | ✗    | ✓    | ✓    | ✓     | ✓    | ✓    | ✓      | ✓    |
| Skype      | ✗    | ✗    | ✗    | ~     | ✗    | ✗    | ✗      | ✗    |


[¹]: https://xmpp.org/rfcs/rfc6121.html#presence
[²]: https://xmpp.org/extensions/xep-0085.html
[³]: https://xmpp.org/extensions/xep-0333.html
[⁴]: https://xmpp.org/extensions/xep-0363.html
[⁵]: https://xmpp.org/extensions/xep-0308.html
[⁶]: https://xmpp.org/extensions/xep-0444.html
[⁷]: https://xmpp.org/extensions/xep-0424.html
[⁸]: https://xmpp.org/extensions/xep-0461.html


(this table may not be entirely accurate, but **in theory**, stuff marked ✓ works)

NB: - means that the legacy network does not have an equivalent of this XMPP feature
    (because XMPP is better, what did you think?)

Status
------

Slidge is alpha-grade software.
Right now, only direct messages are implemented, no group chat stuff at all.
Direct messaging does (more or less) work though.
Any contribution whatsoever (testing, patches, suggestions, beer, …) is more than welcome.
Don't be shy!

Testing locally should be fairly easy, so please go ahead and give me some
feedback, through the [MUC](xmpp:slidge@conference.nicoco.fr?join), the
[issue tracker](https://todo.sr.ht/~nicoco/slidge) or in my
[public inbox](https://lists.sr.ht/~nicoco/public-inbox).

Installation
------------

#### docker-compose

Docker-compose spins up a local XMPP server preconfigured for you., with a ``test@localhost`` / ``password``
account

```sh
docker-compose up
```

For the other options, you need a
[configured](https://slidge.readthedocs.io/en/latest/admin/general.html#configure-the-xmpp-server)
XMPP server.

#### poetry

```sh
poetry install --extras signal  # you can replace signal with any network listed in the table above
poetry run python -m slidge --legacy-module=slidge.plugins.signal
```

#### pip

```sh
pip install slidge[signal]  # you can replace signal with any network listed in the table above
python -m slidge --legacy-module=slidge.plugins.signal
```

### XMPP client

#### movim

If you used docker-compose, you should be able to use the [movim](https://movim.eu) client
from your browser at http://localhost:8888

Unfortunately, the movim UI thinks that ``test@localhost`` is not a valid JID and does not let you click
on the "Connect" button.
As a workaround, use your browser dev tools to inspect and modify the ``<input id="username"`` in order to
remove the ``pattern="^[^...`` attribute.

Then go to the Configuration/Account tab. You should be able to register to the slidge gateways from here.

#### Gajim

Install and launch [gajim](https://gajim.org) and add your XMPP account.
Go to "Accounts"→"Discover services".
You should see the slidge gateways as server components.

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

-   [Spectrum](https://www.spectrum.im/)
-   [Bitfrost](https://github.com/matrix-org/matrix-bifrost)
-   [Mautrix](https://github.com/mautrix)
-   [matterbridge](https://github.com/42wim/matterbridge)
-   [XMPP-discord-bridge](https://git.polynom.me/PapaTutuWawa/xmpp-discord-bridge)

