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") )