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['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 = {}
if self.config["general"]["base_dir"].startswith("/"):
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" \
% (str(("http", "https")[int(self.config["general"]["base_port"]) == 443]),
self.config["general"]["base_url"], str(self.config["general"]["base_port"]),
% (protocol, self.config["general"]["base_url"],
str(self.config["general"]["base_port"]),
self.config["general"]["base_dir"], self.config["api_base"],
'%%action%%'))
# 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.
if self.config["general"]["base_dir"].startswith("/"):
self.config["general"]["base_dir"] = self.config["general"]["base_dir"][1:]
protocol = get_protocol(self.config)
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_dir"], self.config["api_base"],
self.config[config_action_key])
@ -343,9 +356,9 @@ class AirtimeApiClient(object):
"""Constructs the base url for RESTful requests"""
if self.config["general"]["base_dir"].startswith("/"):
self.config["general"]["base_dir"] = self.config["general"]["base_dir"][1:]
protocol = get_protocol(self.config)
url = "%s://%s:@%s:%s/%s/%s" % \
(str(("http", "https")[int(self.config["general"]["base_port"]) == 443]),
self.config["general"]["api_key"],
(protocol, self.config["general"]["api_key"],
self.config["general"]["base_url"], str(self.config["general"]["base_port"]),
self.config["general"]["base_dir"],
self.config[config_action_key])

View file

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