diff --git a/filesystem.go b/filesystem.go index 447b7ef..cec9633 100644 --- a/filesystem.go +++ b/filesystem.go @@ -16,13 +16,12 @@ const writeFlag = os.O_RDWR | os.O_CREATE | os.O_TRUNC // WriteOnlyOnceFileSystem is a file write only wrapper for a webdav.FileSystem type WriteOnlyOnceFileSystem struct { - Filters []Filter - fs webdav.FileSystem + fs webdav.FileSystem } // NewWriteOnlyOnceFileSystem returns a new WriteOnlyOnceFileSystem wrapping a webdav.FileSystem func NewWriteOnlyOnceFileSystem(fs webdav.FileSystem) *WriteOnlyOnceFileSystem { - return &WriteOnlyOnceFileSystem{fs: fs} + return &WriteOnlyOnceFileSystem{fs} } // Mkdir is not permitted @@ -39,12 +38,6 @@ func (fs *WriteOnlyOnceFileSystem) OpenFile(ctx context.Context, name string, fl return nil, ErrWonly } } - for _, filter := range fs.Filters { - err = filter.Filter(name) - if err != nil { - return nil, err - } - } f, err := fs.fs.OpenFile(ctx, name, flag, perm) if err != nil { return nil, err @@ -52,15 +45,8 @@ func (fs *WriteOnlyOnceFileSystem) OpenFile(ctx context.Context, name string, fl return &File{f}, nil } -// RemoveAll only permits deleting empty files +// RemoveAll is not permitted func (fs *WriteOnlyOnceFileSystem) RemoveAll(ctx context.Context, name string) error { - fi, err := fs.fs.Stat(ctx, name) - if err != nil { - return err - } - if fi.Mode().IsRegular() && fi.Size() == 0 { - return fs.fs.RemoveAll(ctx, name) - } return ErrWonly } diff --git a/filter.go b/filter.go deleted file mode 100644 index 8b039a6..0000000 --- a/filter.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (C) 2019 Marius Schellenberger - -package authdav - -import ( - "errors" - "path/filepath" - "strings" -) - -// Matcher is the matcher function type -type Matcher func(path string) bool - -// Filter defines an interface to filter paths or files -type Filter interface { - Filter(path string) error -} - -// ErrMacOSFilter error returned by the MacOSFilter -var ErrMacOSFilter = errors.New("authdav: MacOS filter: access denied") - -// MacOSFilter implements a filter for MacOS specific files -type MacOSFilter struct { - match []Matcher -} - -// NewMacOSFilter returns a new MacOSFilter -func NewMacOSFilter() *MacOSFilter { - return &MacOSFilter{ - match: []Matcher{ - func(p string) bool { - return p == ".DS_Store" - }, - func(p string) bool { - return strings.HasPrefix(p, "._") - }, - }, - } -} - -// Filter implements the Filter interface -func (f *MacOSFilter) Filter(path string) error { - _, file := filepath.Split(path) - for _, m := range f.match { - if m(file) { - return ErrMacOSFilter - } - } - return nil -} diff --git a/go.mod b/go.mod index 02cb02c..ac73fd3 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1 @@ module git.giftfish.de/ston1th/authdav - -go 1.12 - -require golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 diff --git a/go.sum b/go.sum deleted file mode 100644 index dc1e52d..0000000 --- a/go.sum +++ /dev/null @@ -1,5 +0,0 @@ -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 h1:k7pJ2yAPLPgbskkFdhRCsA77k2fySZ1zf2zCjvQCiIM= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=