slidge 0.1.1__tar.gz → 0.1.3__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {slidge-0.1.1 → slidge-0.1.3}/PKG-INFO +5 -4
- {slidge-0.1.1 → slidge-0.1.3}/README.md +2 -3
- {slidge-0.1.1 → slidge-0.1.3}/pyproject.toml +3 -1
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/base.py +1 -1
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/session_dispatcher.py +15 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/group/participant.py +6 -6
- {slidge-0.1.1 → slidge-0.1.3}/LICENSE +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/__main__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/command/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/command/adhoc.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/command/admin.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/command/base.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/command/categories.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/command/chat_command.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/command/register.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/command/user.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/contact/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/contact/contact.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/contact/roster.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/cache.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/config.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/caps.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/delivery_receipt.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/disco.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/mam.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/muc_admin.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/ping.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/presence.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/registration.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/search.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/gateway/vcard_temp.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/mixins/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/mixins/attachment.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/mixins/avatar.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/mixins/base.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/mixins/disco.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/mixins/lock.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/mixins/message.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/mixins/message_maker.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/mixins/presence.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/mixins/recipient.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/pubsub.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/core/session.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/group/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/group/archive.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/group/bookmarks.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/group/room.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/migration.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/py.typed +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/link_preview/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/link_preview/link_preview.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/link_preview/stanza.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/roster.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0077/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0077/register.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0077/stanza.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0100/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0100/gateway.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0100/stanza.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0153/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0153/stanza.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0153/vcard_avatar.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0264/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0264/stanza.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0264/thumbnail.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0292/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0292/vcard4.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0313/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0313/mam.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0313/stanza.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0317/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0317/hats.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0317/stanza.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0356_old/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0356_old/privilege.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0356_old/stanza.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0424/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0424/retraction.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0424/stanza.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0490/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0490/mds.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/slixfix/xep_0490/stanza.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/util/__init__.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/util/archive_msg.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/util/conf.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/util/db.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/util/schema.sql +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/util/sql.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/util/test.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/util/types.py +0 -0
- {slidge-0.1.1 → slidge-0.1.3}/slidge/util/util.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: slidge
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.3
|
4
4
|
Summary: XMPP bridging framework
|
5
5
|
Home-page: https://sr.ht/~nicoco/slidge/
|
6
6
|
License: AGPL-3.0-or-later
|
@@ -20,9 +20,11 @@ Requires-Dist: pickle-secure (>=0.99.9,<0.100.0)
|
|
20
20
|
Requires-Dist: python-magic (>=0.4.27,<0.5.0)
|
21
21
|
Requires-Dist: qrcode (>=7.4.1,<8.0.0)
|
22
22
|
Requires-Dist: slixmpp (>=1.8.5,<2.0.0)
|
23
|
+
Project-URL: Documentation, https://slidge.im/
|
24
|
+
Project-URL: Repository, https://git.sr.ht/~nicoco/slidge/
|
23
25
|
Description-Content-Type: text/markdown
|
24
26
|
|
25
|
-

