improve: log fields
This commit is contained in:
@@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||||
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/controllers"
|
"github.com/Mmx233/BitSrunLoginGo/internal/controllers"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -13,9 +14,12 @@ func main() {
|
|||||||
|
|
||||||
if config.Settings.Guardian.Enable {
|
if config.Settings.Guardian.Enable {
|
||||||
//进入守护模式
|
//进入守护模式
|
||||||
controllers.Guardian()
|
controllers.Guardian(logger.WithField(keys.LogComponent, "guard"))
|
||||||
} else {
|
} else {
|
||||||
//执行单次流程
|
//执行单次流程
|
||||||
_ = controllers.Login()
|
_ = controllers.Login(controllers.LoginConf{
|
||||||
|
Logger: logger.WithField(keys.LogComponent, "login"),
|
||||||
|
IsOnlineDetectLogDebugLevel: false,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
8
go.mod
8
go.mod
@@ -3,13 +3,13 @@ module github.com/Mmx233/BitSrunLoginGo
|
|||||||
go 1.23.1
|
go 1.23.1
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Mmx233/BackoffCli/backoff v0.0.0-20240924144324-7b288b13d4c6
|
github.com/Mmx233/BackoffCli/backoff v0.0.0-20240925131851-fca176afd6a4
|
||||||
github.com/Mmx233/tool v0.7.8
|
github.com/Mmx233/tool v0.7.8
|
||||||
github.com/antonfisher/nested-logrus-formatter v1.3.1
|
github.com/antonfisher/nested-logrus-formatter v1.3.1
|
||||||
github.com/cloudflare/cloudflare-go v0.104.0
|
github.com/cloudflare/cloudflare-go v0.105.0
|
||||||
github.com/sirupsen/logrus v1.9.3
|
github.com/sirupsen/logrus v1.9.3
|
||||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1009
|
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1010
|
||||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1009
|
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1010
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
16
go.sum
16
go.sum
@@ -1,11 +1,11 @@
|
|||||||
github.com/Mmx233/BackoffCli/backoff v0.0.0-20240924144324-7b288b13d4c6 h1:sfvujwTP5u1qTiJTGzwzGc7/2xdT5qywXyeEImteytE=
|
github.com/Mmx233/BackoffCli/backoff v0.0.0-20240925131851-fca176afd6a4 h1:Jdz0jXMJmvm7am4SNmEvNzuLNJxijI1bwi1zqXs3fE0=
|
||||||
github.com/Mmx233/BackoffCli/backoff v0.0.0-20240924144324-7b288b13d4c6/go.mod h1:lSwJMEvGYQoEyQzvEFI88x+c2PHzp4/1ut2CrzJ3Q2o=
|
github.com/Mmx233/BackoffCli/backoff v0.0.0-20240925131851-fca176afd6a4/go.mod h1:lSwJMEvGYQoEyQzvEFI88x+c2PHzp4/1ut2CrzJ3Q2o=
|
||||||
github.com/Mmx233/tool v0.7.8 h1:SNl1AHhvF3owGDMFGRxWCqFukvySDqAv9IJe8ubWeWg=
|
github.com/Mmx233/tool v0.7.8 h1:SNl1AHhvF3owGDMFGRxWCqFukvySDqAv9IJe8ubWeWg=
|
||||||
github.com/Mmx233/tool v0.7.8/go.mod h1:tEQN6qc2s/sOJKcxr06SktzZ2fCuwdOs0fK01UTfe4Q=
|
github.com/Mmx233/tool v0.7.8/go.mod h1:tEQN6qc2s/sOJKcxr06SktzZ2fCuwdOs0fK01UTfe4Q=
|
||||||
github.com/antonfisher/nested-logrus-formatter v1.3.1 h1:NFJIr+pzwv5QLHTPyKz9UMEoHck02Q9L0FP13b/xSbQ=
|
github.com/antonfisher/nested-logrus-formatter v1.3.1 h1:NFJIr+pzwv5QLHTPyKz9UMEoHck02Q9L0FP13b/xSbQ=
|
||||||
github.com/antonfisher/nested-logrus-formatter v1.3.1/go.mod h1:6WTfyWFkBc9+zyBaKIqRrg/KwMqBbodBjgbHjDz7zjA=
|
github.com/antonfisher/nested-logrus-formatter v1.3.1/go.mod h1:6WTfyWFkBc9+zyBaKIqRrg/KwMqBbodBjgbHjDz7zjA=
|
||||||
github.com/cloudflare/cloudflare-go v0.104.0 h1:R/lB0dZupaZbOgibAH/BRrkFbZ6Acn/WsKg2iX2xXuY=
|
github.com/cloudflare/cloudflare-go v0.105.0 h1:yu2IatITLZ4dw7/byzRrlE5DfUvtub0k9CHZ5zBlj90=
|
||||||
github.com/cloudflare/cloudflare-go v0.104.0/go.mod h1:pfUQ4PIG4ISI0/Mmc21Bp86UnFU0ktmPf3iTgbSL+cM=
|
github.com/cloudflare/cloudflare-go v0.105.0/go.mod h1:pfUQ4PIG4ISI0/Mmc21Bp86UnFU0ktmPf3iTgbSL+cM=
|
||||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
@@ -32,10 +32,10 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
|
|||||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
|
||||||
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1009 h1:nlftpuG6a8AOnvzYikn1i4vsZLgL20RMXphyVVS5GTQ=
|
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1010 h1:HwhKTg+VcQd5M9AyaEZaqKmpKuWxbf5kni23g1KRmOk=
|
||||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1009/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
|
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.1010/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0=
|
||||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1009 h1:a0wClE2xM+ltINDr46gQU0LkdJsxPo4m6xXJUJJ9pCE=
|
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1010 h1:tjRPlgu12YmtpMnaCU/3SbU+xorvsFmY2giuOsCXCrM=
|
||||||
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1009/go.mod h1:tItxq45pTgKkiNh5xHoKF0lsPuUA948lxPdb4s/fWz8=
|
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.1010/go.mod h1:QwZGGCWSUxjtrrbseqSSIMMsAj6Iyubyq3BpgigmXTY=
|
||||||
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
|
golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo=
|
||||||
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
|
golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0=
|
||||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package config
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Mmx233/BackoffCli/backoff"
|
"github.com/Mmx233/BackoffCli/backoff"
|
||||||
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -10,7 +11,7 @@ var BackoffConfig backoff.Conf
|
|||||||
func initBackoff() {
|
func initBackoff() {
|
||||||
setting := Settings.Backoff
|
setting := Settings.Backoff
|
||||||
BackoffConfig = backoff.Conf{
|
BackoffConfig = backoff.Conf{
|
||||||
Logger: Logger,
|
Logger: Logger.WithField(keys.LogComponent, "backoff"),
|
||||||
DisableRecovery: true,
|
DisableRecovery: true,
|
||||||
InitialDuration: time.Duration(setting.InitialDuration) * time.Second,
|
InitialDuration: time.Duration(setting.InitialDuration) * time.Second,
|
||||||
MaxDuration: time.Duration(setting.MaxDuration) * time.Second,
|
MaxDuration: time.Duration(setting.MaxDuration) * time.Second,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package config
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
|
||||||
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
|
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
|
||||||
"github.com/Mmx233/tool"
|
"github.com/Mmx233/tool"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
@@ -24,33 +25,34 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
logger := log.New().WithField(keys.LogComponent, "init")
|
||||||
reader := newReaderFromPath(flags.Path)
|
reader := newReaderFromPath(flags.Path)
|
||||||
|
|
||||||
// 生成配置文件
|
// 生成配置文件
|
||||||
exist, err := tool.File.Exists(flags.Path)
|
exist, err := tool.File.Exists(flags.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln("[init] 读取配置文件失败:", err)
|
logger.Fatalln("读取配置文件失败:", err)
|
||||||
} else if !exist {
|
} else if !exist {
|
||||||
var data []byte
|
var data []byte
|
||||||
data, err = reader.Marshal(&defaultConfig)
|
data, err = reader.Marshal(&defaultConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln("[init] 生成配置文件失败:", err)
|
logger.Fatalln("生成配置文件失败:", err)
|
||||||
}
|
}
|
||||||
if err = os.WriteFile(flags.Path, data, 0600); err != nil {
|
if err = os.WriteFile(flags.Path, data, 0600); err != nil {
|
||||||
log.Fatalln("[init] 写入配置文件失败:", err)
|
logger.Fatalln("写入配置文件失败:", err)
|
||||||
}
|
}
|
||||||
log.Infoln("[init] 已生成配置文件,请编辑 '" + flags.Path + "' 然后重试")
|
logger.Infoln("已生成配置文件,请编辑 '" + flags.Path + "' 然后重试")
|
||||||
os.Exit(0)
|
os.Exit(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 读取配置文件
|
// 读取配置文件
|
||||||
data, err := os.ReadFile(flags.Path)
|
data, err := os.ReadFile(flags.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalln("[init] 读取配置失败:", err)
|
logger.Fatalln("读取配置失败:", err)
|
||||||
}
|
}
|
||||||
var fileConf ConfFromFile
|
var fileConf ConfFromFile
|
||||||
if err = reader.Unmarshal(data, &fileConf); err != nil {
|
if err = reader.Unmarshal(data, &fileConf); err != nil {
|
||||||
log.Fatalln("[init] 解析配置失败:", err)
|
logger.Fatalln("解析配置失败:", err)
|
||||||
}
|
}
|
||||||
Form = &fileConf.Form
|
Form = &fileConf.Form
|
||||||
Meta = &fileConf.Meta
|
Meta = &fileConf.Meta
|
||||||
|
|||||||
6
internal/config/keys/log.go
Normal file
6
internal/config/keys/log.go
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package keys
|
||||||
|
|
||||||
|
const (
|
||||||
|
LogComponent = "comp"
|
||||||
|
LogLoginModule = "mod"
|
||||||
|
)
|
||||||
@@ -45,7 +45,6 @@ func initLog() {
|
|||||||
|
|
||||||
//设置输出格式
|
//设置输出格式
|
||||||
Logger.SetFormatter(&nested.Formatter{
|
Logger.SetFormatter(&nested.Formatter{
|
||||||
HideKeys: true,
|
|
||||||
NoColors: Settings.Log.WriteFile,
|
NoColors: Settings.Log.WriteFile,
|
||||||
TimestampFormat: "2006-01-02 15:04:05",
|
TimestampFormat: "2006-01-02 15:04:05",
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -2,19 +2,19 @@ package controllers
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||||
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Guardian 守护模式逻辑
|
// Guardian 守护模式逻辑
|
||||||
func Guardian() {
|
func Guardian(logger log.FieldLogger) {
|
||||||
logger := config.Logger
|
|
||||||
|
|
||||||
logger.Infoln("[守护模式]")
|
|
||||||
|
|
||||||
GuardianDuration := time.Duration(config.Settings.Guardian.Duration) * time.Second
|
GuardianDuration := time.Duration(config.Settings.Guardian.Duration) * time.Second
|
||||||
|
|
||||||
for {
|
for {
|
||||||
_ = Login()
|
_ = Login(LoginConf{
|
||||||
|
Logger: logger.WithField(keys.LogComponent, "login"),
|
||||||
|
IsOnlineDetectLogDebugLevel: true,
|
||||||
|
})
|
||||||
time.Sleep(GuardianDuration)
|
time.Sleep(GuardianDuration)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,12 @@ import (
|
|||||||
"github.com/Mmx233/BackoffCli/backoff"
|
"github.com/Mmx233/BackoffCli/backoff"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
|
||||||
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/pkg/dns"
|
"github.com/Mmx233/BitSrunLoginGo/internal/pkg/dns"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/pkg/http_client"
|
"github.com/Mmx233/BitSrunLoginGo/internal/pkg/http_client"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
|
"github.com/Mmx233/BitSrunLoginGo/pkg/srun"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/tools"
|
"github.com/Mmx233/BitSrunLoginGo/tools"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
"net/http"
|
"net/http"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
@@ -18,10 +20,18 @@ import (
|
|||||||
var ipLast string
|
var ipLast string
|
||||||
var debugTip sync.Once
|
var debugTip sync.Once
|
||||||
|
|
||||||
func Login() error {
|
type LoginConf struct {
|
||||||
logger := config.Logger
|
Logger log.FieldLogger
|
||||||
|
IsOnlineDetectLogDebugLevel bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func Login(conf LoginConf) error {
|
||||||
|
logger := conf.Logger
|
||||||
if config.Settings.Basic.Interfaces == "" { //单网卡
|
if config.Settings.Basic.Interfaces == "" { //单网卡
|
||||||
err := LoginSingle(nil, true)
|
err := LoginSingle(LoginSingleConf{
|
||||||
|
LoginConf: conf,
|
||||||
|
Eth: nil,
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Errorln("登录出错: ", err)
|
logger.Errorln("登录出错: ", err)
|
||||||
debugTip.Do(func() {
|
debugTip.Do(func() {
|
||||||
@@ -32,13 +42,13 @@ func Login() error {
|
|||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
} else { //多网卡
|
} else { //多网卡
|
||||||
return LoginInterfaces()
|
return LoginInterfaces(conf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ddns(ip string, httpClient *http.Client) error {
|
func ddns(logger log.FieldLogger, ip string, httpClient *http.Client) error {
|
||||||
return dns.Run(&dns.Config{
|
return dns.Run(&dns.Config{
|
||||||
Logger: config.Logger,
|
Logger: logger.WithField(keys.LogLoginModule, "ddns"),
|
||||||
Provider: config.Settings.DDNS.Provider,
|
Provider: config.Settings.DDNS.Provider,
|
||||||
IP: ip,
|
IP: ip,
|
||||||
Domain: config.Settings.DDNS.Domain,
|
Domain: config.Settings.DDNS.Domain,
|
||||||
@@ -48,8 +58,8 @@ func ddns(ip string, httpClient *http.Client) error {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoginInterfaces() error {
|
func LoginInterfaces(conf LoginConf) error {
|
||||||
logger := config.Logger
|
logger := conf.Logger
|
||||||
interfaces, err := tools.GetInterfaceAddr(logger, config.Settings.Basic.Interfaces)
|
interfaces, err := tools.GetInterfaceAddr(logger, config.Settings.Basic.Interfaces)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@@ -58,8 +68,11 @@ func LoginInterfaces() error {
|
|||||||
var errCount int
|
var errCount int
|
||||||
for i, eth := range interfaces {
|
for i, eth := range interfaces {
|
||||||
logger.Infoln("使用网卡: ", eth.Name)
|
logger.Infoln("使用网卡: ", eth.Name)
|
||||||
if err := LoginSingle(ð, false); err != nil {
|
if err := LoginSingle(LoginSingleConf{
|
||||||
config.Logger.Errorf("网卡 %s 登录出错: %v", eth.Name, err)
|
LoginConf: conf,
|
||||||
|
Eth: ð,
|
||||||
|
}); err != nil {
|
||||||
|
logger.Errorf("网卡 %s 登录出错: %v", eth.Name, err)
|
||||||
errCount++
|
errCount++
|
||||||
}
|
}
|
||||||
if i != len(interfaces)-1 {
|
if i != len(interfaces)-1 {
|
||||||
@@ -72,21 +85,26 @@ func LoginInterfaces() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoginSingle(eth *tools.Eth, debugOutput bool) error {
|
type LoginSingleConf struct {
|
||||||
|
LoginConf
|
||||||
|
Eth *tools.Eth
|
||||||
|
}
|
||||||
|
|
||||||
|
func LoginSingle(conf LoginSingleConf) error {
|
||||||
if config.Settings.Backoff.Enable {
|
if config.Settings.Backoff.Enable {
|
||||||
return backoff.NewInstance(func(ctx context.Context) error {
|
return backoff.NewInstance(func(ctx context.Context) error {
|
||||||
return doLogin(eth, debugOutput)
|
return doLogin(conf)
|
||||||
}, config.BackoffConfig).Run(context.TODO())
|
}, config.BackoffConfig).Run(context.TODO())
|
||||||
} else {
|
} else {
|
||||||
return doLogin(eth, debugOutput)
|
return doLogin(conf)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func doLogin(eth *tools.Eth, debugOutput bool) error {
|
func doLogin(conf LoginSingleConf) error {
|
||||||
logger := config.Logger
|
logger := conf.Logger
|
||||||
|
|
||||||
// 登录配置初始化
|
// 登录配置初始化
|
||||||
httpClient := http_client.HttpPackSelect(eth).Client
|
httpClient := http_client.HttpPackSelect(conf.Eth).Client
|
||||||
srunClient := srun.New(&srun.Conf{
|
srunClient := srun.New(&srun.Conf{
|
||||||
Logger: logger,
|
Logger: logger,
|
||||||
Https: config.Settings.Basic.Https,
|
Https: config.Settings.Basic.Https,
|
||||||
@@ -103,6 +121,8 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
|||||||
// Reality 与 Acid
|
// Reality 与 Acid
|
||||||
var acidOnReality bool
|
var acidOnReality bool
|
||||||
if config.Settings.Reality.Enable {
|
if config.Settings.Reality.Enable {
|
||||||
|
logger := logger.WithField(keys.LogLoginModule, "reality")
|
||||||
|
|
||||||
logger.Debugln("开始 Reality 流程")
|
logger.Debugln("开始 Reality 流程")
|
||||||
acid, _, err := srunDetector.Reality(config.Settings.Reality.Addr, flags.AutoAcid)
|
acid, _, err := srunDetector.Reality(config.Settings.Reality.Addr, flags.AutoAcid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -114,13 +134,15 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !acidOnReality && flags.AutoAcid {
|
if !acidOnReality && flags.AutoAcid {
|
||||||
logger.Debugln("开始嗅探 acid")
|
logger := logger.WithField(keys.LogLoginModule, "acid")
|
||||||
|
|
||||||
|
logger.Debugln("开始嗅探")
|
||||||
acid, err := srunDetector.DetectAcid()
|
acid, err := srunDetector.DetectAcid()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, srun.ErrAcidCannotFound) {
|
if errors.Is(err, srun.ErrAcidCannotFound) {
|
||||||
logger.Warnln("找不到 acid,使用配置 acid")
|
logger.Warnln("找不到 acid,使用配置 acid")
|
||||||
} else {
|
} else {
|
||||||
logger.Warnf("嗅探 acid 失败,使用配置 acid: %v", err)
|
logger.Warnf("嗅探失败,使用配置 acid: %v", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.Debugf("使用嗅探 acid: %s", acid)
|
logger.Debugf("使用嗅探 acid: %s", acid)
|
||||||
@@ -129,13 +151,15 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if flags.AutoEnc {
|
if flags.AutoEnc {
|
||||||
logger.Debugln("开始嗅探 enc")
|
logger := logger.WithField(keys.LogLoginModule, "enc")
|
||||||
|
|
||||||
|
logger.Debugln("开始嗅探")
|
||||||
enc, err := srunDetector.DetectEnc()
|
enc, err := srunDetector.DetectEnc()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, srun.ErrEnvCannotFound) {
|
if errors.Is(err, srun.ErrEnvCannotFound) {
|
||||||
logger.Warnln("找不到 enc,使用配置 enc")
|
logger.Warnln("找不到 enc,使用配置 enc")
|
||||||
} else {
|
} else {
|
||||||
logger.Warnf("嗅探 enc 失败,使用配置 enc: %v", err)
|
logger.Warnf("嗅探失败,使用配置 enc: %v", err)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logger.Debugf("使用嗅探 enc: %s", enc)
|
logger.Debugf("使用嗅探 enc: %s", enc)
|
||||||
@@ -144,14 +168,14 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 选择输出函数
|
// 选择输出函数
|
||||||
var output func(args ...interface{})
|
var _Println func(args ...interface{})
|
||||||
if debugOutput {
|
if conf.IsOnlineDetectLogDebugLevel {
|
||||||
output = logger.Debugln
|
_Println = logger.Debugln
|
||||||
} else {
|
} else {
|
||||||
output = logger.Infoln
|
_Println = logger.Infoln
|
||||||
}
|
}
|
||||||
|
|
||||||
output("正在获取登录状态")
|
_Println("正在获取登录状态")
|
||||||
|
|
||||||
online, ip, err := srunClient.LoginStatus()
|
online, ip, err := srunClient.LoginStatus()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -170,10 +194,10 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
|||||||
// 登录执行
|
// 登录执行
|
||||||
|
|
||||||
if online {
|
if online {
|
||||||
output("已登录~")
|
_Println("已登录~")
|
||||||
|
|
||||||
if config.Settings.DDNS.Enable && config.Settings.Guardian.Enable && ipLast != ip {
|
if config.Settings.DDNS.Enable && config.Settings.Guardian.Enable && ipLast != ip {
|
||||||
if ddns(ip, httpClient) == nil {
|
if ddns(logger, ip, httpClient) == nil {
|
||||||
ipLast = ip
|
ipLast = ip
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -189,7 +213,7 @@ func doLogin(eth *tools.Eth, debugOutput bool) error {
|
|||||||
logger.Infoln("登录成功~")
|
logger.Infoln("登录成功~")
|
||||||
|
|
||||||
if config.Settings.DDNS.Enable {
|
if config.Settings.DDNS.Enable {
|
||||||
_ = ddns(ip, httpClient)
|
_ = ddns(logger, ip, httpClient)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,5 +17,5 @@ type Config struct {
|
|||||||
TTL uint
|
TTL uint
|
||||||
Conf config.DdnsProviderConfigSum
|
Conf config.DdnsProviderConfigSum
|
||||||
Http *http.Client
|
Http *http.Client
|
||||||
Logger *log.Logger
|
Logger log.FieldLogger
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package http_client
|
|||||||
import (
|
import (
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
"github.com/Mmx233/BitSrunLoginGo/internal/config"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/flags"
|
||||||
|
"github.com/Mmx233/BitSrunLoginGo/internal/config/keys"
|
||||||
"github.com/Mmx233/BitSrunLoginGo/tools"
|
"github.com/Mmx233/BitSrunLoginGo/tools"
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
@@ -17,7 +18,7 @@ var HttpPack *Http
|
|||||||
var httpTools map[string]*Http
|
var httpTools map[string]*Http
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
logger := config.Logger
|
logger := config.Logger.WithField(keys.LogComponent, "init http")
|
||||||
if config.Settings.Basic.Interfaces == "" {
|
if config.Settings.Basic.Interfaces == "" {
|
||||||
var eth *tools.Eth
|
var eth *tools.Eth
|
||||||
if flags.Interface != "" {
|
if flags.Interface != "" {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ type Api struct {
|
|||||||
NoDirect *http.Client
|
NoDirect *http.Client
|
||||||
CustomHeader map[string]interface{}
|
CustomHeader map[string]interface{}
|
||||||
|
|
||||||
Logger *log.Logger
|
Logger log.FieldLogger
|
||||||
}
|
}
|
||||||
|
|
||||||
type ApiConfig struct {
|
type ApiConfig struct {
|
||||||
@@ -28,7 +28,7 @@ type ApiConfig struct {
|
|||||||
Domain string
|
Domain string
|
||||||
Client *http.Client
|
Client *http.Client
|
||||||
CustomHeader map[string]interface{}
|
CustomHeader map[string]interface{}
|
||||||
Logger *log.Logger
|
Logger log.FieldLogger
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Api) Init(conf *ApiConfig) {
|
func (a *Api) Init(conf *ApiConfig) {
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ func (a *Api) NewDetector() *Detector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Detector struct {
|
type Detector struct {
|
||||||
Logger *log.Logger
|
Logger log.FieldLogger
|
||||||
|
|
||||||
api *Api
|
api *Api
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ type Conf struct {
|
|||||||
Client *http.Client
|
Client *http.Client
|
||||||
CustomHeader map[string]interface{}
|
CustomHeader map[string]interface{}
|
||||||
|
|
||||||
Logger *log.Logger
|
Logger log.FieldLogger
|
||||||
}
|
}
|
||||||
|
|
||||||
func New(conf *Conf) *Srun {
|
func New(conf *Conf) *Srun {
|
||||||
@@ -42,7 +42,7 @@ type Srun struct {
|
|||||||
//登录参数,不可缺省
|
//登录参数,不可缺省
|
||||||
LoginInfo LoginInfo
|
LoginInfo LoginInfo
|
||||||
Api Api
|
Api Api
|
||||||
Logger *log.Logger
|
Logger log.FieldLogger
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c Srun) LoginStatus() (online bool, ip string, err error) {
|
func (c Srun) LoginStatus() (online bool, ip string, err error) {
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ type Eth struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ConvertInterface 当没有 ipv4 地址时 eth 可能为 nil
|
// ConvertInterface 当没有 ipv4 地址时 eth 可能为 nil
|
||||||
func ConvertInterface(logger *log.Logger, eth net.Interface) (*Eth, error) {
|
func ConvertInterface(logger log.FieldLogger, eth net.Interface) (*Eth, error) {
|
||||||
addresses, err := eth.Addrs()
|
addresses, err := eth.Addrs()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -35,7 +35,7 @@ func ConvertInterface(logger *log.Logger, eth net.Interface) (*Eth, error) {
|
|||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetInterfaceAddr(logger *log.Logger, regexpStr string) ([]Eth, error) {
|
func GetInterfaceAddr(logger log.FieldLogger, regexpStr string) ([]Eth, error) {
|
||||||
var result []Eth
|
var result []Eth
|
||||||
|
|
||||||
interfaces, err := net.Interfaces()
|
interfaces, err := net.Interfaces()
|
||||||
|
|||||||
Reference in New Issue
Block a user