From 53f813c230983b8161d58ece8df16dda8e0819ae Mon Sep 17 00:00:00 2001 From: Mmx233 Date: Wed, 2 Mar 2022 23:06:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=9B=B4=E5=A4=9Adeb?= =?UTF-8?q?ug=E6=97=A5=E5=BF=97=E3=80=81checker=20url=E5=8F=AF=E6=8E=A7?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/guardian.go | 1 + controllers/login.go | 11 ++++++----- global/config.go | 12 +++++++----- models/config.go | 1 + util/checker.go | 20 +++++++++++++++++--- util/log.go | 2 +- v1/login.go | 7 ++++++- v1/transfer/login.go | 3 ++- 8 files changed, 41 insertions(+), 16 deletions(-) diff --git a/controllers/guardian.go b/controllers/guardian.go index d8678e2..eb969e3 100644 --- a/controllers/guardian.go +++ b/controllers/guardian.go @@ -13,6 +13,7 @@ import ( func Guardian(output bool) { util.Log.OutPut = output GuardianDuration := time.Duration(global.Config.Settings.Guardian.Duration) * time.Second + util.Checker.SetUrl(global.Config.Settings.Basic.NetCheckUrl) if global.Config.Settings.Daemon.Enable { go Daemon.DaemonChan() diff --git a/controllers/login.go b/controllers/login.go index c498051..c0a1bd8 100644 --- a/controllers/login.go +++ b/controllers/login.go @@ -10,11 +10,12 @@ import ( // Login 登录逻辑 func Login(output bool, skipCheck bool, localAddr net.Addr) error { return BitSrun.Login(&srunTransfer.Login{ - Https: global.Config.Settings.Basic.Https, - Debug: global.Config.Settings.Debug.Enable, - WriteLog: global.Config.Settings.Debug.WriteLog, - OutPut: output, - CheckNet: !skipCheck, + Https: global.Config.Settings.Basic.Https, + Debug: global.Config.Settings.Debug.Enable, + WriteLog: global.Config.Settings.Debug.WriteLog, + OutPut: output, + CheckNet: !skipCheck, + CheckNetUrl: global.Config.Settings.Basic.NetCheckUrl, LoginInfo: srunTransfer.LoginInfo{ Form: &global.Config.Form, Meta: &global.Config.Meta, diff --git a/global/config.go b/global/config.go index 758ff53..2e3f5d4 100644 --- a/global/config.go +++ b/global/config.go @@ -28,7 +28,8 @@ func readConfig() error { }) viper.SetDefault("settings", srunModels.Settings{ Basic: srunModels.Basic{ - Timeout: 5, + Timeout: 5, + NetCheckUrl: "https://www.baidu.com/", }, Daemon: srunModels.Daemon{ Path: ".autoLogin", @@ -45,21 +46,21 @@ func readConfig() error { if !tool.File.Exists(Flags.Path) { e := viper.WriteConfigAs(Flags.Path) if e != nil { - log.Println("生成配置文件失败:", e) + log.Println("[init] 生成配置文件失败:", e) return e } - log.Println("已生成配置文件,请编辑 '" + Flags.Path + "' 然后重试") + log.Println("[init] 已生成配置文件,请编辑 '" + Flags.Path + "' 然后重试") os.Exit(0) } //读取配置文件 viper.SetConfigFile(Flags.Path) if e := viper.ReadInConfig(); e != nil { - log.Println("读取配置文件失败:", e) + log.Println("[init] 读取配置文件失败:", e) return e } if e := viper.Unmarshal(&Config); e != nil { - log.Println("解析配置文件失败:", e) + log.Println("[init] 解析配置文件失败:", e) return e } @@ -74,6 +75,7 @@ func init() { os.Exit(1) } + //初始化常变量 Timeout = time.Duration(Config.Settings.Basic.Timeout) * time.Second initTransport() } diff --git a/models/config.go b/models/config.go index 21f641f..f951807 100644 --- a/models/config.go +++ b/models/config.go @@ -18,6 +18,7 @@ type Basic struct { Timeout uint `json:"timeout" yaml:"timeout" mapstructure:"timeout"` Interfaces string `json:"interfaces" yaml:"interfaces" mapstructure:"interfaces"` SkipNetCheck bool `json:"skip_net_check" yaml:"skip_net_check" mapstructure:"skip_net_check"` + NetCheckUrl string `json:"net_check_url" yaml:"net_check_url" mapstructure:"net_check_url"` } type Settings struct { diff --git a/util/checker.go b/util/checker.go index 624e204..8a5faa2 100644 --- a/util/checker.go +++ b/util/checker.go @@ -5,14 +5,28 @@ import ( "net/http" ) -type checker struct{} +type checker struct { + url string + set bool +} -var Checker checker +var Checker = checker{ + url: "https://www.baidu.com/", +} + +func (a *checker) SetUrl(url string) { + if a.set { + return + } + a.url = url + a.set = true +} // NetOk 网络状况检查 func (a *checker) NetOk(transport *http.Transport) bool { + Log.Debug("GET ", a.url) res, e := tool.HTTP.GetReader(&tool.GetRequest{ - Url: "https://www.baidu.com/", + Url: a.url, Redirect: false, Transport: transport, }) diff --git a/util/log.go b/util/log.go index d8f943e..bfd849b 100644 --- a/util/log.go +++ b/util/log.go @@ -26,7 +26,7 @@ func (c *loG) Init(debug, logFile, outPut bool, path string) error { c.timeStamp = time.Now().Format("2006.01.02-15.04.05") //日志路径初始化与处理 - if c.DebugMode { + if c.DebugMode && c.WriteFile { if !strings.HasSuffix(path, "/") { path += "/" } diff --git a/v1/login.go b/v1/login.go index 19ca19c..b6e9e63 100644 --- a/v1/login.go +++ b/v1/login.go @@ -16,6 +16,9 @@ func Login(c *srunTransfer.Login) error { G := util.GenerateLoginInfo(c.Https, c.LoginInfo.Form, c.LoginInfo.Meta) if c.CheckNet { + if c.CheckNetUrl != "" { + util.Checker.SetUrl(c.CheckNetUrl) + } util.Log.Info("Step0: 检查状态…") if util.Checker.NetOk(c.Transport) { util.Log.Info("网络 ok") @@ -35,9 +38,10 @@ func Login(c *srunTransfer.Login) error { } else if G.Ip, e = util.GetIp(body); e != nil { return e } + util.Log.Debug("ip: ", G.Ip) } - util.Log.Info("Step2: 正在获取Token") + util.Log.Info("Step2: 正在获取token") { util.Log.Debug("GET ", G.UrlGetChallengeApi) if _, data, e := tool.HTTP.GetString(&tool.GetRequest{ @@ -54,6 +58,7 @@ func Login(c *srunTransfer.Login) error { } else if G.Token, e = util.GetToken(data); e != nil { return e } + util.Log.Debug("token: ", G.Token) } util.Log.Info("Step3: 执行登录…") diff --git a/v1/transfer/login.go b/v1/transfer/login.go index 211aea2..7a63144 100644 --- a/v1/transfer/login.go +++ b/v1/transfer/login.go @@ -31,7 +31,8 @@ type Login struct { //控制台日志打印开关 OutPut bool //登陆前是否检查网络,只在离线时登录 - CheckNet bool + CheckNet bool + CheckNetUrl string //登录参数,不可缺省 LoginInfo LoginInfo Transport *http.Transport