mirror of
https://github.com/correl/SleekXMPP.git
synced 2024-11-30 19:19:55 +00:00
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.append((order, name))
|
||||||
self._stream_feature_order.sort()
|
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=[],
|
def update_roster(self, jid, name=None, subscription=None, groups=[],
|
||||||
block=True, timeout=None, callback=None):
|
block=True, timeout=None, callback=None):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -51,7 +51,7 @@ class feature_mechanisms(base_plugin):
|
||||||
restart=True,
|
restart=True,
|
||||||
order=self.config.get('order', 100))
|
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.
|
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.append((priority, name))
|
||||||
self._mechanism_priorities.sort(reverse=True)
|
self._mechanism_priorities.sort(reverse=True)
|
||||||
|
|
||||||
def remove_mechanism(self, name):
|
def remove(self, name):
|
||||||
"""
|
"""
|
||||||
Remove support for a given SASL authentication mechanism.
|
Remove support for a given SASL authentication mechanism.
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,9 @@ class sasl_anonymous(base_plugin):
|
||||||
self.name = 'SASL ANONYMOUS'
|
self.name = 'SASL ANONYMOUS'
|
||||||
self.rfc = '6120'
|
self.rfc = '6120'
|
||||||
self.description = 'SASL ANONYMOUS Mechanism'
|
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,
|
self._handle_anonymous,
|
||||||
priority=self.config.get('priority', 0))
|
priority=self.config.get('priority', 0))
|
||||||
|
|
||||||
|
@ -23,7 +24,7 @@ class sasl_anonymous(base_plugin):
|
||||||
if self.xmpp.boundjid.user:
|
if self.xmpp.boundjid.user:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
resp = self.xmpp['feature_sasl'].stanza.Auth(self.xmpp)
|
resp = self.stanza.Auth(self.xmpp)
|
||||||
resp['mechanism'] = 'ANONYMOUS'
|
resp['mechanism'] = 'ANONYMOUS'
|
||||||
resp.send(now=True)
|
resp.send(now=True)
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,9 @@ class sasl_plain(base_plugin):
|
||||||
self.name = 'SASL PLAIN'
|
self.name = 'SASL PLAIN'
|
||||||
self.rfc = '6120'
|
self.rfc = '6120'
|
||||||
self.description = 'SASL PLAIN Mechanism'
|
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,
|
self._handle_plain,
|
||||||
priority=self.config.get('priority', 1))
|
priority=self.config.get('priority', 1))
|
||||||
|
|
||||||
|
@ -33,7 +34,7 @@ class sasl_plain(base_plugin):
|
||||||
auth = base64.b64encode(b'\x00' + user + \
|
auth = base64.b64encode(b'\x00' + user + \
|
||||||
b'\x00' + password).decode('utf-8')
|
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['mechanism'] = 'PLAIN'
|
||||||
resp['value'] = auth
|
resp['value'] = auth
|
||||||
resp.send(now=True)
|
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