slidge 0.1.0rc1__py3-none-any.whl → 0.1.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. slidge/__init__.py +54 -31
  2. slidge/__main__.py +51 -5
  3. slidge/command/__init__.py +28 -0
  4. slidge/command/adhoc.py +258 -0
  5. slidge/command/admin.py +193 -0
  6. slidge/command/base.py +441 -0
  7. slidge/command/categories.py +3 -0
  8. slidge/command/chat_command.py +288 -0
  9. slidge/command/register.py +179 -0
  10. slidge/command/user.py +250 -0
  11. slidge/contact/__init__.py +8 -0
  12. slidge/contact/contact.py +452 -0
  13. slidge/contact/roster.py +192 -0
  14. slidge/core/__init__.py +2 -0
  15. slidge/core/cache.py +121 -39
  16. slidge/core/config.py +116 -11
  17. slidge/core/gateway/__init__.py +3 -0
  18. slidge/core/gateway/base.py +895 -0
  19. slidge/core/gateway/caps.py +63 -0
  20. slidge/core/gateway/delivery_receipt.py +52 -0
  21. slidge/core/gateway/disco.py +80 -0
  22. slidge/core/gateway/mam.py +75 -0
  23. slidge/core/gateway/muc_admin.py +35 -0
  24. slidge/core/gateway/ping.py +66 -0
  25. slidge/core/gateway/presence.py +95 -0
  26. slidge/core/gateway/registration.py +53 -0
  27. slidge/core/gateway/search.py +102 -0
  28. slidge/core/gateway/session_dispatcher.py +789 -0
  29. slidge/core/gateway/vcard_temp.py +130 -0
  30. slidge/core/mixins/__init__.py +9 -1
  31. slidge/core/mixins/attachment.py +506 -0
  32. slidge/core/mixins/avatar.py +167 -0
  33. slidge/core/mixins/base.py +6 -19
  34. slidge/core/mixins/disco.py +66 -15
  35. slidge/core/mixins/lock.py +31 -0
  36. slidge/core/mixins/message.py +254 -252
  37. slidge/core/mixins/message_maker.py +154 -0
  38. slidge/core/mixins/presence.py +128 -31
  39. slidge/core/mixins/recipient.py +43 -0
  40. slidge/core/pubsub.py +275 -116
  41. slidge/core/session.py +586 -518
  42. slidge/group/__init__.py +10 -0
  43. slidge/group/archive.py +125 -0
  44. slidge/group/bookmarks.py +163 -0
  45. slidge/group/participant.py +458 -0
  46. slidge/group/room.py +1103 -0
  47. slidge/migration.py +18 -0
  48. slidge/slixfix/__init__.py +68 -0
  49. slidge/{util/xep_0050 → slixfix/link_preview}/__init__.py +4 -5
  50. slidge/slixfix/link_preview/link_preview.py +17 -0
  51. slidge/slixfix/link_preview/stanza.py +99 -0
  52. slidge/slixfix/roster.py +60 -0
  53. slidge/{util → slixfix}/xep_0077/register.py +1 -2
  54. slidge/slixfix/xep_0077/stanza.py +104 -0
  55. slidge/{util → slixfix}/xep_0100/gateway.py +17 -12
  56. slidge/slixfix/xep_0153/__init__.py +10 -0
  57. slidge/slixfix/xep_0153/stanza.py +25 -0
  58. slidge/slixfix/xep_0153/vcard_avatar.py +23 -0
  59. slidge/slixfix/xep_0264/__init__.py +5 -0
  60. slidge/slixfix/xep_0264/stanza.py +36 -0
  61. slidge/slixfix/xep_0264/thumbnail.py +23 -0
  62. slidge/slixfix/xep_0292/__init__.py +5 -0
  63. slidge/slixfix/xep_0292/vcard4.py +100 -0
  64. slidge/slixfix/xep_0313/__init__.py +12 -0
  65. slidge/slixfix/xep_0313/mam.py +262 -0
  66. slidge/slixfix/xep_0313/stanza.py +359 -0
  67. slidge/slixfix/xep_0317/__init__.py +5 -0
  68. slidge/slixfix/xep_0317/hats.py +17 -0
  69. slidge/slixfix/xep_0317/stanza.py +28 -0
  70. slidge/{util → slixfix}/xep_0356_old/privilege.py +9 -7
  71. slidge/slixfix/xep_0424/__init__.py +9 -0
  72. slidge/slixfix/xep_0424/retraction.py +77 -0
  73. slidge/slixfix/xep_0424/stanza.py +28 -0
  74. slidge/slixfix/xep_0490/__init__.py +8 -0
  75. slidge/slixfix/xep_0490/mds.py +47 -0
  76. slidge/slixfix/xep_0490/stanza.py +17 -0
  77. slidge/util/__init__.py +4 -6
  78. slidge/util/archive_msg.py +61 -0
  79. slidge/util/conf.py +25 -4
  80. slidge/util/db.py +23 -69
  81. slidge/util/schema.sql +126 -0
  82. slidge/util/sql.py +508 -0
  83. slidge/util/test.py +136 -86
  84. slidge/util/types.py +155 -14
  85. slidge/util/util.py +225 -51
  86. slidge-0.1.1.dist-info/METADATA +110 -0
  87. slidge-0.1.1.dist-info/RECORD +96 -0
  88. {slidge-0.1.0rc1.dist-info → slidge-0.1.1.dist-info}/WHEEL +1 -1
  89. slidge/core/adhoc.py +0 -492
  90. slidge/core/chat_command.py +0 -197
  91. slidge/core/contact.py +0 -441
  92. slidge/core/disco.py +0 -59
  93. slidge/core/gateway.py +0 -899
  94. slidge/core/muc/__init__.py +0 -3
  95. slidge/core/muc/bookmarks.py +0 -74
  96. slidge/core/muc/participant.py +0 -152
  97. slidge/core/muc/room.py +0 -348
  98. slidge/plugins/discord/__init__.py +0 -121
  99. slidge/plugins/discord/client.py +0 -121
  100. slidge/plugins/discord/session.py +0 -172
  101. slidge/plugins/dummy.py +0 -334
  102. slidge/plugins/facebook.py +0 -591
  103. slidge/plugins/hackernews.py +0 -209
  104. slidge/plugins/mattermost/__init__.py +0 -1
  105. slidge/plugins/mattermost/api.py +0 -288
  106. slidge/plugins/mattermost/gateway.py +0 -417
  107. slidge/plugins/mattermost/websocket.py +0 -248
  108. slidge/plugins/signal/__init__.py +0 -4
  109. slidge/plugins/signal/config.py +0 -4
  110. slidge/plugins/signal/contact.py +0 -104
  111. slidge/plugins/signal/gateway.py +0 -379
  112. slidge/plugins/signal/group.py +0 -76
  113. slidge/plugins/signal/session.py +0 -515
  114. slidge/plugins/signal/txt.py +0 -13
  115. slidge/plugins/signal/util.py +0 -32
  116. slidge/plugins/skype.py +0 -310
  117. slidge/plugins/steam.py +0 -400
  118. slidge/plugins/telegram/__init__.py +0 -6
  119. slidge/plugins/telegram/client.py +0 -325
  120. slidge/plugins/telegram/config.py +0 -21
  121. slidge/plugins/telegram/contact.py +0 -154
  122. slidge/plugins/telegram/gateway.py +0 -182
  123. slidge/plugins/telegram/group.py +0 -184
  124. slidge/plugins/telegram/session.py +0 -275
  125. slidge/plugins/telegram/util.py +0 -153
  126. slidge/plugins/whatsapp/__init__.py +0 -6
  127. slidge/plugins/whatsapp/config.py +0 -17
  128. slidge/plugins/whatsapp/contact.py +0 -33
  129. slidge/plugins/whatsapp/event.go +0 -455
  130. slidge/plugins/whatsapp/gateway.go +0 -156
  131. slidge/plugins/whatsapp/gateway.py +0 -69
  132. slidge/plugins/whatsapp/go.mod +0 -17
  133. slidge/plugins/whatsapp/go.sum +0 -22
  134. slidge/plugins/whatsapp/session.go +0 -371
  135. slidge/plugins/whatsapp/session.py +0 -370
  136. slidge/util/xep_0030/__init__.py +0 -13
  137. slidge/util/xep_0030/disco.py +0 -811
  138. slidge/util/xep_0030/stanza/__init__.py +0 -7
  139. slidge/util/xep_0030/stanza/info.py +0 -270
  140. slidge/util/xep_0030/stanza/items.py +0 -147
  141. slidge/util/xep_0030/static.py +0 -467
  142. slidge/util/xep_0050/adhoc.py +0 -631
  143. slidge/util/xep_0050/stanza.py +0 -180
  144. slidge/util/xep_0077/stanza.py +0 -71
  145. slidge/util/xep_0292/__init__.py +0 -1
  146. slidge/util/xep_0292/stanza.py +0 -167
  147. slidge/util/xep_0292/vcard4.py +0 -74
  148. slidge/util/xep_0356/__init__.py +0 -7
  149. slidge/util/xep_0356/permissions.py +0 -35
  150. slidge/util/xep_0356/privilege.py +0 -160
  151. slidge/util/xep_0356/stanza.py +0 -44
  152. slidge/util/xep_0461/__init__.py +0 -6
  153. slidge/util/xep_0461/reply.py +0 -48
  154. slidge/util/xep_0461/stanza.py +0 -80
  155. slidge-0.1.0rc1.dist-info/METADATA +0 -171
  156. slidge-0.1.0rc1.dist-info/RECORD +0 -99
  157. /slidge/{plugins/__init__.py → py.typed} +0 -0
  158. /slidge/{util → slixfix}/xep_0077/__init__.py +0 -0
  159. /slidge/{util → slixfix}/xep_0100/__init__.py +0 -0
  160. /slidge/{util → slixfix}/xep_0100/stanza.py +0 -0
  161. /slidge/{util → slixfix}/xep_0356_old/__init__.py +0 -0
  162. /slidge/{util → slixfix}/xep_0356_old/stanza.py +0 -0
  163. {slidge-0.1.0rc1.dist-info → slidge-0.1.1.dist-info}/LICENSE +0 -0
  164. {slidge-0.1.0rc1.dist-info → slidge-0.1.1.dist-info}/entry_points.txt +0 -0
