mirror of
https://github.com/filebrowser/filebrowser.git
synced 2026-01-23 02:35:10 +00:00
feat: add "disable image resolution calculation" flag (#5638)
This commit is contained in:
parent
1faa21844f
commit
a2d80c62c1
8 changed files with 28 additions and 11 deletions
|
|
@ -308,6 +308,9 @@ func getSettings(flags *pflag.FlagSet, set *settings.Settings, ser *settings.Ser
|
||||||
case "disableTypeDetectionByHeader":
|
case "disableTypeDetectionByHeader":
|
||||||
ser.TypeDetectionByHeader, err = flags.GetBool(flag.Name)
|
ser.TypeDetectionByHeader, err = flags.GetBool(flag.Name)
|
||||||
ser.TypeDetectionByHeader = !ser.TypeDetectionByHeader
|
ser.TypeDetectionByHeader = !ser.TypeDetectionByHeader
|
||||||
|
case "disableImageResolutionCalc":
|
||||||
|
ser.ImageResolutionCal, err = flags.GetBool(flag.Name)
|
||||||
|
ser.ImageResolutionCal = !ser.ImageResolutionCal
|
||||||
|
|
||||||
// Settings flags from [addConfigFlags]
|
// Settings flags from [addConfigFlags]
|
||||||
case "signup":
|
case "signup":
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,7 @@ func addServerFlags(flags *pflag.FlagSet) {
|
||||||
flags.Bool("disablePreviewResize", false, "disable resize of image previews")
|
flags.Bool("disablePreviewResize", false, "disable resize of image previews")
|
||||||
flags.Bool("disableExec", true, "disables Command Runner feature")
|
flags.Bool("disableExec", true, "disables Command Runner feature")
|
||||||
flags.Bool("disableTypeDetectionByHeader", false, "disables type detection by reading file headers")
|
flags.Bool("disableTypeDetectionByHeader", false, "disables type detection by reading file headers")
|
||||||
|
flags.Bool("disableImageResolutionCalc", false, "disables image resolution calculation by reading image files")
|
||||||
}
|
}
|
||||||
|
|
||||||
var rootCmd = &cobra.Command{
|
var rootCmd = &cobra.Command{
|
||||||
|
|
@ -336,6 +337,10 @@ func getServerSettings(v *viper.Viper, st *storage.Storage) (*settings.Server, e
|
||||||
server.TypeDetectionByHeader = !v.GetBool("disableTypeDetectionByHeader")
|
server.TypeDetectionByHeader = !v.GetBool("disableTypeDetectionByHeader")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if v.IsSet("disableImageResolutionCalc") {
|
||||||
|
server.ImageResolutionCal = !v.GetBool("disableImageResolutionCalc")
|
||||||
|
}
|
||||||
|
|
||||||
if v.IsSet("disableExec") {
|
if v.IsSet("disableExec") {
|
||||||
server.EnableExec = !v.GetBool("disableExec")
|
server.EnableExec = !v.GetBool("disableExec")
|
||||||
}
|
}
|
||||||
|
|
@ -444,6 +449,7 @@ func quickSetup(v *viper.Viper, s *storage.Storage) error {
|
||||||
ResizePreview: !v.GetBool("disablePreviewResize"),
|
ResizePreview: !v.GetBool("disablePreviewResize"),
|
||||||
EnableExec: !v.GetBool("disableExec"),
|
EnableExec: !v.GetBool("disableExec"),
|
||||||
TypeDetectionByHeader: !v.GetBool("disableTypeDetectionByHeader"),
|
TypeDetectionByHeader: !v.GetBool("disableTypeDetectionByHeader"),
|
||||||
|
ImageResolutionCal: !v.GetBool("disableImageResolutionCalc"),
|
||||||
}
|
}
|
||||||
|
|
||||||
err = s.Settings.SaveServer(ser)
|
err = s.Settings.SaveServer(ser)
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ type FileOptions struct {
|
||||||
Modify bool
|
Modify bool
|
||||||
Expand bool
|
Expand bool
|
||||||
ReadHeader bool
|
ReadHeader bool
|
||||||
|
CalcImgRes bool
|
||||||
Token string
|
Token string
|
||||||
Checker rules.Checker
|
Checker rules.Checker
|
||||||
Content bool
|
Content bool
|
||||||
|
|
@ -90,13 +91,13 @@ func NewFileInfo(opts *FileOptions) (*FileInfo, error) {
|
||||||
|
|
||||||
if opts.Expand {
|
if opts.Expand {
|
||||||
if file.IsDir {
|
if file.IsDir {
|
||||||
if err := file.readListing(opts.Checker, opts.ReadHeader); err != nil {
|
if err := file.readListing(opts.Checker, opts.ReadHeader, opts.CalcImgRes); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return file, nil
|
return file, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
err = file.detectType(opts.Modify, opts.Content, true)
|
err = file.detectType(opts.Modify, opts.Content, true, opts.CalcImgRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
@ -218,7 +219,7 @@ func (i *FileInfo) RealPath() string {
|
||||||
return i.Path
|
return i.Path
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error {
|
func (i *FileInfo) detectType(modify, saveContent, readHeader bool, calcImgRes bool) error {
|
||||||
if IsNamedPipe(i.Mode) {
|
if IsNamedPipe(i.Mode) {
|
||||||
i.Type = "blob"
|
i.Type = "blob"
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -249,11 +250,13 @@ func (i *FileInfo) detectType(modify, saveContent, readHeader bool) error {
|
||||||
return nil
|
return nil
|
||||||
case strings.HasPrefix(mimetype, "image"):
|
case strings.HasPrefix(mimetype, "image"):
|
||||||
i.Type = "image"
|
i.Type = "image"
|
||||||
resolution, err := calculateImageResolution(i.Fs, i.Path)
|
if calcImgRes {
|
||||||
if err != nil {
|
resolution, err := calculateImageResolution(i.Fs, i.Path)
|
||||||
log.Printf("Error calculating image resolution: %v", err)
|
if err != nil {
|
||||||
} else {
|
log.Printf("Error calculating image resolution: %v", err)
|
||||||
i.Resolution = resolution
|
} else {
|
||||||
|
i.Resolution = resolution
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
case strings.HasSuffix(mimetype, "pdf"):
|
case strings.HasSuffix(mimetype, "pdf"):
|
||||||
|
|
@ -387,7 +390,7 @@ func (i *FileInfo) addSubtitle(fPath string) {
|
||||||
i.Subtitles = append(i.Subtitles, fPath)
|
i.Subtitles = append(i.Subtitles, fPath)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error {
|
func (i *FileInfo) readListing(checker rules.Checker, readHeader bool, calcImgRes bool) error {
|
||||||
afs := &afero.Afero{Fs: i.Fs}
|
afs := &afero.Afero{Fs: i.Fs}
|
||||||
dir, err := afs.ReadDir(i.Path)
|
dir, err := afs.ReadDir(i.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -434,7 +437,7 @@ func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error {
|
||||||
currentDir: dir,
|
currentDir: dir,
|
||||||
}
|
}
|
||||||
|
|
||||||
if !file.IsDir && strings.HasPrefix(mime.TypeByExtension(file.Extension), "image/") {
|
if !file.IsDir && strings.HasPrefix(mime.TypeByExtension(file.Extension), "image/") && calcImgRes {
|
||||||
resolution, err := calculateImageResolution(file.Fs, file.Path)
|
resolution, err := calculateImageResolution(file.Fs, file.Path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error calculating resolution for image %s: %v", file.Path, err)
|
log.Printf("Error calculating resolution for image %s: %v", file.Path, err)
|
||||||
|
|
@ -451,7 +454,7 @@ func (i *FileInfo) readListing(checker rules.Checker, readHeader bool) error {
|
||||||
if isInvalidLink {
|
if isInvalidLink {
|
||||||
file.Type = "invalid_link"
|
file.Type = "invalid_link"
|
||||||
} else {
|
} else {
|
||||||
err := file.detectType(true, false, readHeader)
|
err := file.detectType(true, false, readHeader, calcImgRes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,7 @@ var withHashFile = func(fn handleFunc) handleFunc {
|
||||||
Modify: d.user.Perm.Modify,
|
Modify: d.user.Perm.Modify,
|
||||||
Expand: false,
|
Expand: false,
|
||||||
ReadHeader: d.server.TypeDetectionByHeader,
|
ReadHeader: d.server.TypeDetectionByHeader,
|
||||||
|
CalcImgRes: d.server.TypeDetectionByHeader,
|
||||||
Checker: d,
|
Checker: d,
|
||||||
Token: link.Token,
|
Token: link.Token,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ type Server struct {
|
||||||
ResizePreview bool `json:"resizePreview"`
|
ResizePreview bool `json:"resizePreview"`
|
||||||
EnableExec bool `json:"enableExec"`
|
EnableExec bool `json:"enableExec"`
|
||||||
TypeDetectionByHeader bool `json:"typeDetectionByHeader"`
|
TypeDetectionByHeader bool `json:"typeDetectionByHeader"`
|
||||||
|
ImageResolutionCal bool `json:"imageResolutionCalculation"`
|
||||||
AuthHook string `json:"authHook"`
|
AuthHook string `json:"authHook"`
|
||||||
TokenExpirationTime string `json:"tokenExpirationTime"`
|
TokenExpirationTime string `json:"tokenExpirationTime"`
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ filebrowser config init [flags]
|
||||||
--disablePreviewResize disable resize of image previews
|
--disablePreviewResize disable resize of image previews
|
||||||
--disableThumbnails disable image thumbnails
|
--disableThumbnails disable image thumbnails
|
||||||
--disableTypeDetectionByHeader disables type detection by reading file headers
|
--disableTypeDetectionByHeader disables type detection by reading file headers
|
||||||
|
--disableImageResolutionCalc disables image resolution calculation by reading image files
|
||||||
--fileMode string mode bits that new files are created with (default "0o640")
|
--fileMode string mode bits that new files are created with (default "0o640")
|
||||||
-h, --help help for init
|
-h, --help help for init
|
||||||
--hideDotfiles hide dotfiles
|
--hideDotfiles hide dotfiles
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ filebrowser config set [flags]
|
||||||
--disablePreviewResize disable resize of image previews
|
--disablePreviewResize disable resize of image previews
|
||||||
--disableThumbnails disable image thumbnails
|
--disableThumbnails disable image thumbnails
|
||||||
--disableTypeDetectionByHeader disables type detection by reading file headers
|
--disableTypeDetectionByHeader disables type detection by reading file headers
|
||||||
|
--disableImageResolutionCalc disables image resolution calculation by reading image files
|
||||||
--fileMode string mode bits that new files are created with (default "0o640")
|
--fileMode string mode bits that new files are created with (default "0o640")
|
||||||
-h, --help help for set
|
-h, --help help for set
|
||||||
--hideDotfiles hide dotfiles
|
--hideDotfiles hide dotfiles
|
||||||
|
|
|
||||||
|
|
@ -60,6 +60,7 @@ filebrowser [flags]
|
||||||
--disablePreviewResize disable resize of image previews
|
--disablePreviewResize disable resize of image previews
|
||||||
--disableThumbnails disable image thumbnails
|
--disableThumbnails disable image thumbnails
|
||||||
--disableTypeDetectionByHeader disables type detection by reading file headers
|
--disableTypeDetectionByHeader disables type detection by reading file headers
|
||||||
|
--disableImageResolutionCalc disables image resolution calculation by reading image files
|
||||||
-h, --help help for filebrowser
|
-h, --help help for filebrowser
|
||||||
--imageProcessors int image processors count (default 4)
|
--imageProcessors int image processors count (default 4)
|
||||||
-k, --key string tls key
|
-k, --key string tls key
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue