diff options
author | mathieui <mathieui@mathieui.net> | 2014-12-11 22:28:44 +0100 |
---|---|---|
committer | mathieui <mathieui@mathieui.net> | 2014-12-11 22:28:44 +0100 |
commit | 00396c158aa032585db88cfd4b622281ba3cbd7f (patch) | |
tree | dfe9711c6ccc3b908c1de8a06bc5080139113bf4 /src/connection.py | |
parent | 21d8a3e7e19dc639262ac7fa7d7817351ff8b4c1 (diff) | |
download | poezio-00396c158aa032585db88cfd4b622281ba3cbd7f.tar.gz poezio-00396c158aa032585db88cfd4b622281ba3cbd7f.tar.bz2 poezio-00396c158aa032585db88cfd4b622281ba3cbd7f.tar.xz poezio-00396c158aa032585db88cfd4b622281ba3cbd7f.zip |
Fix #2847 (SASL External support)
- Add two new options, keyfile and certfile, which must be both set for
the auth to work.
- if both are set, then poezio doesn’t force-prompt a password if there
is none specified
- add /cert_add, /cert_fetch, /cert_disable, /cert_revoke and /certs
commands.
- add a page of documentation on the process
Diffstat (limited to 'src/connection.py')
-rw-r--r-- | src/connection.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/connection.py b/src/connection.py index 1bbe632d..cd2ccedd 100644 --- a/src/connection.py +++ b/src/connection.py @@ -30,6 +30,10 @@ class Connection(slixmpp.ClientXMPP): __init = False def __init__(self): resource = config.get('resource') + + keyfile = config.get('keyfile') + certfile = config.get('certfile') + if config.get('jid'): # Field used to know if we are anonymous or not. # many features will be handled differently @@ -38,7 +42,9 @@ class Connection(slixmpp.ClientXMPP): jid = '%s' % config.get('jid') if resource: jid = '%s/%s'% (jid, resource) - password = config.get('password') or getpass.getpass() + password = config.get('password') + if not password and not (keyfile and certfile): + password = getpass.getpass() else: # anonymous auth self.anon = True jid = config.get('server') @@ -57,6 +63,13 @@ class Connection(slixmpp.ClientXMPP): self['feature_mechanisms'].unencrypted_cram = False self['feature_mechanisms'].unencrypted_scram = False + self.keyfile = config.get('keyfile') + self.certfile = config.get('certfile') + if keyfile and not certfile: + log.error('keyfile is present in configuration file without certfile') + elif certfile and not keyfile: + log.error('certfile is present in configuration file without keyfile') + self.core = None self.auto_reconnect = config.get('auto_reconnect') self.reconnect_max_attempts = 0 @@ -127,6 +140,7 @@ class Connection(slixmpp.ClientXMPP): self.register_plugin('xep_0202') self.register_plugin('xep_0224') self.register_plugin('xep_0249') + self.register_plugin('xep_0257') self.register_plugin('xep_0280') self.register_plugin('xep_0297') self.register_plugin('xep_0308') |