From e90b979d15c9986adaedf23cfcb76ed78b361bcb Mon Sep 17 00:00:00 2001 From: Xhofe Date: Mon, 14 Feb 2022 14:59:00 +0800 Subject: [PATCH] :sparkles: close #535 request set timeout --- drivers/189/189.go | 1 + drivers/alidrive/alidrive.go | 1 + drivers/base/driver.go | 3 +++ drivers/lanzou/lanzou.go | 22 ++++++++-------------- server/controllers/proxy.go | 2 +- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/drivers/189/189.go b/drivers/189/189.go index 5eba6e11..c1ec9e90 100644 --- a/drivers/189/189.go +++ b/drivers/189/189.go @@ -107,6 +107,7 @@ func (driver Cloud189) Login(account *model.Account) error { //cookieJar, _ := cookiejar.New(&cookiejar.Options{PublicSuffixList: publicsuffix.List}) client = resty.New() //client.SetCookieJar(cookieJar) + client.SetTimeout(base.DefaultTimeout) client.SetRetryCount(3) client.SetHeader("Referer", "https://cloud.189.cn/") } diff --git a/drivers/alidrive/alidrive.go b/drivers/alidrive/alidrive.go index a0b6fdd3..2acb0163 100644 --- a/drivers/alidrive/alidrive.go +++ b/drivers/alidrive/alidrive.go @@ -236,6 +236,7 @@ func (driver AliDrive) batch(srcId, dstId string, account *model.Account) error func init() { base.RegisterDriver(&AliDrive{}) aliClient. + SetTimeout(base.DefaultTimeout). SetRetryCount(3). SetHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"). SetHeader("content-type", "application/json"). diff --git a/drivers/base/driver.go b/drivers/base/driver.go index e7a8dce3..8e74282c 100644 --- a/drivers/base/driver.go +++ b/drivers/base/driver.go @@ -5,6 +5,7 @@ import ( "github.com/go-resty/resty/v2" log "github.com/sirupsen/logrus" "net/http" + "time" ) type DriverConfig struct { @@ -168,6 +169,7 @@ var NoRedirectClient *resty.Client var RestyClient = resty.New() var HttpClient = &http.Client{} var UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" +var DefaultTimeout = time.Second * 20 func init() { NoRedirectClient = resty.New().SetRedirectPolicy( @@ -178,4 +180,5 @@ func init() { NoRedirectClient.SetHeader("user-agent", UserAgent) RestyClient.SetHeader("user-agent", UserAgent) RestyClient.SetRetryCount(3) + RestyClient.SetTimeout(DefaultTimeout) } diff --git a/drivers/lanzou/lanzou.go b/drivers/lanzou/lanzou.go index 3fb489f5..78ff94b5 100644 --- a/drivers/lanzou/lanzou.go +++ b/drivers/lanzou/lanzou.go @@ -6,7 +6,6 @@ import ( "github.com/Xhofe/alist/drivers/base" "github.com/Xhofe/alist/model" "github.com/Xhofe/alist/utils" - "github.com/go-resty/resty/v2" log "github.com/sirupsen/logrus" "net/url" "path/filepath" @@ -15,8 +14,6 @@ import ( "time" ) -var lanzouClient = resty.New() - type LanZouFile struct { Name string `json:"name"` NameAll string `json:"name_all"` @@ -58,7 +55,7 @@ func (driver *Lanzou) GetFiles(folderId string, account *model.Account) ([]LanZo files := make([]LanZouFile, 0) var resp LanZouFilesResp // folders - res, err := lanzouClient.R().SetResult(&resp).SetHeader("Cookie", account.AccessToken). + res, err := base.RestyClient.R().SetResult(&resp).SetHeader("Cookie", account.AccessToken). SetFormData(map[string]string{ "task": "47", "folder_id": folderId, @@ -77,7 +74,7 @@ func (driver *Lanzou) GetFiles(folderId string, account *model.Account) ([]LanZo // files pg := 1 for { - _, err = lanzouClient.R().SetResult(&resp).SetHeader("Cookie", account.AccessToken). + _, err = base.RestyClient.R().SetResult(&resp).SetHeader("Cookie", account.AccessToken). SetFormData(map[string]string{ "task": "5", "folder_id": folderId, @@ -108,7 +105,7 @@ func (driver *Lanzou) GetFilesByUrl(account *model.Account) ([]LanZouFile, error if err != nil { return nil, err } - res, err := lanzouClient.R().Get(shareUrl) + res, err := base.RestyClient.R().Get(shareUrl) if err != nil { return nil, err } @@ -129,7 +126,7 @@ func (driver *Lanzou) GetFilesByUrl(account *model.Account) ([]LanZouFile, error pg := 1 for { var resp LanZouFilesResp - res, err = lanzouClient.R().SetResult(&resp).SetFormData(map[string]string{ + res, err = base.RestyClient.R().SetResult(&resp).SetFormData(map[string]string{ "lx": lx, "fid": fid, "uid": uid, @@ -166,7 +163,7 @@ func (driver *Lanzou) GetFilesByUrl(account *model.Account) ([]LanZouFile, error // GetDownPageId 获取下载页面的ID func (driver *Lanzou) GetDownPageId(fileId string, account *model.Account) (string, error) { var resp LanZouFilesResp - res, err := lanzouClient.R().SetResult(&resp).SetHeader("Cookie", account.AccessToken). + res, err := base.RestyClient.R().SetResult(&resp).SetHeader("Cookie", account.AccessToken). SetFormData(map[string]string{ "task": "22", "file_id": fileId, @@ -201,7 +198,7 @@ func (driver *Lanzou) GetLink(downId string, account *model.Account) (string, er if err != nil { return "", err } - res, err := lanzouClient.R().Get(fmt.Sprintf("https://%s/%s", u.Host, downId)) + res, err := base.RestyClient.R().Get(fmt.Sprintf("https://%s/%s", u.Host, downId)) if err != nil { return "", err } @@ -210,7 +207,7 @@ func (driver *Lanzou) GetLink(downId string, account *model.Account) (string, er return "", fmt.Errorf("get down empty page") } iframeUrl := fmt.Sprintf("https://%s%s", u.Host, iframe[1]) - res, err = lanzouClient.R().Get(iframeUrl) + res, err = base.RestyClient.R().Get(iframeUrl) if err != nil { return "", err } @@ -237,7 +234,7 @@ func (driver *Lanzou) GetLink(downId string, account *model.Account) (string, er "websignkey": websignkey, } log.Debugf("form: %+v", form) - res, err = lanzouClient.R().SetResult(&resp). + res, err = base.RestyClient.R().SetResult(&resp). SetHeader("origin", "https://"+u.Host). SetHeader("referer", iframeUrl). SetFormData(form).Post(fmt.Sprintf("https://%s/ajaxm.php", u.Host)) @@ -253,7 +250,4 @@ func (driver *Lanzou) GetLink(downId string, account *model.Account) (string, er func init() { base.RegisterDriver(&Lanzou{}) - lanzouClient. - SetRetryCount(3). - SetHeader("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36") } diff --git a/server/controllers/proxy.go b/server/controllers/proxy.go index f2b5c2a2..6dc41ce8 100644 --- a/server/controllers/proxy.go +++ b/server/controllers/proxy.go @@ -67,7 +67,7 @@ var client *resty.Client func init() { client = resty.New() - client.SetRetryCount(3) + client.SetRetryCount(3).SetTimeout(base.DefaultTimeout) } func Text(c *gin.Context, link *base.Link) {