mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 23:00:55 +03:00
use epoch timestamp instead of current timestamp for unknown modification times
Signed-off-by: Nicola Murino <nicola.murino@gmail.com>
This commit is contained in:
@@ -223,11 +223,11 @@ func (c *Connection) Filelist(request *sftp.Request) (sftp.ListerAt, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
now := time.Now()
|
||||
modTime := time.Unix(0, 0)
|
||||
if request.Filepath != "/" || c.folderPrefix != "" {
|
||||
files = util.PrependFileInfo(files, vfs.NewFileInfo("..", true, 0, now, false))
|
||||
files = util.PrependFileInfo(files, vfs.NewFileInfo("..", true, 0, modTime, false))
|
||||
}
|
||||
files = util.PrependFileInfo(files, vfs.NewFileInfo(".", true, 0, now, false))
|
||||
files = util.PrependFileInfo(files, vfs.NewFileInfo(".", true, 0, modTime, false))
|
||||
return listerAt(files), nil
|
||||
case "Stat":
|
||||
if !c.User.HasPerm(dataprovider.PermListItems, path.Dir(request.Filepath)) {
|
||||
@@ -260,7 +260,7 @@ func (c *Connection) Filelist(request *sftp.Request) (sftp.ListerAt, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return listerAt([]os.FileInfo{vfs.NewFileInfo(s, false, 0, time.Now(), true)}), nil
|
||||
return listerAt([]os.FileInfo{vfs.NewFileInfo(s, false, 0, time.Unix(0, 0), true)}), nil
|
||||
default:
|
||||
return nil, sftp.ErrSSHFxOpUnsupported
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ func (p *prefixMiddleware) Lstat(request *sftp.Request) (sftp.ListerAt, error) {
|
||||
return p.next.Lstat(request)
|
||||
case pathIsPrefixParent:
|
||||
return listerAt([]os.FileInfo{
|
||||
vfs.NewFileInfo(request.Filepath, true, 0, time.Now(), false),
|
||||
vfs.NewFileInfo(request.Filepath, true, 0, time.Unix(0, 0), false),
|
||||
}), nil
|
||||
default:
|
||||
return nil, sftp.ErrSSHFxPermissionDenied
|
||||
@@ -92,18 +92,18 @@ func (p *prefixMiddleware) Filelist(request *sftp.Request) (sftp.ListerAt, error
|
||||
case pathIsPrefixParent:
|
||||
switch request.Method {
|
||||
case methodList:
|
||||
now := time.Now()
|
||||
modTime := time.Unix(0, 0)
|
||||
fileName := p.nextListFolder(request.Filepath)
|
||||
files := make([]os.FileInfo, 0, 3)
|
||||
files = append(files, vfs.NewFileInfo(".", true, 0, now, false))
|
||||
files = append(files, vfs.NewFileInfo(".", true, 0, modTime, false))
|
||||
if request.Filepath != "/" {
|
||||
files = append(files, vfs.NewFileInfo("..", true, 0, now, false))
|
||||
files = append(files, vfs.NewFileInfo("..", true, 0, modTime, false))
|
||||
}
|
||||
files = append(files, vfs.NewFileInfo(fileName, true, 0, now, false))
|
||||
files = append(files, vfs.NewFileInfo(fileName, true, 0, modTime, false))
|
||||
return listerAt(files), nil
|
||||
case methodStat:
|
||||
return listerAt([]os.FileInfo{
|
||||
vfs.NewFileInfo(request.Filepath, true, 0, time.Now(), false),
|
||||
vfs.NewFileInfo(request.Filepath, true, 0, time.Unix(0, 0), false),
|
||||
}), nil
|
||||
default:
|
||||
return nil, sftp.ErrSSHFxOpUnsupported
|
||||
|
||||
@@ -16,7 +16,6 @@ package sftpd
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/pkg/sftp"
|
||||
@@ -209,7 +208,7 @@ func (Suite *PrefixMiddlewareSuite) TestFileList() {
|
||||
Suite.Equal(".", directList[0].Name())
|
||||
}
|
||||
Suite.Equal(test.ExpectedPath, directList[test.ExpectedItems-1].Name())
|
||||
Suite.InDelta(time.Now().Unix(), directList[test.ExpectedItems-1].ModTime().Unix(), 1)
|
||||
Suite.Equal(int64(0), directList[test.ExpectedItems-1].ModTime().Unix())
|
||||
Suite.True(directList[test.ExpectedItems-1].IsDir())
|
||||
}
|
||||
}
|
||||
@@ -224,7 +223,7 @@ func (Suite *PrefixMiddlewareSuite) TestLstat() {
|
||||
if directList, ok := ListerAt.(listerAt); ok {
|
||||
Suite.Len(directList, 1)
|
||||
Suite.Equal(`/`, directList[0].Name())
|
||||
Suite.InDelta(time.Now().Unix(), directList[0].ModTime().Unix(), 1)
|
||||
Suite.Equal(int64(0), directList[0].ModTime().Unix())
|
||||
Suite.True(directList[0].IsDir())
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user