Add an extra config dict to store SASL credentials.
We'll need extra things beyond just a password, such as api_key.
This commit is contained in:
parent
02f4006153
commit
0d2125e737
2 changed files with 24 additions and 7 deletions
|
@ -74,12 +74,15 @@ class ClientXMPP(BaseXMPP):
|
|||
BaseXMPP.__init__(self, jid, 'jabber:client')
|
||||
|
||||
self.set_jid(jid)
|
||||
self.password = password
|
||||
self.escape_quotes = escape_quotes
|
||||
self.plugin_config = plugin_config
|
||||
self.plugin_whitelist = plugin_whitelist
|
||||
self.default_port = 5222
|
||||
|
||||
self.credentials = {}
|
||||
|
||||
self.password = password
|
||||
|
||||
self.stream_header = "<stream:stream to='%s' %s %s version='1.0'>" % (
|
||||
self.boundjid.host,
|
||||
"xmlns:stream='%s'" % self.stream_ns,
|
||||
|
@ -119,6 +122,14 @@ class ClientXMPP(BaseXMPP):
|
|||
self.register_plugin('feature_mechanisms',
|
||||
pconfig={'use_mech': sasl_mech} if sasl_mech else None)
|
||||
|
||||
@property
|
||||
def password(self):
|
||||
return self.credentials.get('password', '')
|
||||
|
||||
@password.setter
|
||||
def password(self, value):
|
||||
self.credentials['password'] = value
|
||||
|
||||
def connect(self, address=tuple(), reattempt=True,
|
||||
use_tls=True, use_ssl=False):
|
||||
"""Connect to the XMPP server.
|
||||
|
|
|
@ -35,12 +35,18 @@ class feature_mechanisms(base_plugin):
|
|||
return 'starttls' in self.xmpp.features
|
||||
|
||||
def basic_callback(mech, values):
|
||||
if 'username' in values:
|
||||
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
|
||||
for value in values:
|
||||
if value == 'username':
|
||||
values['username'] = self.xmpp.boundjid.user
|
||||
elif value == 'password':
|
||||
values['password'] = self.xmpp.credentials['password']
|
||||
elif value == 'access_token':
|
||||
if 'access_token' in self.xmpp.credentials:
|
||||
values['access_token'] = self.xmpp.credentials['access_token']
|
||||
else:
|
||||
values['access_token'] = self.xmpp.credentials['password']
|
||||
elif value in self.xmpp.credentials:
|
||||
values[value] = self.xmpp.credentials[value]
|
||||
mech.fulfill(values)
|
||||
|
||||
sasl_callback = self.config.get('sasl_callback', None)
|
||||
|
|
Loading…
Reference in a new issue