mirror of
https://github.com/correl/SleekXMPP.git
synced 2024-11-24 03:00:15 +00:00
b0297af38d
Fixed missing references that weren't caught due to leftover pyc file allowing tests to keep working when they shouldn't have.
40 lines
1.1 KiB
Python
40 lines
1.1 KiB
Python
import base64
|
|
import sys
|
|
import logging
|
|
|
|
from sleekxmpp.plugins.base import base_plugin
|
|
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
class sasl_plain(base_plugin):
|
|
|
|
def plugin_init(self):
|
|
self.name = 'SASL PLAIN'
|
|
self.rfc = '6120'
|
|
self.description = 'SASL PLAIN Mechanism'
|
|
|
|
self.xmpp.register_sasl_mechanism('PLAIN',
|
|
self._handle_plain,
|
|
priority=self.config.get('priority', 1))
|
|
|
|
def _handle_plain(self):
|
|
if not self.xmpp.boundjid.user:
|
|
return False
|
|
|
|
if sys.version_info < (3, 0):
|
|
user = bytes(self.xmpp.boundjid.user)
|
|
password = bytes(self.xmpp.password)
|
|
else:
|
|
user = bytes(self.xmpp.boundjid.user, 'utf-8')
|
|
password = bytes(self.xmpp.password, 'utf-8')
|
|
|
|
auth = base64.b64encode(b'\x00' + user + \
|
|
b'\x00' + password).decode('utf-8')
|
|
|
|
resp = self.xmpp['feature_mechanisms'].stanza.Auth(self.xmpp)
|
|
resp['mechanism'] = 'PLAIN'
|
|
resp['value'] = auth
|
|
resp.send(now=True)
|
|
return True
|