Commit 7e700683 authored by Philipp Hörist's avatar Philipp Hörist

Add In-Band Registration (XEP-0077) support

parent 47e73f72
Pipeline #4620 passed with stages
in 25 seconds
......@@ -78,6 +78,7 @@ from nbxmpp.modules.correction import Correction
from nbxmpp.modules.attention import Attention
from nbxmpp.modules.security_labels import SecurityLabels
from nbxmpp.modules.chatstates import Chatstates
from nbxmpp.modules.register import Register
from nbxmpp.modules.misc import unwrap_carbon
from nbxmpp.modules.misc import unwrap_mam
from nbxmpp.util import get_properties_struct
......@@ -223,6 +224,7 @@ class XMPPDispatcher(PlugIn):
self._modules['Attention'] = Attention(self._owner)
self._modules['SecurityLabels'] = SecurityLabels(self._owner)
self._modules['Chatstates'] = Chatstates(self._owner)
self._modules['Register'] = Register(self._owner)
for instance in self._modules.values():
for handler in instance.handlers:
......
# Copyright (C) 2018 Philipp Hörist <philipp AT hoerist.com>
#
# This file is part of nbxmpp.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; If not, see <http://www.gnu.org/licenses/>.
import logging
from nbxmpp.protocol import NS_REGISTER
from nbxmpp.protocol import Iq
from nbxmpp.protocol import isResultNode
from nbxmpp.structs import CommonResult
from nbxmpp.util import call_on_response
from nbxmpp.util import callback
from nbxmpp.util import raise_error
log = logging.getLogger('nbxmpp.m.register')
class Register:
def __init__(self, client):
self._client = client
self.handlers = []
@call_on_response('_default_response')
def unregister(self):
hostname = self._client.get_bound_jid().getDomain()
iq = Iq('set', to=hostname)
query = iq.setQuery()
query.setNamespace(NS_REGISTER)
query.addChild('remove')
return iq
@callback
def _default_response(self, stanza):
if not isResultNode(stanza):
return raise_error(log.info, stanza)
return CommonResult(jid=stanza.getFrom())
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment