// GetProxySettings is defined on the PackageManager interface. func (apt *apt) GetProxySettings() (proxy.Settings, error) { var res proxy.Settings args := strings.Fields(apt.cmder.GetProxyCmd()) if len(args) <= 1 { return proxy.Settings{}, fmt.Errorf("expected at least 2 arguments, got %d %v", len(args), args) } cmd := exec.Command(args[0], args[1:]...) out, err := CommandOutput(cmd) if err != nil { logger.Errorf("command failed: %v\nargs: %#v\n%s", err, args, string(out)) return res, fmt.Errorf("command failed: %v", err) } output := string(bytes.Join(proxyRE.FindAll(out, -1), []byte("\n"))) for _, match := range proxyRE.FindAllStringSubmatch(output, -1) { switch match[1] { case "http": res.Http = match[2] case "https": res.Https = match[2] case "ftp": res.Ftp = match[2] } } return res, nil }
// GetProxySettings is defined on the PackageManager interface. func (yum *yum) GetProxySettings() (proxy.Settings, error) { var res proxy.Settings args := strings.Fields(yum.cmder.GetProxyCmd()) if len(args) <= 1 { return proxy.Settings{}, fmt.Errorf("expected at least 2 arguments, got %d %v", len(args), args) } cmd := exec.Command(args[0], args[1:]...) out, err := CommandOutput(cmd) if err != nil { logger.Errorf("command failed: %v\nargs: %#v\n%s", err, args, string(out)) return res, fmt.Errorf("command failed: %v", err) } for _, match := range strings.Split(string(out), "\n") { fields := strings.Split(match, "=") if len(fields) != 2 { continue } if strings.HasPrefix(fields[0], "https") { res.Https = strings.TrimSpace(fields[1]) } else if strings.HasPrefix(fields[0], "http") { res.Http = strings.TrimSpace(fields[1]) } else if strings.HasPrefix(fields[0], "ftp") { res.Ftp = strings.TrimSpace(fields[1]) } } return res, nil }