Просмотр исходного кода

Merge pull request #10 from hjlarry/p2

add proxy config for runtime
Yeuoly месяцев назад: 6
Родитель
Сommit
e19d3457a7

+ 4 - 0
.env.example

@@ -68,3 +68,7 @@ PPROF_ENABLED=false
 # FORCE_VERIFYING_SIGNATURE, for security, you should set this to true, pls be sure you know what you are doing
 # if want to install plugin without verifying signature, set this to false
 FORCE_VERIFYING_SIGNATURE=true
+
+# proxy settings, example: HTTP_PROXY=http://host.docker.internal:7890
+HTTP_PROXY=
+HTTPS_PROXY=

+ 1 - 1
internal/core/plugin_manager/launcher.go

@@ -129,7 +129,7 @@ func (p *PluginManager) launchLocal(pluginUniqueIdentifier plugin_entities.Plugi
 		return nil, nil, nil, failed(err.Error())
 	}
 
-	localPluginRuntime := local_runtime.NewLocalPluginRuntime(p.pythonInterpreterPath, p.pythonEnvInitTimeout)
+	localPluginRuntime := local_runtime.NewLocalPluginRuntime(p.pythonInterpreterPath, p.pythonEnvInitTimeout, p.HttpProxy, p.HttpsProxy)
 	localPluginRuntime.PluginRuntime = plugin.runtime
 	localPluginRuntime.BasicChecksum = basic_runtime.BasicChecksum{
 		MediaTransport: basic_runtime.NewMediaTransport(p.mediaBucket),

+ 6 - 0
internal/core/plugin_manager/local_runtime/run.go

@@ -36,6 +36,12 @@ func (r *LocalPluginRuntime) getCmd() (*exec.Cmd, error) {
 	if r.Config.Meta.Runner.Language == constants.Python {
 		cmd := exec.Command(r.pythonInterpreterPath, "-m", r.Config.Meta.Runner.Entrypoint)
 		cmd.Dir = r.State.WorkingPath
+		if r.HttpsProxy != "" {
+			cmd.Env = append(cmd.Env, fmt.Sprintf("HTTPS_PROXY=%s", r.HttpsProxy))
+		}
+		if r.HttpProxy != "" {
+			cmd.Env = append(cmd.Env, fmt.Sprintf("HTTP_PROXY=%s", r.HttpProxy))
+		}
 		return cmd, nil
 	}
 

+ 8 - 0
internal/core/plugin_manager/local_runtime/type.go

@@ -24,6 +24,10 @@ type LocalPluginRuntime struct {
 	// by using its venv module
 	defaultPythonInterpreterPath string
 
+	// proxy settings
+	HttpProxy  string
+	HttpsProxy string
+
 	waitChanLock    sync.Mutex
 	waitStartedChan []chan bool
 	waitStoppedChan []chan bool
@@ -34,9 +38,13 @@ type LocalPluginRuntime struct {
 func NewLocalPluginRuntime(
 	pythonInterpreterPath string,
 	pythonEnvInitTimeout int,
+	HttpProxy string,
+	HttpsProxy string,
 ) *LocalPluginRuntime {
 	return &LocalPluginRuntime{
 		defaultPythonInterpreterPath: pythonInterpreterPath,
 		pythonEnvInitTimeout:         pythonEnvInitTimeout,
+		HttpProxy:                    HttpProxy,
+		HttpsProxy:                   HttpsProxy,
 	}
 }

+ 6 - 0
internal/core/plugin_manager/manager.go

@@ -59,6 +59,10 @@ type PluginManager struct {
 	// python env init timeout
 	pythonEnvInitTimeout int
 
+	// proxy settings
+	HttpProxy  string
+	HttpsProxy string
+
 	// remote plugin server
 	remotePluginServer debugging_runtime.RemotePluginServerInterface
 
@@ -96,6 +100,8 @@ func InitGlobalManager(oss oss.OSS, configuration *app.Config) *PluginManager {
 		pythonInterpreterPath:    configuration.PythonInterpreterPath,
 		pythonEnvInitTimeout:     configuration.PythonEnvInitTimeout,
 		platform:                 configuration.Platform,
+		HttpProxy:                configuration.HttpProxy,
+		HttpsProxy:               configuration.HttpsProxy,
 	}
 
 	return manager

+ 4 - 0
internal/types/app/config.go

@@ -94,6 +94,10 @@ type Config struct {
 	SentryTracingEnabled   bool    `envconfig:"SENTRY_TRACING_ENABLED"`
 	SentryTracesSampleRate float64 `envconfig:"SENTRY_TRACES_SAMPLE_RATE"`
 	SentrySampleRate       float64 `envconfig:"SENTRY_SAMPLE_RATE"`
+
+	// proxy settings
+	HttpProxy  string `envconfig:"HTTP_PROXY"`
+	HttpsProxy string `envconfig:"HTTPS_PROXY"`
 }
 
 func (c *Config) Validate() error {