api: Allow disabling TLS verification via env vars.
This commit is contained in:
parent
285464a367
commit
d85792524e
|
@ -271,6 +271,20 @@ def get_default_config_filename():
|
|||
" mv ~/.humbugrc ~/.zuliprc\n")
|
||||
return config_file
|
||||
|
||||
def validate_boolean_field(field):
|
||||
# type: (Optional[Text]) -> Union[bool, None]
|
||||
if not isinstance(field, str):
|
||||
return None
|
||||
|
||||
field = field.lower()
|
||||
|
||||
if field == "true":
|
||||
return True
|
||||
elif field == "false":
|
||||
return False
|
||||
else:
|
||||
return None
|
||||
|
||||
class ZulipError(Exception):
|
||||
pass
|
||||
|
||||
|
@ -308,7 +322,19 @@ class Client(object):
|
|||
client_cert_key = os.environ.get("ZULIP_CERT_KEY")
|
||||
if cert_bundle is None:
|
||||
cert_bundle = os.environ.get("ZULIP_CERT_BUNDLE")
|
||||
if insecure is None:
|
||||
# Be quite strict about what is accepted so that users don't
|
||||
# disable security unintentionally.
|
||||
insecure_setting = os.environ.get('ZULIP_ALLOW_INSECURE')
|
||||
|
||||
if insecure_setting is not None:
|
||||
insecure = validate_boolean_field(insecure_setting)
|
||||
|
||||
if insecure is None:
|
||||
raise ZulipError("The ZULIP_ALLOW_INSECURE environment "
|
||||
"variable is set to '{}', it must be "
|
||||
"'true' or 'false'"
|
||||
.format(insecure_setting))
|
||||
if config_file is None:
|
||||
config_file = get_default_config_filename()
|
||||
|
||||
|
@ -331,14 +357,15 @@ class Client(object):
|
|||
if insecure is None and config.has_option("api", "insecure"):
|
||||
# Be quite strict about what is accepted so that users don't
|
||||
# disable security unintentionally.
|
||||
insecure_setting = config.get("api", "insecure").lower()
|
||||
if insecure_setting == "true":
|
||||
insecure = True
|
||||
elif insecure_setting == "false":
|
||||
insecure = False
|
||||
else:
|
||||
raise ZulipError("insecure is set to '%s', it must be 'true' or 'false' if it is used in %s"
|
||||
% (insecure_setting, config_file))
|
||||
insecure_setting = config.get('api', 'insecure')
|
||||
|
||||
insecure = validate_boolean_field(insecure_setting)
|
||||
|
||||
if insecure is None:
|
||||
raise ZulipError("insecure is set to '{}', it must be "
|
||||
"'true' or 'false' if it is used in {}"
|
||||
.format(insecure_setting, config_file))
|
||||
|
||||
elif None in (api_key, email):
|
||||
raise ConfigNotFoundError("api_key or email not specified and file %s does not exist"
|
||||
% (config_file,))
|
||||
|
|
Loading…
Reference in a new issue