proxy_settings.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package settings
  2. type ProxySettings struct {
  3. UseProxy bool `json:"use_proxy"` // 是否使用代理
  4. UseWhichProxyProtocol string `json:"use_which_proxy_protocol"` // 是使用 socks5 还是 http 代理
  5. LocalHttpProxyServerPort string `json:"local_http_proxy_server_port" default:"19036"` // 本地代理服务器端口
  6. InputProxyAddress string `json:"input_proxy_address"` // 输入的代理地址
  7. InputProxyPort string `json:"input_proxy_port"` // 输入的代理端口
  8. NeedPWD bool `json:"need_pwd"` // 是否使用用户名密码
  9. InputProxyUsername string `json:"input_proxy_username"` // 输入的代理用户名
  10. InputProxyPassword string `json:"input_proxy_password"` // 输入的代理密码
  11. Referer string `json:"-"` // 可能下载文件的时候需要设置
  12. }
  13. func NewProxySettings(useProxy bool, useWhichProxyProtocol string,
  14. localHttpProxyServerPort string,
  15. inputProxyAddress string, inputProxyPort string,
  16. inputProxyUsername string, inputProxyPassword string) *ProxySettings {
  17. set := ProxySettings{UseProxy: useProxy, UseWhichProxyProtocol: useWhichProxyProtocol,
  18. LocalHttpProxyServerPort: localHttpProxyServerPort,
  19. InputProxyAddress: inputProxyAddress, InputProxyPort: inputProxyPort,
  20. InputProxyUsername: inputProxyUsername, InputProxyPassword: inputProxyPassword}
  21. if inputProxyUsername != "" && inputProxyPassword != "" {
  22. set.NeedPWD = true
  23. }
  24. return &set
  25. }
  26. func (p *ProxySettings) CopyOne() *ProxySettings {
  27. nowSettings := NewProxySettings(
  28. p.UseProxy, p.UseWhichProxyProtocol, p.LocalHttpProxyServerPort,
  29. p.InputProxyAddress, p.InputProxyPort,
  30. p.InputProxyUsername, p.InputProxyPassword)
  31. return nowSettings
  32. }
  33. func (p *ProxySettings) GetInfos() (bool, []string, string) {
  34. inputInfo := []string{
  35. p.UseWhichProxyProtocol,
  36. p.InputProxyAddress,
  37. p.InputProxyPort,
  38. }
  39. if p.InputProxyUsername != "" && p.InputProxyPassword != "" {
  40. inputInfo = append(inputInfo, p.InputProxyUsername, p.InputProxyPassword)
  41. }
  42. return p.UseProxy, inputInfo, p.LocalHttpProxyServerPort
  43. }