Philipp Hörist pushed to branch master at gajim / python-nbxmpp


Commits:
a108b3d6 by Philipp Hörist at 2026-03-05T22:00:24+01:00
feat: Implement XEP-445 Pre-Auth IBR

- - - - -
648b3376 by Philipp Hörist at 2026-03-05T22:01:44+01:00
other: Update python-nbxmpp.doap

- - - - -


4 changed files:

- nbxmpp/modules/register/register.py
- nbxmpp/namespaces.py
- nbxmpp/protocol.py
- python-nbxmpp.doap


Changes:

=====================================
nbxmpp/modules/register/register.py
=====================================
@@ -42,6 +42,19 @@ class Register(BaseModule):
         response = yield _make_unregister_request(jid)
         yield process_response(response)
 
+    @iq_request_task
+    def send_preauth(self, token: str, jid: JID | None = None):
+        _task = yield
+
+        if jid is None:
+            jid = self._client.domain
+
+        iq = Iq("set", to=jid)
+        iq.addChild("preauth", namespace=Namespace.PARS, attrs={"token": 
token})
+
+        response = yield iq
+        yield process_response(response)
+
     @iq_request_task
     def request_register_form(self, jid: JID | None = None):
         _task = yield


=====================================
nbxmpp/namespaces.py
=====================================
@@ -73,6 +73,7 @@ class _Namespaces:
     HTTPUPLOAD_0: str = "urn:xmpp:http:upload:0"
     HTTP_AUTH: str = "http://jabber.org/protocol/http-auth";
     IBB: str = "http://jabber.org/protocol/ibb";
+    IBR_TOKEN = "urn:xmpp:ibr-token:0"  # noqa: S105
     IDLE: str = "urn:xmpp:idle:1"
     JINGLE: str = "urn:xmpp:jingle:1"
     JINGLE_BYTESTREAM: str = "urn:xmpp:jingle:transports:s5b:1"


=====================================
nbxmpp/protocol.py
=====================================
@@ -2032,6 +2032,9 @@ class Features(Node):
     def has_register(self) -> bool:
         return self.getTag("register", namespace=Namespace.REGISTER_FEATURE) 
is not None
 
+    def has_ibr_token(self) -> bool:
+        return self.getTag("register", namespace=Namespace.IBR_TOKEN) is not 
None
+
     def has_anonymous(self) -> bool:
         return "ANONYMOUS" in self.get_mechs()
 


=====================================
python-nbxmpp.doap
=====================================
@@ -373,6 +373,13 @@
         <xmpp:note>Basic Spam/Abuse reporting via XEP-0191</xmpp:note>
       </xmpp:SupportedXep>
     </implements>
+    <implements>
+      <xmpp:SupportedXep>
+        <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0379.html"/>
+        <xmpp:status>complete</xmpp:status>
+        <xmpp:version>0.3.3</xmpp:version>
+      </xmpp:SupportedXep>
+    </implements>
     <implements>
       <xmpp:SupportedXep>
         <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0380.html"/>
@@ -451,6 +458,13 @@
         <xmpp:version>0.1.0</xmpp:version>
       </xmpp:SupportedXep>
     </implements>
+    <implements>
+      <xmpp:SupportedXep>
+        <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0445.html"/>
+        <xmpp:status>complete</xmpp:status>
+        <xmpp:version>0.2.0</xmpp:version>
+      </xmpp:SupportedXep>
+    </implements>
     <implements>
       <xmpp:SupportedXep>
         <xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0461.html"/>



View it on GitLab: 
https://dev.gajim.org/gajim/python-nbxmpp/-/compare/8ec6c9d0d0a52cec91d9e7efd0babf88ea9ff311...648b3376239fc1c59cd2a5bc23285a36741b70be

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/python-nbxmpp/-/compare/8ec6c9d0d0a52cec91d9e7efd0babf88ea9ff311...648b3376239fc1c59cd2a5bc23285a36741b70be
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to