mirror of
https://github.com/clearlinux/clr-installer.git
synced 2026-08-21 15:17:54 +00:00
59302346d6
Signed-off-by: Mark D Horn <mark.d.horn@intel.com>
85 lines
2.1 KiB
Go
85 lines
2.1 KiB
Go
// Copyright © 2020 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: GPL-3.0-only
|
|
|
|
package proxy
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
|
|
"github.com/clearlinux/clr-installer/log"
|
|
)
|
|
|
|
// GetProxyValueFunc is the type of the GetProxyValue function
|
|
type GetProxyValueFunc func(prefix string) string
|
|
|
|
var (
|
|
proxyPrefixes = [...]string{"ftp", "http", "https", "socks", "no"}
|
|
httpsProxy string
|
|
getProxyValueFunc GetProxyValueFunc
|
|
preProxyFunc func()
|
|
)
|
|
|
|
// SetHTTPSProxy defines the HTTPS_PROXY env var value for all the cmd executions
|
|
func SetHTTPSProxy(addr string) {
|
|
log.Debug("proxy.SetHTTPSProxy = %s", addr)
|
|
httpsProxy = addr
|
|
}
|
|
|
|
// SetPreProxyFunc save the function used to run before processing proxies
|
|
// This is currently used by Gnome UI to copy Network Proxy from install user
|
|
func SetPreProxyFunc(f func()) {
|
|
preProxyFunc = f
|
|
}
|
|
|
|
// SetGetProxyValueFunc save the function used to return a string value
|
|
// for a Proxy based on the string prefix passed
|
|
func SetGetProxyValueFunc(f GetProxyValueFunc) {
|
|
getProxyValueFunc = f
|
|
}
|
|
|
|
// GetProxyValues returns a set of environment variable for a Bash shell command
|
|
func GetProxyValues() []string {
|
|
values := []string{}
|
|
|
|
if preProxyFunc != nil {
|
|
preProxyFunc()
|
|
}
|
|
|
|
myGetProxyValueFunc := getProxyValueFunc
|
|
if myGetProxyValueFunc == nil {
|
|
myGetProxyValueFunc = DefaultGetProxyValue
|
|
}
|
|
|
|
var value string
|
|
for _, prefix := range proxyPrefixes {
|
|
if prefix == "https" && httpsProxy != "" {
|
|
value = httpsProxy
|
|
} else {
|
|
value = myGetProxyValueFunc(prefix)
|
|
}
|
|
|
|
if value != "" {
|
|
values = append(values, fmt.Sprintf("%s_proxy=%s", prefix, value))
|
|
|
|
upperValue := os.Getenv(strings.ToUpper(prefix) + "_PROXY")
|
|
if upperValue != "" {
|
|
values = append(values, fmt.Sprintf("%s_PROXY=%s", strings.ToUpper(prefix), upperValue))
|
|
} else {
|
|
values = append(values, fmt.Sprintf("%s_PROXY=%s", strings.ToUpper(prefix), value))
|
|
}
|
|
}
|
|
}
|
|
|
|
return values
|
|
}
|
|
|
|
// DefaultGetProxyValue default implementation which only pulls from
|
|
// the current environment variables
|
|
func DefaultGetProxyValue(prefix string) string {
|
|
log.Debug("Using default shellProxy.DefaultGetProxyValue")
|
|
return os.Getenv(prefix + "_proxy")
|
|
}
|