|
@@ -18,12 +18,15 @@ import (
|
|
|
)
|
|
|
|
|
|
type sussBi struct {
|
|
|
- addr string
|
|
|
- user string
|
|
|
- pwd string
|
|
|
- Url *url.URL
|
|
|
- jar *cookiejar.Jar
|
|
|
- prm *ParamReplaceManager
|
|
|
+ addr string
|
|
|
+ loginAddr string
|
|
|
+ user string
|
|
|
+ pwd string
|
|
|
+ Url *url.URL
|
|
|
+ cookiePath string
|
|
|
+ jar *cookiejar.Jar
|
|
|
+ succbiJar *cookiejar.Jar
|
|
|
+ prm *ParamReplaceManager
|
|
|
}
|
|
|
|
|
|
//参数替换
|
|
@@ -46,6 +49,8 @@ func InitSussBi(config map[string]interface{}) (*sussBi, error) {
|
|
|
user := gconv.String(config["user"])
|
|
|
password := gconv.String(config["password"])
|
|
|
paramReplace := gconv.Map(config["paramReplace"])
|
|
|
+ cookiePath := gconv.String(config["cookiePath"])
|
|
|
+ loginAddr := gconv.String(config["loginAddr"])
|
|
|
if address == "" {
|
|
|
return nil, fmt.Errorf("配置异常")
|
|
|
}
|
|
@@ -55,6 +60,12 @@ func InitSussBi(config map[string]interface{}) (*sussBi, error) {
|
|
|
if err != nil {
|
|
|
return nil, fmt.Errorf("初始化cookie异常")
|
|
|
}
|
|
|
+ sussCookie2, err2 := cookiejar.New(&cookiejar.Options{
|
|
|
+ PublicSuffixList: publicsuffix.List,
|
|
|
+ })
|
|
|
+ if err2 != nil {
|
|
|
+ return nil, fmt.Errorf("初始化cookie异常")
|
|
|
+ }
|
|
|
prManager := &ParamReplaceManager{
|
|
|
eqRouters: map[string]*ParamReplace{},
|
|
|
regexRouter: map[*regexp.Regexp]*ParamReplace{},
|
|
@@ -95,12 +106,15 @@ func InitSussBi(config map[string]interface{}) (*sussBi, error) {
|
|
|
}
|
|
|
u, _ := url.Parse(address)
|
|
|
return &sussBi{
|
|
|
- addr: address,
|
|
|
- user: user,
|
|
|
- Url: u,
|
|
|
- pwd: password,
|
|
|
- jar: sussCookie,
|
|
|
- prm: prManager,
|
|
|
+ addr: address,
|
|
|
+ user: user,
|
|
|
+ Url: u,
|
|
|
+ pwd: password,
|
|
|
+ loginAddr: loginAddr,
|
|
|
+ cookiePath: cookiePath,
|
|
|
+ jar: sussCookie,
|
|
|
+ succbiJar: sussCookie2,
|
|
|
+ prm: prManager,
|
|
|
}, nil
|
|
|
}
|
|
|
|
|
@@ -116,13 +130,33 @@ func (s *sussBi) AutoLogin() error {
|
|
|
if !(resp.StatusCode == 302 || resp.StatusCode == 200) {
|
|
|
return fmt.Errorf("自动登录异常")
|
|
|
}
|
|
|
+ client.Jar = s.succbiJar
|
|
|
+ resp, err = client.Get(fmt.Sprintf("%s/succbi/?:user=%s&:password=%s", s.addr, s.user, s.pwd))
|
|
|
+ if err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if !(resp.StatusCode == 302 || resp.StatusCode == 200) {
|
|
|
+ return fmt.Errorf("自动登录异常")
|
|
|
+ }
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
// RequestLogin 装配登录状态
|
|
|
func (s *sussBi) RequestLogin(r *ghttp.Request) error {
|
|
|
- if cookies := s.jar.Cookies(s.Url); len(cookies) > 0 {
|
|
|
- r.Request.AddCookie(cookies[0])
|
|
|
+ if strings.HasPrefix(r.URL.Path, "/succbi") {
|
|
|
+ u, e := url.Parse(s.Url.String() + "/succbi")
|
|
|
+ if e != nil {
|
|
|
+ return e
|
|
|
+ }
|
|
|
+ cookies2 := s.succbiJar.Cookies(s.Url)
|
|
|
+ fmt.Println(cookies2)
|
|
|
+ if cookies := s.succbiJar.Cookies(u); len(cookies) > 0 {
|
|
|
+ r.Request.AddCookie(cookies[0])
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if cookies := s.jar.Cookies(s.Url); len(cookies) > 0 {
|
|
|
+ r.Request.AddCookie(cookies[0])
|
|
|
+ }
|
|
|
}
|
|
|
return nil
|
|
|
}
|