|
@@ -11,6 +11,7 @@ import (
|
|
"net/url"
|
|
"net/url"
|
|
"regexp"
|
|
"regexp"
|
|
"strings"
|
|
"strings"
|
|
|
|
+ "sync"
|
|
"time"
|
|
"time"
|
|
|
|
|
|
"app.yhyue.com/moapp/jybase/common"
|
|
"app.yhyue.com/moapp/jybase/common"
|
|
@@ -27,6 +28,8 @@ type sussBi struct {
|
|
pwd string
|
|
pwd string
|
|
Url *url.URL
|
|
Url *url.URL
|
|
cookiePath string
|
|
cookiePath string
|
|
|
|
+ lastLogin time.Time
|
|
|
|
+ loginLock *sync.RWMutex
|
|
jar *cookiejar.Jar
|
|
jar *cookiejar.Jar
|
|
succbiJar *cookiejar.Jar
|
|
succbiJar *cookiejar.Jar
|
|
prm *ParamReplaceManager
|
|
prm *ParamReplaceManager
|
|
@@ -118,6 +121,8 @@ func InitSussBi(config map[string]interface{}) (*sussBi, error) {
|
|
loginAddr: loginAddr,
|
|
loginAddr: loginAddr,
|
|
cookiePath: cookiePath,
|
|
cookiePath: cookiePath,
|
|
jar: sussCookie,
|
|
jar: sussCookie,
|
|
|
|
+ lastLogin: time.Now(),
|
|
|
|
+ loginLock: &sync.RWMutex{},
|
|
succbiJar: sussCookie2,
|
|
succbiJar: sussCookie2,
|
|
prm: prManager,
|
|
prm: prManager,
|
|
singlePointUrl: regexp.MustCompile(gconv.String(config["singlePointUrl"])),
|
|
singlePointUrl: regexp.MustCompile(gconv.String(config["singlePointUrl"])),
|
|
@@ -126,25 +131,22 @@ func InitSussBi(config map[string]interface{}) (*sussBi, error) {
|
|
|
|
|
|
// AutoLogin 自动登录
|
|
// AutoLogin 自动登录
|
|
func (s *sussBi) AutoLogin() error {
|
|
func (s *sussBi) AutoLogin() error {
|
|
- client := &http.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("自动登录异常")
|
|
|
|
|
|
+ s.loginLock.Lock()
|
|
|
|
+ defer s.loginLock.Unlock()
|
|
|
|
+ if time.Now().Sub(s.lastLogin).Seconds() > 60 {
|
|
|
|
+ client := &http.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("自动登录异常")
|
|
|
|
+ }
|
|
|
|
+ s.succbiJar = s.jar
|
|
|
|
+ s.lastLogin = time.Now()
|
|
}
|
|
}
|
|
- s.succbiJar = s.jar
|
|
|
|
- // 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
|
|
return nil
|
|
}
|
|
}
|
|
|
|
|