diff --git a/cmd/osbuild-worker/config.go b/cmd/osbuild-worker/config.go index cc3838541..f28cf0eff 100644 --- a/cmd/osbuild-worker/config.go +++ b/cmd/osbuild-worker/config.go @@ -83,6 +83,7 @@ type repositoryMTLSConfig struct { CA string `toml:"ca"` MTLSClientKey string `toml:"mtls_client_key"` MTLSClientCert string `toml:"mtls_client_cert"` + Proxy string `toml:"proxy"` } type workerConfig struct { diff --git a/cmd/osbuild-worker/jobimpl-depsolve.go b/cmd/osbuild-worker/jobimpl-depsolve.go index d85bd2433..4a172f139 100644 --- a/cmd/osbuild-worker/jobimpl-depsolve.go +++ b/cmd/osbuild-worker/jobimpl-depsolve.go @@ -19,6 +19,7 @@ type RepositoryMTLSConfig struct { CA string MTLSClientKey string MTLSClientCert string + Proxy *url.URL } func (rmc *RepositoryMTLSConfig) CompareBaseURL(baseURLStr string) (bool, error) { @@ -51,6 +52,12 @@ type DepsolveJobImpl struct { // (matching map keys). func (impl *DepsolveJobImpl) depsolve(packageSets map[string][]rpmmd.PackageSet, modulePlatformID, arch, releasever string) (map[string][]rpmmd.PackageSpec, map[string][]rpmmd.RepoConfig, error) { solver := impl.Solver.NewWithConfig(modulePlatformID, releasever, arch, "") + if impl.RepositoryMTLSConfig.Proxy != nil { + err := solver.SetProxy(impl.RepositoryMTLSConfig.Proxy.String()) + if err != nil { + return nil, nil, err + } + } depsolvedSets := make(map[string][]rpmmd.PackageSpec) repoConfigs := make(map[string][]rpmmd.RepoConfig) diff --git a/cmd/osbuild-worker/jobimpl-osbuild.go b/cmd/osbuild-worker/jobimpl-osbuild.go index 8cff0e1d3..4dde72ce0 100644 --- a/cmd/osbuild-worker/jobimpl-osbuild.go +++ b/cmd/osbuild-worker/jobimpl-osbuild.go @@ -491,6 +491,9 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error { } extraEnv = append(extraEnv, fmt.Sprintf("OSBUILD_SOURCES_CURL_SSL_CLIENT_KEY=%s", impl.RepositoryMTLSConfig.MTLSClientKey)) extraEnv = append(extraEnv, fmt.Sprintf("OSBUILD_SOURCES_CURL_SSL_CLIENT_CERT=%s", impl.RepositoryMTLSConfig.MTLSClientCert)) + if impl.RepositoryMTLSConfig.Proxy != nil { + extraEnv = append(extraEnv, fmt.Sprintf("OSBUILD_SOURCES_CURL_PROXY=%s", impl.RepositoryMTLSConfig.Proxy.String())) + } } // Run osbuild and handle two kinds of errors diff --git a/cmd/osbuild-worker/main.go b/cmd/osbuild-worker/main.go index 2ae3b3fd2..a4758f9c0 100644 --- a/cmd/osbuild-worker/main.go +++ b/cmd/osbuild-worker/main.go @@ -440,11 +440,21 @@ func main() { if err != nil { logrus.Fatalf("Repository MTL baseurl not valid: %v", err) } + + var proxyURL *url.URL + if config.RepositoryMTLSConfig.Proxy != "" { + proxyURL, err = url.Parse(config.RepositoryMTLSConfig.Proxy) + if err != nil { + logrus.Fatalf("Repository Proxy url not valid: %v", err) + } + } + repositoryMTLSConfig = &RepositoryMTLSConfig{ BaseURL: baseURL, CA: config.RepositoryMTLSConfig.CA, MTLSClientKey: config.RepositoryMTLSConfig.MTLSClientKey, MTLSClientCert: config.RepositoryMTLSConfig.MTLSClientCert, + Proxy: proxyURL, } }