Simplify SASL mech registration.
Moved SASL registration completely to the feature plugin, instead of keeping a portion of it in ClientXMPP.
This commit is contained in:
parent
b0297af38d
commit
fba235a801
5 changed files with 8 additions and 40 deletions
|
@ -197,32 +197,6 @@ class ClientXMPP(BaseXMPP):
|
|||
self._stream_feature_order.append((order, name))
|
||||
self._stream_feature_order.sort()
|
||||
|
||||
def register_sasl_mechanism(self, name, handler, priority=0):
|
||||
"""
|
||||
Register a handler for a SASL authentication mechanism.
|
||||
|
||||
Arguments:
|
||||
name -- The name of the mechanism (all caps)
|
||||
handler -- The function that will perform the
|
||||
authentication. The function must
|
||||
return True if it is able to carry
|
||||
out the authentication, False if
|
||||
a required condition is not met.
|
||||
priority -- An integer value indicating the
|
||||
preferred ordering for the mechanism.
|
||||
High values will be attempted first.
|
||||
"""
|
||||
self['feature_mechanisms'].register_mechanism(name, handler, priority)
|
||||
|
||||
def remove_sasl_mechanism(self, name):
|
||||
"""
|
||||
Remove support for a given SASL authentication mechanism.
|
||||
|
||||
Arguments:
|
||||
name -- The name of the mechanism to remove (all caps)
|
||||
"""
|
||||
self['feature_mechanisms'].remove_mechanism(name)
|
||||
|
||||
def update_roster(self, jid, name=None, subscription=None, groups=[],
|
||||
block=True, timeout=None, callback=None):
|
||||
"""
|
||||
|
|
|
@ -51,7 +51,7 @@ class feature_mechanisms(base_plugin):
|
|||
restart=True,
|
||||
order=self.config.get('order', 100))
|
||||
|
||||
def register_mechanism(self, name, handler, priority=0):
|
||||
def register(self, name, handler, priority=0):
|
||||
"""
|
||||
Register a handler for a SASL authentication mechanism.
|
||||
|
||||
|
@ -70,7 +70,7 @@ class feature_mechanisms(base_plugin):
|
|||
self._mechanism_priorities.append((priority, name))
|
||||
self._mechanism_priorities.sort(reverse=True)
|
||||
|
||||
def remove_mechanism(self, name):
|
||||
def remove(self, name):
|
||||
"""
|
||||
Remove support for a given SASL authentication mechanism.
|
||||
|
||||
|
|
|
@ -14,8 +14,9 @@ class sasl_anonymous(base_plugin):
|
|||
self.name = 'SASL ANONYMOUS'
|
||||
self.rfc = '6120'
|
||||
self.description = 'SASL ANONYMOUS Mechanism'
|
||||
self.stanza = self.xmpp['feature_mechanisms'].stanza
|
||||
|
||||
self.xmpp.register_sasl_mechanism('ANONYMOUS',
|
||||
self.xmpp['feature_mechanisms'].register('ANONYMOUS',
|
||||
self._handle_anonymous,
|
||||
priority=self.config.get('priority', 0))
|
||||
|
||||
|
@ -23,7 +24,7 @@ class sasl_anonymous(base_plugin):
|
|||
if self.xmpp.boundjid.user:
|
||||
return False
|
||||
|
||||
resp = self.xmpp['feature_sasl'].stanza.Auth(self.xmpp)
|
||||
resp = self.stanza.Auth(self.xmpp)
|
||||
resp['mechanism'] = 'ANONYMOUS'
|
||||
resp.send(now=True)
|
||||
|
||||
|
|
|
@ -14,8 +14,9 @@ class sasl_plain(base_plugin):
|
|||
self.name = 'SASL PLAIN'
|
||||
self.rfc = '6120'
|
||||
self.description = 'SASL PLAIN Mechanism'
|
||||
self.stanza = self.xmpp['feature_mechanisms'].stanza
|
||||
|
||||
self.xmpp.register_sasl_mechanism('PLAIN',
|
||||
self.xmpp['feature_mechanisms'].register('PLAIN',
|
||||
self._handle_plain,
|
||||
priority=self.config.get('priority', 1))
|
||||
|
||||
|
@ -33,7 +34,7 @@ class sasl_plain(base_plugin):
|
|||
auth = base64.b64encode(b'\x00' + user + \
|
||||
b'\x00' + password).decode('utf-8')
|
||||
|
||||
resp = self.xmpp['feature_mechanisms'].stanza.Auth(self.xmpp)
|
||||
resp = self.stanza.Auth(self.xmpp)
|
||||
resp['mechanism'] = 'PLAIN'
|
||||
resp['value'] = auth
|
||||
resp.send(now=True)
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
"""
|
||||
SleekXMPP: The Sleek XMPP Library
|
||||
Copyright (C) 2010 Nathanael C. Fritz
|
||||
This file is part of SleekXMPP.
|
||||
|
||||
See the file LICENSE for copying permission.
|
||||
"""
|
||||
|
Loading…
Reference in a new issue