summaryrefslogtreecommitdiff
path: root/sleekxmpp/features/feature_mechanisms
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2012-01-06 23:31:58 -0500
committerLance Stout <lancestout@gmail.com>2012-01-06 23:31:58 -0500
commitc578ddeb1aae6fb0a9f60092b53831c1e952058d (patch)
tree362f03d62e8481a1939e6c2e5882212cac6689f4 /sleekxmpp/features/feature_mechanisms
parent8ef7188dae21f9ddde40365cdff8e046d7b4678a (diff)
downloadslixmpp-c578ddeb1aae6fb0a9f60092b53831c1e952058d.tar.gz
slixmpp-c578ddeb1aae6fb0a9f60092b53831c1e952058d.tar.bz2
slixmpp-c578ddeb1aae6fb0a9f60092b53831c1e952058d.tar.xz
slixmpp-c578ddeb1aae6fb0a9f60092b53831c1e952058d.zip
Add support for MSN with X-MESSENGER-OAUTH2 SASL support.
NOTE: This requires already having the access token. It does NOT perform any OAuth requests.
Diffstat (limited to 'sleekxmpp/features/feature_mechanisms')
-rw-r--r--sleekxmpp/features/feature_mechanisms/mechanisms.py2
-rw-r--r--sleekxmpp/features/feature_mechanisms/stanza/auth.py14
2 files changed, 14 insertions, 2 deletions
diff --git a/sleekxmpp/features/feature_mechanisms/mechanisms.py b/sleekxmpp/features/feature_mechanisms/mechanisms.py
index 2b8321c2..deff5d30 100644
--- a/sleekxmpp/features/feature_mechanisms/mechanisms.py
+++ b/sleekxmpp/features/feature_mechanisms/mechanisms.py
@@ -39,6 +39,8 @@ class feature_mechanisms(base_plugin):
values['username'] = self.xmpp.boundjid.user
if 'password' in values:
values['password'] = self.xmpp.password
+ if 'access_token' in values:
+ values['access_token'] = self.xmpp.password
mech.fulfill(values)
sasl_callback = self.config.get('sasl_callback', None)
diff --git a/sleekxmpp/features/feature_mechanisms/stanza/auth.py b/sleekxmpp/features/feature_mechanisms/stanza/auth.py
index e069b57f..9155adf6 100644
--- a/sleekxmpp/features/feature_mechanisms/stanza/auth.py
+++ b/sleekxmpp/features/feature_mechanisms/stanza/auth.py
@@ -25,15 +25,25 @@ class Auth(StanzaBase):
interfaces = set(('mechanism', 'value'))
plugin_attrib = name
+ #: Some SASL mechs require sending values as is,
+ #: without converting base64.
+ plain_mechs = set(['X-MESSENGER-OAUTH2'])
+
def setup(self, xml):
StanzaBase.setup(self, xml)
self.xml.tag = self.tag_name()
def get_value(self):
- return base64.b64decode(bytes(self.xml.text))
+ if not self['mechanism'] in self.plain_mechs:
+ return base64.b64decode(bytes(self.xml.text))
+ else:
+ return self.xml.text
def set_value(self, values):
- self.xml.text = bytes(base64.b64encode(values)).decode('utf-8')
+ if not self['mechanism'] in self.plain_mechs:
+ self.xml.text = bytes(base64.b64encode(values)).decode('utf-8')
+ else:
+ self.xml.text = values
def del_value(self):
self.xml.text = ''