package server | |
import ( | |
"context" | |
"path" | |
"strings" | |
"github.com/alist-org/alist/v3/internal/conf" | |
"github.com/alist-org/alist/v3/server/common" | |
"github.com/alist-org/alist/v3/server/s3" | |
"github.com/gin-gonic/gin" | |
) | |
func S3(g *gin.RouterGroup) { | |
if !conf.Conf.S3.Enable { | |
g.Any("/*path", func(c *gin.Context) { | |
common.ErrorStrResp(c, "S3 server is not enabled", 403) | |
}) | |
return | |
} | |
if conf.Conf.S3.Port != -1 { | |
g.Any("/*path", func(c *gin.Context) { | |
common.ErrorStrResp(c, "S3 server bound to single port", 403) | |
}) | |
return | |
} | |
h, _ := s3.NewServer(context.Background()) | |
g.Any("/*path", func(c *gin.Context) { | |
adjustedPath := strings.TrimPrefix(c.Request.URL.Path, path.Join(conf.URL.Path, "/s3")) | |
c.Request.URL.Path = adjustedPath | |
gin.WrapH(h)(c) | |
}) | |
} | |
func S3Server(g *gin.RouterGroup) { | |
h, _ := s3.NewServer(context.Background()) | |
g.Any("/*path", gin.WrapH(h)) | |
} | |