Use force_ssl in python apps

Fixes: #957
This commit is contained in:
Kyle Robbertze 2021-01-19 16:23:50 +02:00
parent 757e4929a6
commit 7cb34df4fa
2 changed files with 35 additions and 22 deletions

View file

@ -67,6 +67,16 @@ api_config['api_base'] = 'api'
api_config['bin_dir'] = '/usr/lib/airtime/api_clients/' api_config['bin_dir'] = '/usr/lib/airtime/api_clients/'
api_config['update_metadata_on_tunein'] = 'update-metadata-on-tunein/api_key/%%api_key%%' api_config['update_metadata_on_tunein'] = 'update-metadata-on-tunein/api_key/%%api_key%%'
def get_protocol(config):
port = config.get('general', 'base_port', fallback=80)
if config.getboolean('general', 'force_ssl', fallback=False):
protocol = 'https'
else:
try:
protocol = config.get(CONFIG_SECTION, 'protocol')
except NoOptionError as e:
protocol = str(("http", "https")[int(port) == 443])
return protocol
################################################################################ ################################################################################
@ -169,9 +179,11 @@ class RequestProvider(object):
self.requests = {} self.requests = {}
if self.config["general"]["base_dir"].startswith("/"): if self.config["general"]["base_dir"].startswith("/"):
self.config["general"]["base_dir"] = self.config["general"]["base_dir"][1:] self.config["general"]["base_dir"] = self.config["general"]["base_dir"][1:]
protocol = get_protocol(self.config)
self.url = ApcUrl("%s://%s:%s/%s%s/%s" \ self.url = ApcUrl("%s://%s:%s/%s%s/%s" \
% (str(("http", "https")[int(self.config["general"]["base_port"]) == 443]), % (protocol, self.config["general"]["base_url"],
self.config["general"]["base_url"], str(self.config["general"]["base_port"]), str(self.config["general"]["base_port"]),
self.config["general"]["base_dir"], self.config["api_base"], self.config["general"]["base_dir"], self.config["api_base"],
'%%action%%')) '%%action%%'))
# Now we must discover the possible actions # Now we must discover the possible actions
@ -331,8 +343,9 @@ class AirtimeApiClient(object):
# TODO : Make other methods in this class use this this method. # TODO : Make other methods in this class use this this method.
if self.config["general"]["base_dir"].startswith("/"): if self.config["general"]["base_dir"].startswith("/"):
self.config["general"]["base_dir"] = self.config["general"]["base_dir"][1:] self.config["general"]["base_dir"] = self.config["general"]["base_dir"][1:]
protocol = get_protocol(self.config)
url = "%s://%s:%s/%s%s/%s" % \ url = "%s://%s:%s/%s%s/%s" % \
(str(("http", "https")[int(self.config["general"]["base_port"]) == 443]), (protocol,
self.config["general"]["base_url"], str(self.config["general"]["base_port"]), self.config["general"]["base_url"], str(self.config["general"]["base_port"]),
self.config["general"]["base_dir"], self.config["api_base"], self.config["general"]["base_dir"], self.config["api_base"],
self.config[config_action_key]) self.config[config_action_key])
@ -343,9 +356,9 @@ class AirtimeApiClient(object):
"""Constructs the base url for RESTful requests""" """Constructs the base url for RESTful requests"""
if self.config["general"]["base_dir"].startswith("/"): if self.config["general"]["base_dir"].startswith("/"):
self.config["general"]["base_dir"] = self.config["general"]["base_dir"][1:] self.config["general"]["base_dir"] = self.config["general"]["base_dir"][1:]
protocol = get_protocol(self.config)
url = "%s://%s:@%s:%s/%s/%s" % \ url = "%s://%s:@%s:%s/%s/%s" % \
(str(("http", "https")[int(self.config["general"]["base_port"]) == 443]), (protocol, self.config["general"]["api_key"],
self.config["general"]["api_key"],
self.config["general"]["base_url"], str(self.config["general"]["base_port"]), self.config["general"]["base_url"], str(self.config["general"]["base_port"]),
self.config["general"]["base_dir"], self.config["general"]["base_dir"],
self.config[config_action_key]) self.config[config_action_key])

View file

@ -67,10 +67,10 @@ class PypoFile(Thread):
CONFIG_SECTION = "general" CONFIG_SECTION = "general"
username = self._config.get(CONFIG_SECTION, 'api_key') username = self._config.get(CONFIG_SECTION, 'api_key')
baseurl = self._config.get(CONFIG_SECTION, 'base_url') baseurl = self._config.get(CONFIG_SECTION, 'base_url')
try: port = self._config.get(CONFIG_SECTION, 'base_port', 80)
port = self._config.get(CONFIG_SECTION, 'base_port') if self._config.getboolean(CONFIG_SECTION, 'force_ssl', fallback=False):
except NoOptionError as e: protocol = 'https'
port = 80 else:
try: try:
protocol = self._config.get(CONFIG_SECTION, 'protocol') protocol = self._config.get(CONFIG_SECTION, 'protocol')
except NoOptionError as e: except NoOptionError as e: