diff options
| -rw-r--r-- | climl_imap_bridge.py | 28 | 
1 files changed, 22 insertions, 6 deletions
| diff --git a/climl_imap_bridge.py b/climl_imap_bridge.py index 8070b86..c0ddb82 100644 --- a/climl_imap_bridge.py +++ b/climl_imap_bridge.py @@ -7,6 +7,22 @@ import imapclient  import backports.ssl +def conf_boolean_postprocess(src): +    src = src.lower().strip() +    if src == 'true' or src == 'on' or src == '1': +        return True +    return False + +def conf_postprocess(conf): +    d = { +            'imap.tls':                     conf_boolean_postprocess, +            'imap.start_tls':               conf_boolean_postprocess, +            'imap.tls_nocheck_hostname':    conf_boolean_postprocess, +            'imap.tls_nocheck_ca':          conf_boolean_postprocess, +    } +    return {key: d[key](value) if key in d else value +            for key, value in conf.items()} +  def connect_to_imap(conf, password):      cafile = conf.get('imap.tls_ca', None) @@ -16,18 +32,18 @@ def connect_to_imap(conf, password):      ssl_context = imapclient.create_default_context(cafile=cafile) -    if conf.get('imap.tls_nocheck_hostname', 'false').lower() == 'true': +    if conf.get('imap.tls_nocheck_hostname', False):          # don't check if certificate hostname doesn't match target hostname          ssl_context.check_hostname = False -    if conf.get('imap.tls_nocheck_ca', 'false').lower() == 'true': +    if conf.get('imap.tls_nocheck_ca', False):          # don't check if the certificate is trusted by a certificate authority          ssl_context.verify_mode = backports.ssl.CERT_NONE      connection = imapclient.IMAPClient(host=conf.get('imap.server'), -            ssl=conf.get('imap.tls', 'true').lower() == 'true', +            ssl=conf.get('imap.tls', True),              ssl_context=ssl_context) -    if conf.get('imap.start_tls', 'false').lower() == 'true': +    if conf.get('imap.start_tls', False):          connection.start_tls(ssl_context=ssl_context)      print('connection succeed')      connection.login(username=conf.get('imap.username'), password=password) @@ -35,8 +51,8 @@ def connect_to_imap(conf, password):      return connection  def main(): -    confpath = os.path.expanduser('~') + '/temp/conf.cfg' -    conf = confparser.read_conf(confpath) +    confpath = os.path.expanduser('~/temp/conf.cfg') +    conf = conf_postprocess(confparser.read_conf(confpath))      print('Read conf:', conf)      password_command = conf.get('imap.password_command', None)      if password_command: | 