@@ -1,44 +0,0 @@
1
- from slixmpp.plugins.xep_0297 import Forwarded
2
- from slixmpp.stanza import Message
3
- from slixmpp.xmlstream import ElementBase, register_stanza_plugin
4
-
5
-
6
- class Privilege(ElementBase):
7
- namespace = "urn:xmpp:privilege:2"
8
- name = "privilege"
9
- plugin_attrib = "privilege"
10
-
11
- def permission(self, access):
12
- for perm in self["perms"]:
13
- if perm["access"] == access:
14
- return perm["type"]
15
-
16
- def roster(self):
17
- return self.permission("roster")
18
-
19
- def message(self):
20
- return self.permission("message")
21
-
22
- def presence(self):
23
- return self.permission("presence")
24
-
25
- def add_perm(self, access, type_):
26
- # This should only be needed for servers, so maybe out of scope for slixmpp
27
- perm = Perm()
28
- perm["type"] = type_
29
- perm["access"] = access
30
- self.append(perm)
31
-
32
-
33
- class Perm(ElementBase):
34
- namespace = "urn:xmpp:privilege:2"
35
- name = "perm"
36
- plugin_attrib = "perm"
37
- plugin_multi_attrib = "perms"
38
- interfaces = {"type", "access"}
39
-
40
-
41
- def register():
42
- register_stanza_plugin(Message, Privilege)
43
- register_stanza_plugin(Privilege, Forwarded)
44
- register_stanza_plugin(Privilege, Perm, iterable=True)
@@ -1,6 +0,0 @@
1
- from slixmpp.plugins.base import register_plugin
2
-
3
- from . import stanza
4
- from .reply import XEP_0461
5
-
6
- register_plugin(XEP_0461)
@@ -1,48 +0,0 @@
1
- from slixmpp.plugins import BasePlugin
2
- from slixmpp.types import JidStr
3
- from slixmpp.xmlstream import StanzaBase
4
- from slixmpp.xmlstream.handler import Callback
5
- from slixmpp.xmlstream.matcher import StanzaPath
6
-
7
- from . import stanza
8
-
9
-
10
- class XEP_0461(BasePlugin):
11
- """XEP-0461: Message Replies"""
12
-
13
- name = "xep_0461"
14
- description = "XEP-0461: Message Replies"
15
-
16
- dependencies = {"xep_0030"}
17
- stanza = stanza
18
- namespace = stanza.NS
19
-
20
- def plugin_init(self) -> None:
21
- stanza.register_plugins()
22
- self.xmpp.register_handler(
23
- Callback(
24
- "Message replied to",
25
- StanzaPath("message/reply"),
26
- self._handle_reply_to_message,
27
- )
28
- )
29
-
30
- def plugin_end(self):
31
- self.xmpp.plugin["xep_0030"].del_feature(feature=stanza.NS)
32
-
33
- def session_bind(self, jid):
34
- self.xmpp.plugin["xep_0030"].add_feature(feature=stanza.NS)
35
-
36
- def _handle_reply_to_message(self, msg: StanzaBase):
37
- self.xmpp.event("message_reply", msg)
38
-
39
- def send_reply(self, reply_to: JidStr, reply_id: str, **msg_kwargs):
40
- """
41
-
42
- :param reply_to: Full JID of the quoted author
43
- :param reply_id: ID of the message to reply to
44
- """
45
- msg = self.xmpp.make_message(**msg_kwargs)
46
- msg["reply"]["to"] = reply_to
47
- msg["reply"]["id"] = reply_id
48
- msg.send()
@@ -1,80 +0,0 @@
1
- from slixmpp.stanza import Message
2
- from slixmpp.xmlstream import ElementBase, register_stanza_plugin
3
-
4
- NS = "urn:xmpp:reply:0"
5
-
6
-
7
- class Reply(ElementBase):
8
- namespace = NS
9
- name = "reply"
10
- plugin_attrib = "reply"
11
- interfaces = {"id", "to"}
12
-
13
-
14
- class FeatureFallBack(ElementBase):
15
- # should also be a multi attrib
16
- namespace = "urn:xmpp:fallback:0"
17
- name = "fallback"
18
- plugin_attrib = "feature_fallback"
19
- interfaces = {"for"}
20
-
21
- def get_stripped_body(self):
22
- # only works for a single fallback_body attrib
23
- start = self["fallback_body"]["start"]
24
- end = self["fallback_body"]["end"]
25
- body = self.parent()["body"]
26
- if start <= end < len(body):
27
- return body[:start] + body[end:]
28
- else:
29
- return body
30
-
31
- def get_fallback_body(self):
32
- # only works for a single fallback_body attrib
33
- start = self["fallback_body"]["start"]
34
- end = self["fallback_body"]["end"]
35
- body = self.parent()["body"]
36
- if start <= end:
37
- return body[start:end]
38
- else:
39
- return ""
40
-
41
- def add_quoted_fallback(self, fallback: str):
42
- msg = self.parent()
43
- quoted = "\n".join("> " + x.strip() for x in fallback.split("\n")) + "\n"
44
- msg["body"] = quoted + msg["body"]
45
- msg["feature_fallback"]["for"] = NS
46
- msg["feature_fallback"]["fallback_body"]["start"] = 0
47
- msg["feature_fallback"]["fallback_body"]["end"] = len(quoted)
48
-
49
-
50
- class FallBackBody(ElementBase):
51
- # According to https://xmpp.org/extensions/inbox/compatibility-fallback.html
52
- # this should be a multi_attrib *but* since it's a protoXEP, we'll see...
53
- namespace = FeatureFallBack.namespace
54
- name = "body"
55
- plugin_attrib = "fallback_body"
56
- interfaces = {"start", "end"}
57
-
58
- def set_start(self, v: int):
59
- self._set_attr("start", str(v))
60
-
61
- def get_start(self):
62
- try:
63
- return int(self._get_attr("start"))
64
- except ValueError:
65
- return 0
66
-
67
- def set_end(self, v: int):
68
- self._set_attr("end", str(v))
69
-
70
- def get_end(self):
71
- try:
72
- return int(self._get_attr("end"))
73
- except ValueError:
74
- return 0
75
-
76
-
77
- def register_plugins():
78
- register_stanza_plugin(Message, Reply)
79
- register_stanza_plugin(Message, FeatureFallBack)
80
- register_stanza_plugin(FeatureFallBack, FallBackBody)
@@ -1,171 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: slidge
3
- Version: 0.1.0rc1
4
- Summary: XMPP bridging framework
5
- Home-page: https://sr.ht/~nicoco/slidge/
6
- License: AGPL-3.0-or-later
7
- Author: Nicolas Cedilnik
8
- Author-email: nicoco@nicoco.fr
9
- Requires-Python: >=3.9,<4.0
10
- Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
11
- Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.9
13
- Classifier: Programming Language :: Python :: 3.10
14
- Classifier: Programming Language :: Python :: 3.11
15
- Provides-Extra: discord
16
- Provides-Extra: facebook
17
- Provides-Extra: mattermost
18
- Provides-Extra: signal
19
- Provides-Extra: skype
20
- Provides-Extra: steam
21
- Provides-Extra: telegram
22
- Requires-Dist: ConfigArgParse (>=1.5.3,<2.0.0)
23
- Requires-Dist: Pillow (>=8.1.0)
24
- Requires-Dist: SkPy (>=0.10.4,<0.11.0) ; extra == "skype"
25
- Requires-Dist: aiohttp (>=3.6.0)
26
- Requires-Dist: aiosignald (>=0.3.4,<0.4.0) ; extra == "signal"
27
- Requires-Dist: aiotdlib (>=0.19.2,<0.20.0) ; extra == "telegram"
28
- Requires-Dist: discord.py-self (>=1.9.2,<2.0.0) ; extra == "discord"
29
- Requires-Dist: emoji (>=2.0.0,<3.0.0) ; extra == "mattermost"
30
- Requires-Dist: mattermost-api-reference-client (>=4.0.0,<5.0.0) ; extra == "mattermost"
31
- Requires-Dist: mautrix-facebook (>=0.4.1,<0.5.0) ; extra == "facebook"
32
- Requires-Dist: pickle-secure (>=0.9.99,<0.10.0)
33
- Requires-Dist: pydantic ; extra == "telegram"
34
- Requires-Dist: qrcode (>=7.3)
35
- Requires-Dist: slixmpp (>=1.8.3,<2.0.0)
36
- Requires-Dist: steam[client] (>=1.3.0,<2.0.0) ; extra == "steam"
37
- Description-Content-Type: text/markdown
38
-
39
- Slidge 🛷
40
- ========
41
-
42
- [Home](https://sr.ht/~nicoco/slidge) |
43
- [Source](https://sr.ht/~nicoco/slidge/sources) |
44
- [Issues](https://sr.ht/~nicoco/slidge/trackers) |
45
- [Patches](https://lists.sr.ht/~nicoco/public-inbox) |
46
- [Chat](xmpp:slidge@conference.nicoco.fr?join)
47
-
48
- Turn any XMPP client into that fancy multiprotocol chat app that every cool kid want.
49
-
50
- [![Documentation status](https://readthedocs.org/projects/slidge/badge/?version=latest)](https://slidge.readthedocs.io/)
51
- [![builds.sr.ht status](https://builds.sr.ht/~nicoco/slidge/commits/master/ci.yml.svg)](https://builds.sr.ht/~nicoco/slidge/commits/master/ci.yml?)
52
- [![Debian package](https://builds.sr.ht/~nicoco/slidge/commits/master/debian.yml.svg)](https://builds.sr.ht/~nicoco/slidge/commits/master/debian.yml?)
53
- [![pypi](https://badge.fury.io/py/slidge.svg)](https://pypi.org/project/slidge/)
54
-
55
- Slidge is a general purpose XMPP (puppeteer) gateway framework in python.
56
- It's a work in progress, but it should make
57
- [writing gateways to other chat networks](https://slidge.readthedocs.io/en/latest/dev/tutorial.html)
58
- (*plugins*) as frictionless as possible.
59
-
60
- It comes with a few plugins included, implementing at least basic direct messaging and often more "advanced"
61
- instant messaging features:
62
-
63
- | | Presences[¹] | Typing[²] | Marks[³] | Upload[⁴] | Edit[⁵] | React[⁶] | Retract[⁷] | Reply[⁸] | Groups[⁹] |
64
- |------------|--------------|-----------|----------|-----------|---------|----------|------------|----------|-----------|
65
- | Signal | N/A | ✅ | ✅ | ✅ | N/A | ✅ | ✅ | ✅ | ~ |
66
- | Telegram | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ~ |
67
- | Discord | ❌ | ✅ | N/A | ✅ | ✅ | ~ | ✅ | ✅ | ❌ |
68
- | Steam | ✅ | ✅ | N/A | ❌ | N/A | ~ | N/A | N/A | ❌ |
69
- | Mattermost | ✅ | ✅ | ~ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
70
- | Facebook | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
71
- | Skype | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ |
72
- | WhatsApp | ✅ | ✅ | ✅ | ✅ | N/A | ✅ | ✅ | ✅ | ❌ |
73
-
74
-
75
- [¹]: https://xmpp.org/rfcs/rfc6121.html#presence
76
- [²]: https://xmpp.org/extensions/xep-0085.html
77
- [³]: https://xmpp.org/extensions/xep-0333.html
78
- [⁴]: https://xmpp.org/extensions/xep-0363.html
79
- [⁵]: https://xmpp.org/extensions/xep-0308.html
80
- [⁶]: https://xmpp.org/extensions/xep-0444.html
81
- [⁷]: https://xmpp.org/extensions/xep-0424.html
82
- [⁸]: https://xmpp.org/extensions/xep-0461.html
83
- [⁹]: https://xmpp.org/extensions/xep-0045.html
84
-
85
-
86
- This table may not be entirely accurate, but **in theory**, stuff marked ✅ works.
87
- N/A means that the legacy network does not have an equivalent of this XMPP feature
88
- (because XMPP is better, what did you think?).
89
-
90
- **WARNING**: you may break the terms of use of a legacy network and end up getting your account locked
91
- by using slidge. Refer to the
92
- [keeping a low profile](https://slidge.readthedocs.io/en/latest/user/low_profile.html)
93
- documentation page for more info.
94
-
95
- Status
96
- ------
97
-
98
- Slidge is **beta**-grade software for 1:1 chats.
99
- Group chat support is **experimental**.
100
-
101
- Try slidge and give us some
102
- feedback, through the [MUC](xmpp:slidge@conference.nicoco.fr?join), the
103
- [issue tracker](https://todo.sr.ht/~nicoco/slidge) or in the
104
- [public inbox](https://lists.sr.ht/~nicoco/public-inbox).
105
- Don't be shy!
106
-
107
- Installation
108
- ------------
109
-
110
- ### containers
111
-
112
- Containers for arm64 and amd64 are available on
113
- [docker hub](https://hub.docker.com/u/nicocool84).
114
-
115
- ### debian
116
-
117
- Debian packages for *bullseye* (amd64 only for now, help welcome
118
- to support other architectures)
119
- are built on each push to master as artifacts of
120
- [this build job](https://builds.sr.ht/~nicoco/slidge/commits/master/debian.yml?).
121
-
122
- A repo is maintained by IGImonster. To use it do this (as root):
123
-
124
- ```sh
125
- # trust the repo's key
126
- wget -O- http://deb.slidge.im/repo/slidge.gpg.key \
127
- |gpg --dearmor \
128
- |tee /usr/share/keyrings/slidge.gpg > /dev/null
129
- # add the repo, replace 'release' with 'nightly' if you're feeling adventurous
130
- echo "deb [signed-by=/usr/share/keyrings/slidge.gpg] http://deb.slidge.im/repo/debian release main" \
131
- > /etc/apt/sources.list.d/slidge.list
132
- # install
133
- apt update && apt install slidge -y
134
- ```
135
-
136
- Refer to [the docs](https://slidge.readthedocs.io/en/latest/admin/launch.html#debian-packages)
137
- for information about how to use the provided systemd service files.
138
-
139
- ### pip
140
-
141
- Tagged releases are uploaded to [pypi](https://pypi.org/project/slidge/).
142
-
143
- ```sh
144
- pip install slidge[signal] # you can replace signal with any network listed in the table above
145
- python -m slidge --legacy-module=slidge.plugins.signal
146
- ```
147
-
148
- If you're looking for the bleeding edge, download an artifact
149
- [here](https://builds.sr.ht/~nicoco/slidge/commits/master/ci.yml?).
150
-
151
- About privacy
152
- -------------
153
-
154
- Slidge (and most if not all XMPP gateway that I know of) will break
155
- end-to-end encryption, or more precisely one of the 'ends' become the
156
- gateway itself. If privacy is a major concern for you, my advice would
157
- be to:
158
-
159
- - use XMPP + OMEMO
160
- - self-host your gateways
161
- - have your gateways hosted by someone you know AFK and trust
162
-
163
- Related projects
164
- ----------------
165
-
166
- - [Spectrum](https://www.spectrum.im/)
167
- - [Bitfrost](https://github.com/matrix-org/matrix-bifrost)
168
- - [Mautrix](https://github.com/mautrix)
169
- - [matterbridge](https://github.com/42wim/matterbridge)
170
- - [XMPP-discord-bridge](https://git.polynom.me/PapaTutuWawa/xmpp-discord-bridge)
171
-
@@ -1,99 +0,0 @@
1
- slidge/__init__.py,sha256=tyBOCnlV7Hj21E5Tnpjb4YMHT9OK2vsuQ_qwv9fA_1k,841
2
- slidge/__main__.py,sha256=kGAza5HGhPHqXdjv7Bt8C7-jipNwMw5Uzw13LA-Qn34,4257
3
- slidge/core/__init__.py,sha256=KsroWIleBIaobXxutkx6Icwamt-2wtxdmfTFnZ5K3rM,36
4
- slidge/core/adhoc.py,sha256=GqIVmwXVKT9vhkSoXrKbOSBAlq_34elU8MkXm0AABUc,17007
5
- slidge/core/cache.py,sha256=mQ8tcTrsPlRvv072Y7dHkPbSkCMvPOJuPZBOoU-oXKo,2918
6
- slidge/core/chat_command.py,sha256=64wuS1_0atPcTfvGhFWdPozXMOQwZockR_XuRBuF2oQ,7020
7
- slidge/core/config.py,sha256=NgC9Pm425wzt2ILmuox-5gNwKRrB_kZeAnaNGcjg9Vk,3215
8
- slidge/core/contact.py,sha256=QQ-YD6GAW4yMlEXA6SCK8Gc9ikzEgUz7HUxlByqq4Ak,14880
9
- slidge/core/disco.py,sha256=L9y1gqvE2-Kpiy3UewMqKvOi05OIa8uQjJ3gAdLGITM,1707
10
- slidge/core/gateway.py,sha256=w6ND4ynocckL0jRJYgFQ9qO9qZrxof8r60jvrx-ry04,33682
11
- slidge/core/mixins/__init__.py,sha256=Kh6rAOq5u1JfCC7AiWvzRJgYUReDSY-GFFHACmq9FZY,307
12
- slidge/core/mixins/base.py,sha256=h_vjafT4QiNZ18sysH_eZHALp_rLN4H0vncuNCU1r48,1072
13
- slidge/core/mixins/disco.py,sha256=GqMgaJnTwRn50Lg18mjIWxJQB5DbSaz1wB6OIhgxJ2s,2113
14
- slidge/core/mixins/message.py,sha256=EPQXRR4eW9-4IRVMsZRcXr-h-g6bowRd8pCftQtSyRY,14819
15
- slidge/core/mixins/presence.py,sha256=CSM70EeXjIHfIN2MJDeFXDZm-4OtsUBD8VHUbnZIdC8,3770
16
- slidge/core/muc/__init__.py,sha256=m6ZUUqLjavCk4guqF3tu0nSEZvo2urGFAw_vLXVQk7M,119
17
- slidge/core/muc/bookmarks.py,sha256=QnHt8veLwIlMN9FxKEWay4ug3looKUXvCZWx0_L_PlM,2697
18
- slidge/core/muc/participant.py,sha256=7dZXNP7LOzxmJ4GpYs4NOLp5kPoTCxzb4Q-G1iccgNg,5148
19
- slidge/core/muc/room.py,sha256=0K2ZixTnQfztfeA9mfzqSu6JWHg0pcY9KLNFC8metok,11126
20
- slidge/core/pubsub.py,sha256=muy8MwmMGhQIC8YuDzn9O3pEk_Wwft0u07BOb39H7z0,12305
21
- slidge/core/session.py,sha256=haGsW0a16fqr-PlJOrcAK-duL6VeMde6nWwapay2Efk,24193
22
- slidge/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
- slidge/plugins/discord/__init__.py,sha256=6P9CfSJNzkx2FLIv6vv4fI1SvvZC3yqe1vTAdQVypXs,3759
24
- slidge/plugins/discord/client.py,sha256=rhmM0-bpS33gBDeoGdgjDXsFf4lG89B3nHs28p2u7Vo,4357
25
- slidge/plugins/discord/session.py,sha256=R5lMCcFb1fuDca5_XLh0sG1l1gDkaLib68JYf9E4Z2g,5841
26
- slidge/plugins/dummy.py,sha256=WG4r3AbcH2RSh2G9y8i2JxWcj038hYpjYvA8unLRYNc,10479
27
- slidge/plugins/facebook.py,sha256=l1PNORmXMYC7BU101wFEg_lNg0c1MuBXSoBp1P2tCv4,22184
28
- slidge/plugins/hackernews.py,sha256=hl63_CRj_ubDOa8g02I_CGe3Cd7CPYizW8ZnvozQ8Ic,7604
29
- slidge/plugins/mattermost/__init__.py,sha256=QvVBfx4ADUB33mYmtuYjKjMqNOLbGOIcj0puQp5iFk4,38
30
- slidge/plugins/mattermost/api.py,sha256=tPm0O4bVEADnUbI5cYbcf5-xcVAr2vtuE1SPcLEWbHs,9601
31
- slidge/plugins/mattermost/gateway.py,sha256=paFdcwtEl8fM8uNN-1Q6QK_fXpuDfWPDh3skSc56gwg,16234
32
- slidge/plugins/mattermost/websocket.py,sha256=LSbmn4Qxy4hWPc4kckHS5eB13Zqt_X-oFz9nyEVLxZU,8504
33
- slidge/plugins/signal/__init__.py,sha256=LXtkyq5k9Rx7zpBORiEIFmdWF1qKiy5XO5kz_qENDwo,115
34
- slidge/plugins/signal/config.py,sha256=HvpQ_pNkFLqDqAu3JjTUf5mYXX-dsB-wkqY3eTKKxDQ,124
35
- slidge/plugins/signal/contact.py,sha256=HNhK4tkPOv79FqouAooGoAKHGvmmAaNcVnBessM53sg,3572
36
- slidge/plugins/signal/gateway.py,sha256=kVPRSAEVSMqmOYdvELY8meL7Sy4tt9fQcMjpcyrjS3I,12953
37
- slidge/plugins/signal/group.py,sha256=fPtaeCTAzb3M_IgHUoaFupe-DXupHyw1zkjGm9k7_u0,2403
38
- slidge/plugins/signal/session.py,sha256=HZrrl2t4LyoXbgIV8TtvqYXcOtWMhFZ-KGE7h0MbCTQ,18611
39
- slidge/plugins/signal/txt.py,sha256=Hw8bt_yz8Ikc5Xi1H7oVxNg6oJIoALrKq0xBd8i90dQ,555
40
- slidge/plugins/signal/util.py,sha256=Re39VWv6KgWTXmLWijF32uIzOC-4lOHCBFgN2IYKCQc,1112
41
- slidge/plugins/skype.py,sha256=oUFQ11TDlwYwU7vMX1ru4wYti1c9X4uA7mj66OiFI_4,11606
42
- slidge/plugins/steam.py,sha256=Ga0OjGR8pAeGUbUdZV76aqx2gvuC8Mt9vVl2CnNRDMY,14752
43
- slidge/plugins/telegram/__init__.py,sha256=rcurcuo82_30FJdmRIuG9qMXMqRtLUDb58aLI8oTjEQ,185
44
- slidge/plugins/telegram/client.py,sha256=bnt8u1-ZayGo_wDoTCbsNKvck4_u9rBw6oyGAV1LHus,13681
45
- slidge/plugins/telegram/config.py,sha256=RtfpaDcpr7uTqN4udT9hURjOMi4RpbMKev8V7r4zNFw,667
46
- slidge/plugins/telegram/contact.py,sha256=LhSLZSCGEooIJtIIJVGUNA6mZs4GkBiPJolLEZG6efg,5527
47
- slidge/plugins/telegram/gateway.py,sha256=cGCf5EeBpnOFvPdWvILDIo2O1VNUai5FyUnX9Pv-3yE,6687
48
- slidge/plugins/telegram/group.py,sha256=9IUTnb2KU5BnJvFMRMiKG7fGfAOztHaCfHgnB6otI9c,6566
49
- slidge/plugins/telegram/session.py,sha256=jkakvgE88CCyB9nbP6kwLdJwM4r1KHFAdMmVUKSGAdE,9339
50
- slidge/plugins/telegram/util.py,sha256=-m5hN3AqbdGWN8vwbK00cOU-izaF7roqntjApw3AB5k,6523
51
- slidge/plugins/whatsapp/__init__.py,sha256=vS9p298Cn5nXiKKTEtzcIlWRsl29UfwmjpHO5NT_NLM,112
52
- slidge/plugins/whatsapp/config.py,sha256=tke6r8aSMJtOpPvIMmGfnp0V2qC4LB2s3aUshLjYAiw,574
53
- slidge/plugins/whatsapp/contact.py,sha256=29zDN2gSdszWp0REuaPyGARpE7FLkVKQ_jgGE0AkxYU,1095
54
- slidge/plugins/whatsapp/event.go,sha256=b0hQk3v3_bkOsJL4D_NEpoOTNvJ44oill6-FSZ9d4j0,15365
55
- slidge/plugins/whatsapp/gateway.go,sha256=szcOeDUFq_F-cg1a9KivMD5y_XgmjlIBSLfT6f-QN24,4997
56
- slidge/plugins/whatsapp/gateway.py,sha256=Fy4DKfS8GIOGI9_FWneIRxJFQpIdknqMluHbHfIVwBc,2281
57
- slidge/plugins/whatsapp/go.mod,sha256=i0BerX1WJOKtAIRX47hVHl6_v6oBJGvS-1Cu7OEQ_co,484
58
- slidge/plugins/whatsapp/go.sum,sha256=EWGvQfH-6K3VQBZG9cIuqmIkBVBIgCEfS-FUsWxNxgI,2064
59
- slidge/plugins/whatsapp/session.go,sha256=FTvL9jIHlQQLL2LxNmyoYK3YPJZ5f2w1kf0yQfzDdAw,12445
60
- slidge/plugins/whatsapp/session.py,sha256=tIDBSlasfS8I0BhQn8qPwzXenNsqvZ4qcDHfJrLXtPE,14739
61
- slidge/util/__init__.py,sha256=Ogn4C0OIWVy2geH_Xi7cL7MjU0wPJGZtPAOlthVDIpg,299
62
- slidge/util/conf.py,sha256=HHOMyXw36vQ3mOea_HDFrdV0hVoL4EjwGBU5wx-sVWI,5708
63
- slidge/util/db.py,sha256=U66c_Srm3m1lWEPTWaNp1x9-iI8w6r5ZzMEdnyRZoGo,7758
64
- slidge/util/test.py,sha256=yO4HxEtrDSvwyyU8IfQjhC7QbVY29Emop89LsWukchI,9295
65
- slidge/util/types.py,sha256=-PuLqEuSTmxgX-30GOVlA9VPkm-2g0tmYsz1GOEWLuM,1633
66
- slidge/util/util.py,sha256=fO6cKM82ygf06m0J9lnBZPMkcaZKkLS0Rsb7G1M9bCk,3596
67
- slidge/util/xep_0030/__init__.py,sha256=q-jCNG3h3ThSKoPdMwNV5Ggha4J4LVvxgnTbg4lKY_g,372
68
- slidge/util/xep_0030/disco.py,sha256=gUU8bUNlLrGTRrlbNfySx5c1C7hZXFgwcvZuuKLgRlo,31653
69
- slidge/util/xep_0030/stanza/__init__.py,sha256=BlPragBoxcdM7k3B528ahctrN_JdH76li4OD4Jtu00o,292
70
- slidge/util/xep_0030/stanza/info.py,sha256=_OQBY3IrX34LO33j1E3QA479R0OPb5bHZHFneL_LgWU,10428
71
- slidge/util/xep_0030/stanza/items.py,sha256=rozBAv4Mz5Joo6MSn5bHw-f0WyMMt8kVlOJKyGQJ9So,4608
72
- slidge/util/xep_0030/static.py,sha256=jbJ4HfoG0x4GqOb9s7XMluQjmtSlK4BL_awUuWBTRWM,17117
73
- slidge/util/xep_0050/__init__.py,sha256=BbntavYABeKr28gvav6JJv65CiETjP_CG1kaWJbDuWM,305
74
- slidge/util/xep_0050/adhoc.py,sha256=jFV5ydXB2ekqy92tM42yV3hTEgCWmNESvIyLbvUN1-E,22499
75
- slidge/util/xep_0050/stanza.py,sha256=J00CAfqzkVl4VEV-QjZvW6xfL9AJEquLrr8bhbarkwg,5814
76
- slidge/util/xep_0077/__init__.py,sha256=0lY1YXdgAsfrfxI_Woxaf1etHCJXe35Xtntq_icF6nA,325
77
- slidge/util/xep_0077/register.py,sha256=zpyCodqdxkB-M09eaKHGgSB1G2-9eVcY7MRjdq3YSL4,10402
78
- slidge/util/xep_0077/stanza.py,sha256=hm-fEmuI8MqNP5PjIkQhXsV59Kl4wHOa0J3ZJ8jJdTo,2186
79
- slidge/util/xep_0100/__init__.py,sha256=AtEXDQOrEWodkN3fgKR0W3Ezsz_Zza6cgO5ZaZS-JOo,107
80
- slidge/util/xep_0100/gateway.py,sha256=WzqHbdu7hcHNI2lSP8gITJ8MBro9vxKzSVbDMQIZnSk,4312
81
- slidge/util/xep_0100/stanza.py,sha256=7vCzej9VFQupsTpGGl0cJWuGNH4I6oVcckBu_-fE55c,232
82
- slidge/util/xep_0292/__init__.py,sha256=BZcAjprx0Bw_lAJC-9LIWDKRRlToueF1yGd_OGqGANQ,29
83
- slidge/util/xep_0292/stanza.py,sha256=3m3-e_lSdZ6oYbJS5wSQCczujRyoXeY6wOyy9t5qkbM,3782
84
- slidge/util/xep_0292/vcard4.py,sha256=Cqsth3F1-zqO0BNAAUTv9ycgBF6tU7ig59bJAXKlZxc,2102
85
- slidge/util/xep_0356/__init__.py,sha256=yUrWZF0Neu1Iy_awlvkWhEo8qKNNRq4tZfUP0orB00E,166
86
- slidge/util/xep_0356/permissions.py,sha256=IiLWJAdbrSM06W-gQBOH2-hlvW5LNjAbPiY_TFXmoo8,625
87
- slidge/util/xep_0356/privilege.py,sha256=UqrKVG1uwZhaNHaUSdldIaH-Fjfm6Ehf201KRIXLP-I,5204
88
- slidge/util/xep_0356/stanza.py,sha256=kCMTMllh2Uehq1xD_vqQyAjPq_Fbdl2AYhPYjnpeBX8,1206
89
- slidge/util/xep_0356_old/__init__.py,sha256=3jGWJX2m5gWgDCxcVqCsCCVPRTcfmU96yenwvAJtOKE,180
90
- slidge/util/xep_0356_old/privilege.py,sha256=oocTh88wv7NF7UooZHlpl7eMpIvy4fqaPBwvJxfO65o,5299
91
- slidge/util/xep_0356_old/stanza.py,sha256=i7aqcaTg6PBhVwbHToLtlrwxBj7uO-M7VrYSyElyEKI,1229
92
- slidge/util/xep_0461/__init__.py,sha256=ENgspdjoCPbDb_vkAz579AMEINN4IWqfvoSi93ejY3Y,126
93
- slidge/util/xep_0461/reply.py,sha256=KSz4N06hK8H9PJ85lgPrBi6otoWrI3Xd8-I88GYNtuo,1383
94
- slidge/util/xep_0461/stanza.py,sha256=o4q92PbpfhJ-2zDkNPk-tTYif7l14Xzc6BWAybRbjJA,2390
95
- slidge-0.1.0rc1.dist-info/entry_points.txt,sha256=SNl72KSocF5plsu_67xyH6wVWfGTXQbzkQgXbLtzDrQ,47
96
- slidge-0.1.0rc1.dist-info/METADATA,sha256=H49bXKgf4GQczok_Ue1cK0o94BlKu0KNcaMC7wSeMZA,7457
97
- slidge-0.1.0rc1.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
98
- slidge-0.1.0rc1.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
99
- slidge-0.1.0rc1.dist-info/RECORD,,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes