From 77ffb93cbe792037cedd0e1c0207357182c141a3 Mon Sep 17 00:00:00 2001 From: Xhofe Date: Sun, 20 Mar 2022 16:53:30 +0800 Subject: [PATCH] feat: multiple down proxy urls (close #793) --- drivers/base/driver.go | 2 +- drivers/base/types.go | 1 + drivers/google/googledrive.go | 4 ++-- server/controllers/path.go | 3 ++- server/controllers/proxy.go | 3 ++- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/base/driver.go b/drivers/base/driver.go index b9e3528b..1fe72cfe 100644 --- a/drivers/base/driver.go +++ b/drivers/base/driver.go @@ -121,7 +121,7 @@ func GetDrivers() map[string][]Item { { Name: "down_proxy_url", Label: "down_proxy_url", - Type: TypeString, + Type: TypeText, }, { Name: "extract_folder", diff --git a/drivers/base/types.go b/drivers/base/types.go index 5456b800..930ed1c6 100644 --- a/drivers/base/types.go +++ b/drivers/base/types.go @@ -21,6 +21,7 @@ const ( TypeSelect = "select" TypeBool = "bool" TypeNumber = "number" + TypeText = "text" ) const ( diff --git a/drivers/google/googledrive.go b/drivers/google/googledrive.go index 4a3bcc6d..34b2f419 100644 --- a/drivers/google/googledrive.go +++ b/drivers/google/googledrive.go @@ -73,8 +73,8 @@ func (driver GoogleDrive) FormatFile(file *File, account *model.Account) *model. f.Type = utils.GetFileType(filepath.Ext(file.Name)) } if file.ThumbnailLink != "" { - if account.DownProxyUrl != "" { - f.Thumbnail = fmt.Sprintf("%s/%s", account.DownProxyUrl, file.ThumbnailLink) + if account.APIProxyUrl != "" { + f.Thumbnail = fmt.Sprintf("%s/%s", account.APIProxyUrl, file.ThumbnailLink) } else { f.Thumbnail = file.ThumbnailLink } diff --git a/server/controllers/path.go b/server/controllers/path.go index e3db698f..d3cc026c 100644 --- a/server/controllers/path.go +++ b/server/controllers/path.go @@ -11,6 +11,7 @@ import ( "github.com/Xhofe/alist/utils" "github.com/gin-gonic/gin" log "github.com/sirupsen/logrus" + "strings" ) func Pagination(files []model.File, req *common.PathReq) (int, []model.File) { @@ -119,7 +120,7 @@ func Path(c *gin.Context) { // 对于中转文件或只能中转,将链接修改为中转链接 if driver.Config().OnlyProxy || account.Proxy { if account.DownProxyUrl != "" { - file.Url = fmt.Sprintf("%s%s?sign=%s", account.DownProxyUrl, req.Path, utils.SignWithToken(file.Name, conf.Token)) + file.Url = fmt.Sprintf("%s%s?sign=%s", strings.Split(account.DownProxyUrl, "\n")[0], req.Path, utils.SignWithToken(file.Name, conf.Token)) } else { file.Url = fmt.Sprintf("//%s/p%s?sign=%s", c.Request.Host, req.Path, utils.SignWithToken(file.Name, conf.Token)) } diff --git a/server/controllers/proxy.go b/server/controllers/proxy.go index 892bcf37..8209715f 100644 --- a/server/controllers/proxy.go +++ b/server/controllers/proxy.go @@ -11,6 +11,7 @@ import ( "github.com/go-resty/resty/v2" log "github.com/sirupsen/logrus" "path/filepath" + "strings" ) func Proxy(c *gin.Context) { @@ -43,7 +44,7 @@ func Proxy(c *gin.Context) { // 中转时有中转机器使用中转机器,若携带标志位则表明不能再走中转机器了 if account.DownProxyUrl != "" && c.Query("d") != "1" { name := utils.Base(rawPath) - link := fmt.Sprintf("%s%s?sign=%s", account.DownProxyUrl, rawPath, utils.SignWithToken(name, conf.Token)) + link := fmt.Sprintf("%s%s?sign=%s", strings.Split(account.DownProxyUrl, "\n")[0], rawPath, utils.SignWithToken(name, conf.Token)) c.Redirect(302, link) return }