From 4b2d21c7e48045b1a6830b6d06ce35b278c6d36c Mon Sep 17 00:00:00 2001 From: Weidi Deng Date: Wed, 30 Dec 2020 09:13:52 +0800 Subject: [PATCH] add readheader param --- files/file.go | 17 +++++++++-------- http/data.go | 5 ----- http/preview.go | 11 ++++++----- http/public.go | 11 ++++++----- http/raw.go | 11 ++++++----- http/resource.go | 22 ++++++++++++---------- rules/rules.go | 1 - 7 files changed, 39 insertions(+), 39 deletions(-) diff --git a/files/file.go b/files/file.go index 83c23ad3..fa102049 100644 --- a/files/file.go +++ b/files/file.go @@ -42,11 +42,12 @@ type FileInfo struct { // FileOptions are the options when getting a file info. type FileOptions struct { - Fs afero.Fs - Path string - Modify bool - Expand bool - Checker rules.Checker + Fs afero.Fs + Path string + Modify bool + Expand bool + ReadHeader bool + Checker rules.Checker } // NewFileInfo creates a File object from a path and a given user. This File @@ -75,7 +76,7 @@ func NewFileInfo(opts FileOptions) (*FileInfo, error) { if opts.Expand { if file.IsDir { - if err := file.readListing(opts.Checker); err != nil { //nolint:shadow + if err := file.readListing(opts.Checker, opts.ReadHeader); err != nil { //nolint:shadow return nil, err } return file, nil @@ -223,7 +224,7 @@ func (i *FileInfo) detectSubtitles() { } } -func (i *FileInfo) readListing(checker rules.Checker) error { +func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error { afs := &afero.Afero{Fs: i.Fs} dir, err := afs.ReadDir(i.Path) if err != nil { @@ -269,7 +270,7 @@ func (i *FileInfo) readListing(checker rules.Checker) error { } else { listing.NumFiles++ - err := file.detectType(true, false, checker.ReadHeader()) + err := file.detectType(true, false, readHeader) if err != nil { return err } diff --git a/http/data.go b/http/data.go index 98120dcc..1bdafe3f 100644 --- a/http/data.go +++ b/http/data.go @@ -47,11 +47,6 @@ func (d *data) Check(path string) bool { return allow } -// ReadHeader implements rules.ReadHeader. -func (d *data) ReadHeader() bool { - return d.server.TypeDetectionByHeader -} - func handle(fn handleFunc, prefix string, store *storage.Storage, server *settings.Server) http.Handler { handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { settings, err := store.Settings.Get() diff --git a/http/preview.go b/http/preview.go index b6f8c256..0d956a51 100644 --- a/http/preview.go +++ b/http/preview.go @@ -46,11 +46,12 @@ func previewHandler(imgSvc ImgService, fileCache FileCache, enableThumbnails, re } file, err := files.NewFileInfo(files.FileOptions{ - Fs: d.user.Fs, - Path: "/" + vars["path"], - Modify: d.user.Perm.Modify, - Expand: true, - Checker: d, + Fs: d.user.Fs, + Path: "/" + vars["path"], + Modify: d.user.Perm.Modify, + Expand: true, + ReadHeader: d.server.TypeDetectionByHeader, + Checker: d, }) if err != nil { return errToStatus(err), err diff --git a/http/public.go b/http/public.go index 269c5bdd..dfa58a7e 100644 --- a/http/public.go +++ b/http/public.go @@ -25,11 +25,12 @@ var withHashFile = func(fn handleFunc) handleFunc { d.user = user file, err := files.NewFileInfo(files.FileOptions{ - Fs: d.user.Fs, - Path: link.Path, - Modify: d.user.Perm.Modify, - Expand: true, - Checker: d, + Fs: d.user.Fs, + Path: link.Path, + Modify: d.user.Perm.Modify, + Expand: true, + ReadHeader: d.server.TypeDetectionByHeader, + Checker: d, }) if err != nil { return errToStatus(err), err diff --git a/http/raw.go b/http/raw.go index 1f3c19ef..c65e1d61 100644 --- a/http/raw.go +++ b/http/raw.go @@ -84,11 +84,12 @@ var rawHandler = withUser(func(w http.ResponseWriter, r *http.Request, d *data) } file, err := files.NewFileInfo(files.FileOptions{ - Fs: d.user.Fs, - Path: r.URL.Path, - Modify: d.user.Perm.Modify, - Expand: false, - Checker: d, + Fs: d.user.Fs, + Path: r.URL.Path, + Modify: d.user.Perm.Modify, + Expand: false, + ReadHeader: d.server.TypeDetectionByHeader, + Checker: d, }) if err != nil { return errToStatus(err), err diff --git a/http/resource.go b/http/resource.go index daeb344b..39e0f8b7 100644 --- a/http/resource.go +++ b/http/resource.go @@ -20,11 +20,12 @@ import ( var resourceGetHandler = withUser(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { file, err := files.NewFileInfo(files.FileOptions{ - Fs: d.user.Fs, - Path: r.URL.Path, - Modify: d.user.Perm.Modify, - Expand: true, - Checker: d, + Fs: d.user.Fs, + Path: r.URL.Path, + Modify: d.user.Perm.Modify, + Expand: true, + ReadHeader: d.server.TypeDetectionByHeader, + Checker: d, }) if err != nil { return errToStatus(err), err @@ -58,11 +59,12 @@ func resourceDeleteHandler(fileCache FileCache) handleFunc { } file, err := files.NewFileInfo(files.FileOptions{ - Fs: d.user.Fs, - Path: r.URL.Path, - Modify: d.user.Perm.Modify, - Expand: true, - Checker: d, + Fs: d.user.Fs, + Path: r.URL.Path, + Modify: d.user.Perm.Modify, + Expand: true, + ReadHeader: d.server.TypeDetectionByHeader, + Checker: d, }) if err != nil { return errToStatus(err), err diff --git a/rules/rules.go b/rules/rules.go index 41391926..d8a7f967 100644 --- a/rules/rules.go +++ b/rules/rules.go @@ -9,7 +9,6 @@ import ( // Checker is a Rules checker. type Checker interface { Check(path string) bool - ReadHeader() bool } // Rule is a allow/disallow rule.