54 lines
1.5 KiB
Go
54 lines
1.5 KiB
Go
package http_client
|
|
|
|
import (
|
|
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
|
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
|
"github.com/Mmx233/BitSrunLoginGo/tools"
|
|
"net"
|
|
"net/http"
|
|
)
|
|
|
|
var _DefaultClient *http.Client
|
|
|
|
var _EthClientMap map[string]*http.Client
|
|
|
|
func init() {
|
|
logger := config.Logger.WithField(keys.LogComponent, "init http")
|
|
if config.Settings.Basic.Interfaces == "" {
|
|
var eth *tools.Eth
|
|
if flags.Interface != "" {
|
|
netEth, err := net.InterfaceByName(flags.Interface)
|
|
if err != nil {
|
|
logger.Warnf("获取指定网卡 %s 失败,使用默认网卡: %v", flags.Interface, err)
|
|
} else {
|
|
eth, err = tools.ConvertInterface(logger, *netEth)
|
|
if err != nil {
|
|
logger.Warnf("获取指定网卡 %s ip 地址失败,使用默认网卡: %v", flags.Interface, err)
|
|
} else if eth == nil {
|
|
logger.Warnf("指定网卡 %s 无可用 ip 地址,使用默认网卡", flags.Interface)
|
|
} else {
|
|
logger.Debugf("使用指定网卡 %s ip: %s", eth.Name, eth.Addr.String())
|
|
}
|
|
}
|
|
}
|
|
|
|
_DefaultClient = CreateClientFromEth(eth)
|
|
} else {
|
|
_EthClientMap = make(map[string]*http.Client)
|
|
}
|
|
}
|
|
|
|
func ClientSelect(eth *tools.Eth) *http.Client {
|
|
if _DefaultClient != nil {
|
|
return _DefaultClient
|
|
}
|
|
if client, ok := _EthClientMap[eth.Name]; ok {
|
|
return client
|
|
} else {
|
|
client = CreateClientFromEth(eth)
|
|
_EthClientMap[eth.Name] = client
|
|
return client
|
|
}
|
|
}
|