diff --git a/internal/controllers/login.go b/internal/controllers/login.go index 5ba13b3..e108ea6 100644 --- a/internal/controllers/login.go +++ b/internal/controllers/login.go @@ -104,7 +104,7 @@ func doLogin(conf LoginSingleConf) error { logger := conf.Logger // 登录配置初始化 - httpClient := http_client.HttpPackSelect(conf.Eth).Client + httpClient := http_client.ClientSelect(conf.Eth) srunClient := srun.New(&srun.Conf{ Logger: logger, Https: config.Settings.Basic.Https, diff --git a/internal/pkg/http_client/http.go b/internal/pkg/http_client/http.go index 74e89ea..33ca1f2 100644 --- a/internal/pkg/http_client/http.go +++ b/internal/pkg/http_client/http.go @@ -9,13 +9,9 @@ import ( "net/http" ) -type Http struct { - Client *http.Client -} +var _DefaultClient *http.Client -var HttpPack *Http - -var httpTools map[string]*Http +var _EthClientMap map[string]*http.Client func init() { logger := config.Logger.WithField(keys.LogComponent, "init http") @@ -37,21 +33,21 @@ func init() { } } - HttpPack = genHttpPack(eth) + _DefaultClient = CreateClientFromEth(eth) } else { - httpTools = make(map[string]*Http) + _EthClientMap = make(map[string]*http.Client) } } -func HttpPackSelect(eth *tools.Eth) *Http { - if HttpPack != nil { - return HttpPack +func ClientSelect(eth *tools.Eth) *http.Client { + if _DefaultClient != nil { + return _DefaultClient } - if addrHttp, ok := httpTools[eth.Name]; ok { - return addrHttp + if client, ok := _EthClientMap[eth.Name]; ok { + return client } else { - addrHttp = genHttpPack(eth) - httpTools[eth.Name] = addrHttp - return addrHttp + client = CreateClientFromEth(eth) + _EthClientMap[eth.Name] = client + return client } } diff --git a/internal/pkg/http_client/http_default.go b/internal/pkg/http_client/http_default.go index 472f13a..43b99a0 100644 --- a/internal/pkg/http_client/http_default.go +++ b/internal/pkg/http_client/http_default.go @@ -6,30 +6,27 @@ import ( "crypto/tls" "github.com/Mmx233/BitSrunLoginGo/internal/config" "github.com/Mmx233/BitSrunLoginGo/tools" - "github.com/Mmx233/tool" "net" "net/http" ) -func genHttpPack(eth *tools.Eth) *Http { +func CreateClientFromEth(eth *tools.Eth) *http.Client { var addr net.Addr if eth != nil { addr = eth.Addr } - tr := &http.Transport{ - DialContext: (&net.Dialer{ - Timeout: config.Timeout, - LocalAddr: addr, - }).DialContext, - TLSClientConfig: &tls.Config{ - InsecureSkipVerify: config.Settings.Basic.SkipCertVerify, + + return &http.Client{ + Transport: &http.Transport{ + DialContext: (&net.Dialer{ + Timeout: config.Timeout, + LocalAddr: addr, + }).DialContext, + TLSClientConfig: &tls.Config{ + InsecureSkipVerify: config.Settings.Basic.SkipCertVerify, + }, + Proxy: http.ProxyFromEnvironment, }, - Proxy: http.ProxyFromEnvironment, - } - return &Http{ - Client: tool.GenHttpClient(&tool.HttpClientOptions{ - Transport: tr, - Timeout: config.Timeout, - }), + Timeout: config.Timeout, } } diff --git a/internal/pkg/http_client/http_linux.go b/internal/pkg/http_client/http_linux.go index 55e3b04..92148d7 100644 --- a/internal/pkg/http_client/http_linux.go +++ b/internal/pkg/http_client/http_linux.go @@ -4,13 +4,12 @@ import ( "crypto/tls" "github.com/Mmx233/BitSrunLoginGo/internal/config" "github.com/Mmx233/BitSrunLoginGo/tools" - "github.com/Mmx233/tool" "net" "net/http" "syscall" ) -func genHttpPack(eth *tools.Eth) *Http { +func CreateClientFromEth(eth *tools.Eth) *http.Client { dialer := net.Dialer{ Timeout: config.Timeout, } @@ -18,31 +17,28 @@ func genHttpPack(eth *tools.Eth) *Http { dialer.LocalAddr = eth.Addr ethName := eth.Name dialer.Control = func(network string, address string, c syscall.RawConn) error { - var operr error + var opErr error fn := func(fd uintptr) { - operr = syscall.SetsockoptString(int(fd), syscall.SOL_SOCKET, syscall.SO_BINDTODEVICE, ethName) + opErr = syscall.SetsockoptString(int(fd), syscall.SOL_SOCKET, syscall.SO_BINDTODEVICE, ethName) } if err := c.Control(fn); err != nil { return err } - if operr != nil { - return operr + if opErr != nil { + return opErr } return nil } } - tr := &http.Transport{ - DialContext: dialer.DialContext, - TLSHandshakeTimeout: config.Timeout, - IdleConnTimeout: config.Timeout, - TLSClientConfig: &tls.Config{InsecureSkipVerify: config.Settings.Basic.SkipCertVerify}, - } - tr.Proxy = http.ProxyFromEnvironment - return &Http{ - Client: tool.GenHttpClient(&tool.HttpClientOptions{ - Transport: tr, - Timeout: config.Timeout, - }), + return &http.Client{ + Transport: &http.Transport{ + DialContext: dialer.DialContext, + TLSHandshakeTimeout: config.Timeout, + IdleConnTimeout: config.Timeout, + TLSClientConfig: &tls.Config{InsecureSkipVerify: config.Settings.Basic.SkipCertVerify}, + Proxy: http.ProxyFromEnvironment, + }, + Timeout: config.Timeout, } }