()
| 75 | } |
| 76 | |
| 77 | func (s *ScanSession) createProxyConfig() *proxy.ProxyConfig { |
| 78 | cfg := proxy.DefaultProxyConfig() |
| 79 | cfg.Timeout = s.Config.Timeout |
| 80 | cfg.LocalAddr = s.Config.Network.Iface |
| 81 | |
| 82 | // 优先 SOCKS5 |
| 83 | if s.Config.Network.Socks5Proxy != "" { |
| 84 | cfg.Type = proxy.ProxyTypeSOCKS5 |
| 85 | socks5URL := s.Config.Network.Socks5Proxy |
| 86 | if !strings.HasPrefix(socks5URL, "socks5://") { |
| 87 | socks5URL = "socks5://" + socks5URL |
| 88 | } |
| 89 | cfg.Address, cfg.Username, cfg.Password = parseProxyURL(socks5URL, s.Config.Network.Socks5Proxy) |
| 90 | return cfg |
| 91 | } |
| 92 | |
| 93 | // 其次 HTTP |
| 94 | if s.Config.Network.HTTPProxy != "" { |
| 95 | if strings.HasPrefix(s.Config.Network.HTTPProxy, "https://") { |
| 96 | cfg.Type = proxy.ProxyTypeHTTPS |
| 97 | } else { |
| 98 | cfg.Type = proxy.ProxyTypeHTTP |
| 99 | } |
| 100 | cfg.Address, cfg.Username, cfg.Password = parseProxyURL(s.Config.Network.HTTPProxy, s.Config.Network.HTTPProxy) |
| 101 | return cfg |
| 102 | } |
| 103 | |
| 104 | cfg.Type = proxy.ProxyTypeNone |
| 105 | return cfg |
| 106 | } |
no test coverage detected