diff --git a/server/controllers/link.go b/server/controllers/link.go new file mode 100644 index 00000000..73783de7 --- /dev/null +++ b/server/controllers/link.go @@ -0,0 +1,47 @@ +package controllers + +import ( + "fmt" + "github.com/Xhofe/alist/conf" + "github.com/Xhofe/alist/drivers/base" + "github.com/Xhofe/alist/server/common" + "github.com/Xhofe/alist/utils" + "github.com/gin-gonic/gin" + log "github.com/sirupsen/logrus" +) + +type LinkReq struct { + Path string `json:"path"` + //Password string `json:"password"` +} + +// Link 返回真实的链接,且携带头,只提供给中转程序使用 +func Link(c *gin.Context) { + var req LinkReq + if err := c.ShouldBind(&req); err != nil { + common.ErrorResp(c, err, 400) + return + } + req.Path = utils.ParsePath(req.Path) + rawPath := req.Path + rawPath = utils.ParsePath(rawPath) + log.Debugf("link: %s", rawPath) + account, path, driver, err := common.ParsePath(rawPath) + if err != nil { + common.ErrorResp(c, err, 500) + return + } + if driver.Config().OnlyLocal { + common.SuccessResp(c, base.Link{ + Url: fmt.Sprintf("//%s/p%s?d=1&sign=%s", c.Request.Host, req.Path, utils.SignWithToken(utils.Base(rawPath), conf.Token)), + }) + return + } + link, err := driver.Link(base.Args{Path: path, IP: c.ClientIP()}, account) + if err != nil { + common.ErrorResp(c, err, 500) + return + } + common.SuccessResp(c, link) + return +} diff --git a/server/controllers/path.go b/server/controllers/path.go index 72a6eae1..d9df18b5 100644 --- a/server/controllers/path.go +++ b/server/controllers/path.go @@ -123,37 +123,6 @@ func Path(c *gin.Context) { } } -// Link 返回真实的链接,且携带头,只提供给中转程序使用 -func Link(c *gin.Context) { - var req common.PathReq - if err := c.ShouldBind(&req); err != nil { - common.ErrorResp(c, err, 400) - return - } - req.Path = utils.ParsePath(req.Path) - rawPath := req.Path - rawPath = utils.ParsePath(rawPath) - log.Debugf("link: %s", rawPath) - account, path, driver, err := common.ParsePath(rawPath) - if err != nil { - common.ErrorResp(c, err, 500) - return - } - if driver.Config().OnlyLocal { - common.SuccessResp(c, base.Link{ - Url: fmt.Sprintf("//%s/p%s?d=1&sign=%s", c.Request.Host, req.Path, utils.SignWithToken(utils.Base(rawPath), conf.Token)), - }) - return - } - link, err := driver.Link(base.Args{Path: path, IP: c.ClientIP()}, account) - if err != nil { - common.ErrorResp(c, err, 500) - return - } - common.SuccessResp(c, link) - return -} - func Preview(c *gin.Context) { reqV, _ := c.Get("req") req := reqV.(common.PathReq)