From 44f33c7665e47f9f57d7b571f2e6ee37c0362522 Mon Sep 17 00:00:00 2001 From: peterguy Date: Wed, 5 Oct 2022 09:14:32 -0700 Subject: [PATCH 1/2] Read ssl_verify and timeout from config When an instance of MailCow is created, read the values for `ssl_verify` and `timeout` from the first of these to return a non-empty value: 0. kwargs 1. config file, "defaults" section 2. config file, current server section 3. globals constant --- src/mailcow/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mailcow/__init__.py b/src/mailcow/__init__.py index 1fd4c4f..0cc9bbd 100644 --- a/src/mailcow/__init__.py +++ b/src/mailcow/__init__.py @@ -61,8 +61,8 @@ def __init__(self, **kwargs): self.server = kwargs.get('server', cfg['defaults']['server']) self.url = kwargs.get('url', cfg[self.server]['url']) self.token = kwargs.get('token', cfg[self.server]['token']) - self.ssl_verify = kwargs.get('ssl_verify', SSL_VERIFY) - self.timeout = kwargs.get('timeout', SSL_TIMEOUT) + self.ssl_verify = kwargs.get('ssl_verify', cfg['defaults'].get('ssl_verify', cfg[self.server].get('ssl_verify', f'{SSL_VERIFY}'))).lower() not in ["false", "no", "f"] + self.timeout = int(kwargs.get('timeout', cfg['defaults'].get('timeout', cfg[self.server].get('timeout', f'{SSL_TIMEOUT}')))) self.data = None self.json = None From 0027520b3afa55c350fade8ec94b5e0470198846 Mon Sep 17 00:00:00 2001 From: peterguy Date: Wed, 5 Oct 2022 09:25:17 -0700 Subject: [PATCH 2/2] Suppress InsecureRequestWarning when ssl_verify is False If connecting to a Mailcow instance that's using a self-signed (or otherwise invalid) certificate, Python will emit a warning. If ssl_verify is False, we want to connect anyway, so suppress that warning. --- src/mailcow/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mailcow/__init__.py b/src/mailcow/__init__.py index 0cc9bbd..33d1578 100644 --- a/src/mailcow/__init__.py +++ b/src/mailcow/__init__.py @@ -17,7 +17,7 @@ getOpenApiParameters, getOpenApiProperties, validate_response) import yaml - +import urllib3 class MailCow: ''' @@ -62,6 +62,8 @@ def __init__(self, **kwargs): self.url = kwargs.get('url', cfg[self.server]['url']) self.token = kwargs.get('token', cfg[self.server]['token']) self.ssl_verify = kwargs.get('ssl_verify', cfg['defaults'].get('ssl_verify', cfg[self.server].get('ssl_verify', f'{SSL_VERIFY}'))).lower() not in ["false", "no", "f"] + if not self.ssl_verify: + urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) self.timeout = int(kwargs.get('timeout', cfg['defaults'].get('timeout', cfg[self.server].get('timeout', f'{SSL_TIMEOUT}')))) self.data = None self.json = None