diff options
author | Samuel Mendoza-Jonas <sam@mendozajonas.com> | 2016-10-27 14:56:05 +1100 |
---|---|---|
committer | Samuel Mendoza-Jonas <sam@mendozajonas.com> | 2016-11-24 11:42:25 +1100 |
commit | a055f6714fd06aa3b633b1bc44a8dbf42a0eedb0 (patch) | |
tree | 6223076e8bcfe2c828f4b40d6a4fb8760f520c7b /discover/platform-powerpc.c | |
parent | 1dd51e986202e5e111c1042f148867bd08c2bedc (diff) | |
download | petitboot-a055f6714fd06aa3b633b1bc44a8dbf42a0eedb0.zip petitboot-a055f6714fd06aa3b633b1bc44a8dbf42a0eedb0.tar.gz |
Support HTTP(S) proxies when downloading resources
Allow the user to specify a HTTP and HTTPS proxy server. The discover
server will set the http_proxy and https_proxy environment variables,
enabling the proxy servers for any further HTTP(S) requests.
Signed-off-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
Diffstat (limited to 'discover/platform-powerpc.c')
-rw-r--r-- | discover/platform-powerpc.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/discover/platform-powerpc.c b/discover/platform-powerpc.c index a4b13e4..77e8824 100644 --- a/discover/platform-powerpc.c +++ b/discover/platform-powerpc.c @@ -60,6 +60,8 @@ static const char *known_params[] = { "petitboot,write?", "petitboot,snapshots?", "petitboot,console", + "petitboot,http_proxy", + "petitboot,https_proxy", NULL, }; @@ -525,6 +527,19 @@ static void populate_bootdev_config(struct platform_powerpc *platform, config->n_autoboot_opts = 1; } +static void set_proxy_variables(struct config *config) +{ + if (config->http_proxy) + setenv("http_proxy", config->http_proxy, 1); + else + unsetenv("http_proxy"); + + if (config->https_proxy) + setenv("https_proxy", config->https_proxy, 1); + else + unsetenv("https_proxy"); +} + static void populate_config(struct platform_powerpc *platform, struct config *config) { @@ -573,6 +588,14 @@ static void populate_config(struct platform_powerpc *platform, /* If a full path is already set we don't want to override it */ config->manual_console = config->boot_console && !strchr(config->boot_console, '['); + + val = get_param(platform, "petitboot,http_proxy"); + if (val) + config->http_proxy = talloc_strdup(config, val); + val = get_param(platform, "petitboot,https_proxy"); + if (val) + config->https_proxy = talloc_strdup(config, val); + set_proxy_variables(config); } static char *iface_config_str(void *ctx, struct interface_config *config) @@ -754,6 +777,12 @@ static int update_config(struct platform_powerpc *platform, update_string_config(platform, "petitboot,console", val); } + val = config->http_proxy ?: ""; + update_string_config(platform, "petitboot,http_proxy", val); + val = config->https_proxy ?: ""; + update_string_config(platform, "petitboot,https_proxy", val); + set_proxy_variables(config); + update_network_config(platform, config); update_bootdev_config(platform, config); |