From 9bc2beef756ca1f1ce03534a39c3448f1c5ed776 Mon Sep 17 00:00:00 2001 From: Mmx233 Date: Sun, 4 Jun 2023 21:02:14 +0800 Subject: [PATCH] =?UTF-8?q?improve:=20=E7=AE=80=E5=8C=96=E5=97=85=E6=8E=A2?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- internal/controllers/login.go | 8 +++++--- pkg/srun/api.go | 18 ++++++++++++------ pkg/srun/errors.go | 1 + 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index c3c3463..26f8de6 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ /*.log /autoLogin* /BitSrunLoginGo* -/build \ No newline at end of file +/build +/main* \ No newline at end of file diff --git a/internal/controllers/login.go b/internal/controllers/login.go index 3e385bc..0586e65 100644 --- a/internal/controllers/login.go +++ b/internal/controllers/login.go @@ -27,9 +27,11 @@ func Login(eth *tools.Eth, debugOutput bool) error { log.Debugln("开始嗅探 acid") acid, e := srunClient.DetectAcid() if e != nil { - log.Errorf("嗅探 acid 失败,使用配置 acid: %v", e) - } else if acid == "" { - log.Errorln("找不到 acid,使用配置 acid") + if e == srun.ErrAcidCannotFound { + log.Errorln("找不到 acid,使用配置 acid") + } else { + log.Errorf("嗅探 acid 失败,使用配置 acid: %v", e) + } } else { log.Debugf("使用嗅探 acid: %s", acid) srunClient.LoginInfo.Meta.Acid = acid diff --git a/pkg/srun/api.go b/pkg/srun/api.go index c8dd91e..ff5b210 100644 --- a/pkg/srun/api.go +++ b/pkg/srun/api.go @@ -79,7 +79,6 @@ func (a *Api) GetUserInfo() (map[string]interface{}, error) { return a.request("cgi-bin/rad_user_info", nil) } -// DetectAcid error 为 nil 的情况下 acid 可能为空 func (a *Api) DetectAcid() (string, error) { addr := a.BaseUrl for { @@ -96,15 +95,22 @@ func (a *Api) DetectAcid() (string, error) { } else { addr = loc } + + var u *url.URL + u, e = url.Parse(addr) + if e != nil { + return "", e + } + acid := u.Query().Get(`ac_id`) + if acid != "" { + return acid, nil + } + continue } break } - u, e := url.Parse(addr) - if e != nil { - return "", e - } - return u.Query().Get(`ac_id`), e + return "", ErrAcidCannotFound } func (a *Api) Login( diff --git a/pkg/srun/errors.go b/pkg/srun/errors.go index 77df90c..3f227ab 100644 --- a/pkg/srun/errors.go +++ b/pkg/srun/errors.go @@ -4,4 +4,5 @@ import "errors" var ( ErrResultCannotFound = errors.New("result cannot found from response") + ErrAcidCannotFound = errors.New("acid not found") )