|
26
28
|
|
27
29
|
[Home](https://sr.ht/~nicoco/slidge) |
|
28
30
|
[Docs](https://slidge.im/core) |
|
@@ -66,8 +68,7 @@ bundle.
|
|
66
68
|
Status
|
67
69
|
------
|
68
70
|
|
69
|
-
Slidge is **beta**-grade software
|
70
|
-
Group chat support is **experimental**.
|
71
|
+
Slidge is **beta**-grade software. It support groups and 1:1 chats.
|
71
72
|
|
72
73
|
Try slidge and give us some
|
73
74
|
feedback, through the [MUC](xmpp:slidge@conference.nicoco.fr?join), the
|
@@ -1,4 +1,4 @@
|
|
1
|
-

|
2
2
|
|
3
3
|
[Home](https://sr.ht/~nicoco/slidge) |
|
4
4
|
[Docs](https://slidge.im/core) |
|
@@ -42,8 +42,7 @@ bundle.
|
|
42
42
|
Status
|
43
43
|
------
|
44
44
|
|
45
|
-
Slidge is **beta**-grade software
|
46
|
-
Group chat support is **experimental**.
|
45
|
+
Slidge is **beta**-grade software. It support groups and 1:1 chats.
|
47
46
|
|
48
47
|
Try slidge and give us some
|
49
48
|
feedback, through the [MUC](xmpp:slidge@conference.nicoco.fr?join), the
|
@@ -1,11 +1,13 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "slidge"
|
3
|
-
version = "0.1.
|
3
|
+
version = "0.1.3"
|
4
4
|
description = "XMPP bridging framework"
|
5
5
|
authors = ["Nicolas Cedilnik <nicoco@nicoco.fr>"]
|
6
6
|
readme = "README.md"
|
7
7
|
license = "AGPL-3.0-or-later"
|
8
8
|
homepage = "https://sr.ht/~nicoco/slidge/"
|
9
|
+
repository = "https://git.sr.ht/~nicoco/slidge/"
|
10
|
+
documentation = "https://slidge.im/"
|
9
11
|
include = ["slidge/util/schema.sql"]
|
10
12
|
|
11
13
|
[tool.poetry.dependencies]
|
@@ -448,6 +448,15 @@ class SessionDispatcher:
|
|
448
448
|
entity.react(legacy_id, emojis, xmpp_id=xmpp_id, carbon=True)
|
449
449
|
|
450
450
|
async def on_presence(self, p: Presence):
|
451
|
+
if p.get_plugin("muc_join", check=True):
|
452
|
+
# handled in on_groupchat_join
|
453
|
+
# without this early return, since we switch from and to in this
|
454
|
+
# presence stanza, on_groupchat_join ends up trying to instantiate
|
455
|
+
# a MUC with the user's JID, which in turn leads to slidge sending
|
456
|
+
# a (error) presence from=the user's JID, which terminates the
|
457
|
+
# XML stream.
|
458
|
+
return
|
459
|
+
|
451
460
|
session = await self.__get_session(p)
|
452
461
|
|
453
462
|
pto = p.get_to()
|
@@ -473,6 +482,12 @@ class SessionDispatcher:
|
|
473
482
|
if muc is None or p.get_from().resource not in muc.user_resources:
|
474
483
|
return
|
475
484
|
|
485
|
+
if pto.resource == muc.user_nick:
|
486
|
+
# Ignore presence stanzas with the valid nick.
|
487
|
+
# even if joined to the group, we might receive those from clients,
|
488
|
+
# when setting a status message, or going away, etc.
|
489
|
+
return
|
490
|
+
|
476
491
|
# We can't use XMPPError here because from must be room@slidge/VALID-USER-NICK
|
477
492
|
|
478
493
|
error_from = JID(muc.jid)
|
@@ -108,7 +108,7 @@ class LegacyParticipant(
|
|
108
108
|
msg = self._make_message()
|
109
109
|
msg["muc"]["affiliation"] = self._affiliation
|
110
110
|
msg["type"] = "normal"
|
111
|
-
if not self.muc.is_anonymous:
|
111
|
+
if not self.muc.is_anonymous and not self.is_system:
|
112
112
|
if self.contact:
|
113
113
|
msg["muc"]["jid"] = self.contact.jid
|
114
114
|
else:
|
@@ -143,6 +143,7 @@ class LegacyParticipant(
|
|
143
143
|
|
144
144
|
if self.is_system:
|
145
145
|
self.jid = j
|
146
|
+
self._nickname_no_illegal = ""
|
146
147
|
return
|
147
148
|
|
148
149
|
nickname = unescaped_nickname
|
@@ -213,7 +214,6 @@ class LegacyParticipant(
|
|
213
214
|
|
214
215
|
kwargs["status_codes"] = set()
|
215
216
|
p = self._make_presence(ptype="available", last_seen=last_seen, **kwargs)
|
216
|
-
self.__add_nick_element(p)
|
217
217
|
self._send(p)
|
218
218
|
|
219
219
|
if old:
|
@@ -235,7 +235,7 @@ class LegacyParticipant(
|
|
235
235
|
codes = status_codes or set()
|
236
236
|
if self.is_user:
|
237
237
|
codes.add(110)
|
238
|
-
if not self.muc.is_anonymous:
|
238
|
+
if not self.muc.is_anonymous and not self.is_system:
|
239
239
|
if self.is_user:
|
240
240
|
if user_full_jid:
|
241
241
|
p["muc"]["jid"] = user_full_jid
|
@@ -301,6 +301,7 @@ class LegacyParticipant(
|
|
301
301
|
**send_kwargs,
|
302
302
|
) -> MessageOrPresenceTypeVar:
|
303
303
|
stanza["occupant-id"]["id"] = self.__occupant_id
|
304
|
+
self.__add_nick_element(stanza)
|
304
305
|
if isinstance(stanza, Presence):
|
305
306
|
if stanza["type"] == "unavailable" and not self.__presence_sent:
|
306
307
|
return stanza # type:ignore
|
@@ -344,11 +345,11 @@ class LegacyParticipant(
|
|
344
345
|
)
|
345
346
|
return item
|
346
347
|
|
347
|
-
def __add_nick_element(self,
|
348
|
+
def __add_nick_element(self, stanza: Union[Presence, Message]):
|
348
349
|
if (nick := self._nickname_no_illegal) != self.jid.resource:
|
349
350
|
n = self.xmpp.plugin["xep_0172"].stanza.UserNick()
|
350
351
|
n["nick"] = nick
|
351
|
-
|
352
|
+
stanza.append(n)
|
352
353
|
|
353
354
|
def _get_last_presence(self) -> Optional[CachedPresence]:
|
354
355
|
own = super()._get_last_presence()
|
@@ -400,7 +401,6 @@ class LegacyParticipant(
|
|
400
401
|
)
|
401
402
|
if presence_id:
|
402
403
|
p["id"] = presence_id
|
403
|
-
self.__add_nick_element(p)
|
404
404
|
self._send(p, full_jid)
|
405
405
|
|
406
406
|
def leave(self):
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|