improve: pass logger instead of using global logger

This commit is contained in:
Mmx
2024-09-24 23:36:09 +08:00
parent e1ff68cfc2
commit 78a1b2662d
15 changed files with 163 additions and 126 deletions

View File

@@ -5,18 +5,21 @@ import (
"github.com/Mmx233/BitSrunLoginGo/internal/config"
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
"github.com/Mmx233/BitSrunLoginGo/internal/pkg/dns"
"github.com/Mmx233/BitSrunLoginGo/internal/pkg/http_client"
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
"github.com/Mmx233/BitSrunLoginGo/tools"
log "github.com/sirupsen/logrus"
"net/http"
)
// Login 登录逻辑
func Login(eth *tools.Eth, debugOutput bool) error {
logger := config.Logger
// 登录配置初始化
httpClient := tools.HttpPackSelect(eth).Client
httpClient := http_client.HttpPackSelect(eth).Client
srunClient := srun.New(&srun.Conf{
Https: config.Settings.Basic.Https,
Logger: logger,
Https: config.Settings.Basic.Https,
LoginInfo: srun.LoginInfo{
Form: *config.Form,
Meta: *config.Meta,
@@ -30,42 +33,42 @@ func Login(eth *tools.Eth, debugOutput bool) error {
// Reality 与 Acid
var acidOnReality bool
if config.Settings.Reality.Enable {
log.Debugln("开始 Reality 流程")
logger.Debugln("开始 Reality 流程")
acid, _, err := srunDetector.Reality(config.Settings.Reality.Addr, flags.AutoAcid)
if err != nil {
log.Warnln("Reality 请求异常:", err)
logger.Warnln("Reality 请求异常:", err)
} else if flags.AutoAcid && acid != "" {
acidOnReality = true
log.Debugf("使用嗅探 acid: %s", acid)
logger.Debugf("使用嗅探 acid: %s", acid)
srunClient.LoginInfo.Meta.Acid = acid
}
}
if !acidOnReality && flags.AutoAcid {
log.Debugln("开始嗅探 acid")
logger.Debugln("开始嗅探 acid")
acid, err := srunDetector.DetectAcid()
if err != nil {
if errors.Is(err, srun.ErrAcidCannotFound) {
log.Warnln("找不到 acid使用配置 acid")
logger.Warnln("找不到 acid使用配置 acid")
} else {
log.Warnf("嗅探 acid 失败,使用配置 acid: %v", err)
logger.Warnf("嗅探 acid 失败,使用配置 acid: %v", err)
}
} else {
log.Debugf("使用嗅探 acid: %s", acid)
logger.Debugf("使用嗅探 acid: %s", acid)
srunClient.LoginInfo.Meta.Acid = acid
}
}
if flags.AutoEnc {
log.Debugln("开始嗅探 enc")
logger.Debugln("开始嗅探 enc")
enc, err := srunDetector.DetectEnc()
if err != nil {
if errors.Is(err, srun.ErrEnvCannotFound) {
log.Warnln("找不到 enc使用配置 enc")
logger.Warnln("找不到 enc使用配置 enc")
} else {
log.Warnf("嗅探 enc 失败,使用配置 enc: %v", err)
logger.Warnf("嗅探 enc 失败,使用配置 enc: %v", err)
}
} else {
log.Debugf("使用嗅探 enc: %s", enc)
logger.Debugf("使用嗅探 enc: %s", enc)
srunClient.LoginInfo.Meta.Enc = enc
}
}
@@ -73,9 +76,9 @@ func Login(eth *tools.Eth, debugOutput bool) error {
// 选择输出函数
var output func(args ...interface{})
if debugOutput {
output = log.Debugln
output = logger.Debugln
} else {
output = log.Infoln
output = logger.Infoln
}
output("正在获取登录状态")
@@ -88,10 +91,10 @@ func Login(eth *tools.Eth, debugOutput bool) error {
var loginIp string
if config.Meta.DoubleStack {
log.Debugln("使用双栈网络时认证 ip 为空")
logger.Debugln("使用双栈网络时认证 ip 为空")
} else {
loginIp = ip
log.Debugln("认证客户端 ip: ", ip)
logger.Debugln("认证客户端 ip: ", ip)
}
// 登录执行
@@ -107,13 +110,13 @@ func Login(eth *tools.Eth, debugOutput bool) error {
return nil
} else {
log.Infoln("检测到用户未登录,开始尝试登录...")
logger.Infoln("检测到用户未登录,开始尝试登录...")
if err = srunClient.DoLogin(loginIp); err != nil {
return err
}
log.Infoln("登录成功~")
logger.Infoln("登录成功~")
if config.Settings.DDNS.Enable {
_ = ddns(ip, httpClient)
@@ -127,6 +130,7 @@ var ipLast string
func ddns(ip string, httpClient *http.Client) error {
return dns.Run(&dns.Config{
Logger: config.Logger,
Provider: config.Settings.DDNS.Provider,
IP: ip,
Domain: config.Settings.DDNS.Domain,