8000 fix(ftp-server): work unproperly when base url is not root (#7693) · AlistGo/alist@6aaf597 · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit 6aaf597

Browse files
authored
fix(ftp-server): work unproperly when base url is not root (#7693)
* fix(ftp-server): work unproperly when base url is not root * fix: avoid merge conflict
1 parent bb2aec2 commit 6aaf597

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

server/ftp/afero.go

+10-4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
ftpserver "github.com/KirCute/ftpserverlib-pasvportmap"
77
"github.com/alist-org/alist/v3/internal/errs"
88
"github.com/alist-org/alist/v3/internal/fs"
9+
"github.com/alist-org/alist/v3/internal/model"
910
"github.com/spf13/afero"
1011
"os"
1112
"time"
@@ -91,7 +92,12 @@ func (a *AferoAdapter) GetHandle(name string, flags int, offset int64) (ftpserve
9192
if (flags & os.O_APPEND) != 0 {
9293
return nil, errs.NotSupport
9394
}
94-
_, err := fs.Get(a.ctx, name, &fs.GetArgs{})
95+
user := a.ctx.Value("user").(*model.User)
96+
path, err := user.JoinPath(name)
97+
if err != nil {
98+
return nil, err
99+
}
100+
_, err = fs.Get(a.ctx, path, &fs.GetArgs{})
95101
exists := err == nil
96102
if (flags&os.O_CREATE) == 0 && !exists {
97103
return nil, errs.ObjectNotFound
@@ -102,12 +108,12 @@ func (a *AferoAdapter) GetHandle(name string, flags int, offset int64) (ftpserve
102108
if (flags & os.O_WRONLY) != 0 {
103109
trunc := (flags & os.O_TRUNC) != 0
104110
if fileSize > 0 {
105-
return OpenUploadWithLength(a.ctx, name, trunc, fileSize)
111+
return OpenUploadWithLength(a.ctx, path, trunc, fileSize)
106112
} else {
107-
return OpenUpload(a.ctx, name, trunc)
113+
return OpenUpload(a.ctx, path, trunc)
108114
}
109115
}
110-
return OpenDownload(a.ctx, name)
116+
return OpenDownload(a.ctx, path)
111117
}
112118

113119
func (a *AferoAdapter) SetNextFileSize(size int64) {

server/ftp/fsread.go

+1-5
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,8 @@ type FileDownloadProxy struct {
2525
closers *utils.Closers
2626
}
2727

28-
func OpenDownload(ctx context.Context, path string) (*FileDownloadProxy, error) {
28+
func OpenDownload(ctx context.Context, reqPath string) (*FileDownloadProxy, error) {
2929
user := ctx.Value("user").(*model.User)
30-
reqPath, err := user.JoinPath(path)
31-
if err != nil {
32-
return nil, err
33-
}
3430
meta, err := op.GetNearestMeta(reqPath)
3531
if err != nil {
3632
if !errors.Is(errors.Cause(err), errs.MetaNotFound) {

server/ftp/fsup.go

-4
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ type FileUploadProxy struct {
2929

3030
func uploadAuth(ctx context.Context, path string) error {
3131
user := ctx.Value("user").(*model.User)
32-
path, err := user.JoinPath(path)
33-
if err != nil {
34-
return err
35-
}
3632
meta, err := op.GetNearestMeta(stdpath.Dir(path))
3733
if err != nil {
3834
if !errors.Is(errors.Cause(err), errs.MetaNotFound) {

0 commit comments

Comments
 (0)
0