MCPcopy Create free account
hub / github.com/chainreactors/EvilProxy / Parse

Function Parse

sdk/proxyutil/proxy.go:39–72  ·  view source on GitHub ↗

Parse normalizes a proxy configuration value into inherit, direct, or proxy modes.

(raw string)

Source from the content-addressed store, hash-verified

37
38// Parse normalizes a proxy configuration value into inherit, direct, or proxy modes.
39func Parse(raw string) (Setting, error) {
40 trimmed := strings.TrimSpace(raw)
41 setting := Setting{Raw: trimmed}
42
43 if trimmed == "" {
44 setting.Mode = ModeInherit
45 return setting, nil
46 }
47
48 if strings.EqualFold(trimmed, "direct") || strings.EqualFold(trimmed, "none") {
49 setting.Mode = ModeDirect
50 return setting, nil
51 }
52
53 parsedURL, errParse := url.Parse(trimmed)
54 if errParse != nil {
55 setting.Mode = ModeInvalid
56 return setting, fmt.Errorf("parse proxy URL failed")
57 }
58 if parsedURL.Scheme == "" || parsedURL.Host == "" {
59 setting.Mode = ModeInvalid
60 return setting, fmt.Errorf("proxy URL missing scheme/host")
61 }
62
63 switch parsedURL.Scheme {
64 case "socks5", "socks5h", "http", "https":
65 setting.Mode = ModeProxy
66 setting.URL = parsedURL
67 return setting, nil
68 default:
69 setting.Mode = ModeInvalid
70 return setting, fmt.Errorf("unsupported proxy scheme: %s", parsedURL.Scheme)
71 }
72}
73
74func cloneDefaultTransport() *http.Transport {
75 if transport, ok := http.DefaultTransport.(*http.Transport); ok && transport != nil {

Callers 5

BuildHTTPTransportFunction · 0.85
BuildDialerFunction · 0.85
TestParseFunction · 0.85

Calls

no outgoing calls

Tested by 2

TestParseFunction · 0.68