From cec34686fcfe09281931e977fcf322dac275aad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maxime=20=E2=80=9Cpep=E2=80=9D=20Buquet?= Date: Wed, 27 May 2020 22:28:47 +0200 Subject: New XEP: 0421 Occupant-id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Maxime “pep” Buquet --- slixmpp/plugins/xep_0421/__init__.py | 13 ++++++++++++ slixmpp/plugins/xep_0421/occupant_id.py | 26 +++++++++++++++++++++++ slixmpp/plugins/xep_0421/stanza.py | 37 +++++++++++++++++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 slixmpp/plugins/xep_0421/__init__.py create mode 100644 slixmpp/plugins/xep_0421/occupant_id.py create mode 100644 slixmpp/plugins/xep_0421/stanza.py (limited to 'slixmpp') diff --git a/slixmpp/plugins/xep_0421/__init__.py b/slixmpp/plugins/xep_0421/__init__.py new file mode 100644 index 00000000..4595ffad --- /dev/null +++ b/slixmpp/plugins/xep_0421/__init__.py @@ -0,0 +1,13 @@ +""" + Slixmpp: The Slick XMPP Library + Copyright (C) 2020 "Maxime “pep” Buquet " + This file is part of Slixmpp. + + See the file LICENSE for copying permission. +""" + +from slixmpp.plugins.base import register_plugin +from slixmpp.plugins.xep_0421.stanza import OccupantId +from slixmpp.plugins.xep_0421.occupant_id import XEP_0421 + +register_plugin(XEP_0421) diff --git a/slixmpp/plugins/xep_0421/occupant_id.py b/slixmpp/plugins/xep_0421/occupant_id.py new file mode 100644 index 00000000..51d374fc --- /dev/null +++ b/slixmpp/plugins/xep_0421/occupant_id.py @@ -0,0 +1,26 @@ +""" + Slixmpp: The Slick XMPP Library + Copyright (C) 2020 "Maxime “pep” Buquet " + This file is part of Slixmpp. + + See the file LICENSE for copying permission. +""" + +from slixmpp import Message +from slixmpp.plugins import BasePlugin +from slixmpp.xmlstream import register_stanza_plugin +from slixmpp.plugins.xep_0421 import stanza +from slixmpp.plugins.xep_0421.stanza import OccupantId + + +class XEP_0421(BasePlugin): + '''XEP-0421: Anonymous unique occupant identifiers for MUCs''' + + name = 'xep_0421' + description = 'Anonymous unique occupant identifiers for MUCs' + dependencies = {'xep_0045'} + stanza = stanza + + def plugin_init(self) -> None: + # XXX: This should be MucMessage. Someday.. + register_stanza_plugin(Message, OccupantId) diff --git a/slixmpp/plugins/xep_0421/stanza.py b/slixmpp/plugins/xep_0421/stanza.py new file mode 100644 index 00000000..d05bcfc1 --- /dev/null +++ b/slixmpp/plugins/xep_0421/stanza.py @@ -0,0 +1,37 @@ +""" + Slixmpp: The Slick XMPP Library + Copyright (C) 2020 "Maxime “pep” Buquet " + This file is part of Slixmpp. + + See the file LICENSE for copying permission. +""" + +from slixmpp.xmlstream import ElementBase + + +class OccupantId(ElementBase): + ''' + An Occupant-id tag. + + An tag is set by the MUC. + + This is useful in semi-anon MUCs (and MUC-PMs) as a stable identifier to + prevent the usual races with nicknames. + + Without occupant-id, getting the following messages from MUC history would + prevent a client from asserting senders are the same entity: + + + Some message + + + + Some correction + + + + ''' + + name = 'occupant-id' + namespace = 'urn:xmpp:occupant-id:0' + interface = {'id'} -- cgit v1.2.3