feat: Fix file flags on FTP server, remove quirks handling option

This commit is contained in:
Felix Pojtinger
2022-01-09 03:04:06 +01:00
parent 7fcccdd7fe
commit d35435d2c0
8 changed files with 30 additions and 31 deletions

View File

@@ -192,7 +192,6 @@ var serveFTPCmd = &cobra.Command{
viper.GetString(cacheWriteFlag),
)
},
true, // FTP needs read permission for `STOR` command even if O_WRONLY is set
viper.GetBool(readOnlyFlag),
func(hdr *config.Header) {

View File

@@ -128,10 +128,9 @@ var serveHTTPCmd = &cobra.Command{
Metadata: metadataPersister,
},
"", // We never write
nil, // We never write
false, // We never write
true, // We never write
"", // We never write
nil, // We never write
true, // We never write
func(hdr *config.Header) {
jsonLogger.Trace("Header transform", hdr)

View File

@@ -171,7 +171,6 @@ func createFs(
writeCache,
)
},
false,
readOnly,
func(hdr *config.Header) {

View File

@@ -99,7 +99,6 @@ func main() {
)
},
false,
false,
func(hdr *config.Header) {
l.Trace("Header transform", hdr)

View File

@@ -31,10 +31,9 @@ type STFS struct {
metadata config.MetadataConfig
compressionLevel string
getFileBuffer func() (cache.WriteCache, func() error, error)
ignoreReadWritePermissions bool
readOnly bool
compressionLevel string
getFileBuffer func() (cache.WriteCache, func() error, error)
readOnly bool
ioLock sync.Mutex
@@ -50,7 +49,6 @@ func NewSTFS(
compressionLevel string,
getFileBuffer func() (cache.WriteCache, func() error, error),
ignorePermissionFlags bool,
readOnly bool,
onHeader func(hdr *config.Header),
@@ -62,10 +60,9 @@ func NewSTFS(
metadata: metadata,
compressionLevel: compressionLevel,
getFileBuffer: getFileBuffer,
ignoreReadWritePermissions: ignorePermissionFlags,
readOnly: readOnly,
compressionLevel: compressionLevel,
getFileBuffer: getFileBuffer,
readOnly: readOnly,
onHeader: onHeader,
log: log,
@@ -302,7 +299,7 @@ func (f *STFS) Open(name string) (afero.File, error) {
"name": name,
})
return f.OpenFile(name, os.O_RDWR, os.ModePerm)
return f.OpenFile(name, os.O_RDONLY, 0)
}
func (f *STFS) OpenFile(name string, flag int, perm os.FileMode) (afero.File, error) {
@@ -317,24 +314,15 @@ func (f *STFS) OpenFile(name string, flag int, perm os.FileMode) (afero.File, er
flags := &ifs.FileFlags{}
if f.readOnly {
if flag&os.O_RDONLY != 0 || flag&os.O_RDWR != 0 || f.ignoreReadWritePermissions {
if (flag&O_ACCMODE) == os.O_RDONLY || (flag&O_ACCMODE) == os.O_RDWR {
flags.Read = true
}
} else {
if flag&os.O_RDONLY != 0 {
if (flag & O_ACCMODE) == os.O_RDONLY {
flags.Read = true
}
if flag&os.O_WRONLY != 0 {
} else if (flag & O_ACCMODE) == os.O_WRONLY {
flags.Write = true
}
if flag&os.O_RDWR != 0 {
flags.Read = true
flags.Write = true
}
if f.ignoreReadWritePermissions {
} else if (flag & O_ACCMODE) == os.O_RDWR {
flags.Read = true
flags.Write = true
}

View File

@@ -0,0 +1,7 @@
//go:build windows
package fs
const (
O_ACCMODE = 0x3 // It is safe to hard-code this bit as the bits are not being set from the OS
)

View File

@@ -403,7 +403,6 @@ func createSTFS(
writeCache,
)
},
false,
readOnly,
func(hdr *config.Header) {

View File

@@ -0,0 +1,9 @@
//go:build !windows
package fs
import "syscall"
const (
O_ACCMODE = syscall.O_ACCMODE
)