Merge branch 'master' into feat/viper-config
This commit is contained in:
commit
a05e562fbf
13
CHANGELOG.md
13
CHANGELOG.md
@ -2,6 +2,19 @@
|
||||
|
||||
All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
|
||||
|
||||
## [2.47.0](https://github.com/filebrowser/filebrowser/compare/v2.46.1...v2.47.0) (2025-11-16)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add TUS settings to the command line ([#5556](https://github.com/filebrowser/filebrowser/issues/5556)) ([e24e1f1](https://github.com/filebrowser/filebrowser/commit/e24e1f1abae9e80add620c4ad65660ca1b575a49))
|
||||
* remove importer of v1 config ([#5550](https://github.com/filebrowser/filebrowser/issues/5550)) ([ceb5e72](https://github.com/filebrowser/filebrowser/commit/ceb5e723f3ee2c966bb561a804015246450280ca))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* exit 0 when gracefully shutting down ([#5555](https://github.com/filebrowser/filebrowser/issues/5555)) ([5de4099](https://github.com/filebrowser/filebrowser/commit/5de4099cba2cf012d4a213c8eb29c412fc72c151))
|
||||
|
||||
## [2.46.1](https://github.com/filebrowser/filebrowser/compare/v2.46.0...v2.46.1) (2025-11-15)
|
||||
|
||||
|
||||
|
||||
@ -49,6 +49,7 @@ tasks:
|
||||
cmds:
|
||||
- task: docs:cli:generate
|
||||
- git add www/docs/cli
|
||||
- "git commit -m 'chore(docs): update CLI documentation'"
|
||||
- task: release:dry-run
|
||||
- task: release:make
|
||||
|
||||
|
||||
@ -48,13 +48,18 @@ func addConfigFlags(flags *pflag.FlagSet) {
|
||||
flags.String("branding.name", "", "replace 'File Browser' by this name")
|
||||
flags.String("branding.theme", "", "set the theme")
|
||||
flags.String("branding.color", "", "set the theme color")
|
||||
|
||||
flags.String("branding.files", "", "path to directory with images and custom styles")
|
||||
flags.Bool("branding.disableExternal", false, "disable external links such as GitHub links")
|
||||
flags.Bool("branding.disableUsedPercentage", false, "disable used disk percentage graph")
|
||||
|
||||
// NB: these are string so they can be presented as octal in the help text
|
||||
// as that's the conventional representation for modes in Unix.
|
||||
flags.String("fileMode", fmt.Sprintf("%O", settings.DefaultFileMode), "Mode bits that new files are created with")
|
||||
flags.String("dirMode", fmt.Sprintf("%O", settings.DefaultDirMode), "Mode bits that new directories are created with")
|
||||
flags.String("fileMode", fmt.Sprintf("%O", settings.DefaultFileMode), "mode bits that new files are created with")
|
||||
flags.String("dirMode", fmt.Sprintf("%O", settings.DefaultDirMode), "mode bits that new directories are created with")
|
||||
|
||||
flags.Uint64("tus.chunkSize", settings.DefaultTusChunkSize, "the tus chunk size")
|
||||
flags.Uint16("tus.retryCount", settings.DefaultTusRetryCount, "the tus retry count")
|
||||
}
|
||||
|
||||
func getAuthMethod(v *viper.Viper, defaults ...interface{}) (settings.AuthMethod, map[string]interface{}, error) {
|
||||
@ -196,6 +201,9 @@ func printSettings(ser *settings.Server, set *settings.Settings, auther auth.Aut
|
||||
fmt.Fprintf(w, "\tTLS Cert:\t%s\n", ser.TLSCert)
|
||||
fmt.Fprintf(w, "\tTLS Key:\t%s\n", ser.TLSKey)
|
||||
fmt.Fprintf(w, "\tExec Enabled:\t%t\n", ser.EnableExec)
|
||||
fmt.Fprintln(w, "\nTUS:")
|
||||
fmt.Fprintf(w, "\tChunk size:\t%d\n", set.Tus.ChunkSize)
|
||||
fmt.Fprintf(w, "\tRetry count:\t%d\n", set.Tus.RetryCount)
|
||||
fmt.Fprintln(w, "\nDefaults:")
|
||||
fmt.Fprintf(w, "\tScope:\t%s\n", set.Defaults.Scope)
|
||||
fmt.Fprintf(w, "\tHideDotfiles:\t%t\n", set.Defaults.HideDotfiles)
|
||||
|
||||
@ -50,6 +50,10 @@ override the options.`,
|
||||
Theme: v.GetString("branding.theme"),
|
||||
Files: v.GetString("branding.files"),
|
||||
},
|
||||
Tus: settings.Tus{
|
||||
ChunkSize: v.GetUint64("tus.chunkSize"),
|
||||
RetryCount: v.GetUint16("tus.retryCount"),
|
||||
},
|
||||
}
|
||||
|
||||
s.FileMode, err = parseFileMode(v.GetString("fileMode"))
|
||||
|
||||
@ -81,6 +81,10 @@ you want to change. Other options will remain unchanged.`,
|
||||
set.FileMode, err = parseFileMode(v.GetString(key))
|
||||
case "dirmode":
|
||||
set.DirMode, err = parseFileMode(v.GetString(key))
|
||||
case "tus.chunksize":
|
||||
set.Tus.ChunkSize = v.GetUint64(key)
|
||||
case "tus.retrycount":
|
||||
set.Tus.RetryCount = v.GetUint16(key)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
|
||||
14
cmd/root.go
14
cmd/root.go
@ -24,7 +24,6 @@ import (
|
||||
|
||||
"github.com/filebrowser/filebrowser/v2/auth"
|
||||
"github.com/filebrowser/filebrowser/v2/diskcache"
|
||||
fbErrors "github.com/filebrowser/filebrowser/v2/errors"
|
||||
"github.com/filebrowser/filebrowser/v2/frontend"
|
||||
fbhttp "github.com/filebrowser/filebrowser/v2/http"
|
||||
"github.com/filebrowser/filebrowser/v2/img"
|
||||
@ -250,18 +249,7 @@ user created with the credentials from options "username" and "password".`,
|
||||
}
|
||||
log.Println("Graceful shutdown complete.")
|
||||
|
||||
switch sig {
|
||||
case syscall.SIGHUP:
|
||||
d.err = fbErrors.ErrSighup
|
||||
case syscall.SIGINT:
|
||||
d.err = fbErrors.ErrSigint
|
||||
case syscall.SIGQUIT:
|
||||
d.err = fbErrors.ErrSigquit
|
||||
case syscall.SIGTERM:
|
||||
d.err = fbErrors.ErrSigTerm
|
||||
}
|
||||
|
||||
return d.err
|
||||
return nil
|
||||
}, pythonConfig{allowNoDB: true}),
|
||||
}
|
||||
|
||||
|
||||
@ -137,7 +137,6 @@ type pythonConfig struct {
|
||||
type pythonData struct {
|
||||
hadDB bool
|
||||
store *storage.Storage
|
||||
err error
|
||||
}
|
||||
|
||||
func python(fn pythonFunc, cfg pythonConfig) cobraFunc {
|
||||
|
||||
@ -3,15 +3,6 @@ package errors
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
const (
|
||||
ExitCodeSigTerm = 128 + int(syscall.SIGTERM)
|
||||
ExitCodeSighup = 128 + int(syscall.SIGHUP)
|
||||
ExitCodeSigint = 128 + int(syscall.SIGINT)
|
||||
ExitCodeSigquit = 128 + int(syscall.SIGQUIT)
|
||||
)
|
||||
|
||||
var (
|
||||
@ -31,10 +22,6 @@ var (
|
||||
ErrInvalidRequestParams = errors.New("invalid request params")
|
||||
ErrSourceIsParent = errors.New("source is parent")
|
||||
ErrRootUserDeletion = errors.New("user with id 1 can't be deleted")
|
||||
ErrSigTerm = errors.New("exit on signal: sigterm")
|
||||
ErrSighup = errors.New("exit on signal: sighup")
|
||||
ErrSigint = errors.New("exit on signal: sigint")
|
||||
ErrSigquit = errors.New("exit on signal: sigquit")
|
||||
)
|
||||
|
||||
type ErrShortPassword struct {
|
||||
@ -44,44 +31,3 @@ type ErrShortPassword struct {
|
||||
func (e ErrShortPassword) Error() string {
|
||||
return fmt.Sprintf("password is too short, minimum length is %d", e.MinimumLength)
|
||||
}
|
||||
|
||||
// GetExitCode returns the exit code for a given error.
|
||||
func GetExitCode(err error) int {
|
||||
if err == nil {
|
||||
return 0
|
||||
}
|
||||
|
||||
exitCodeMap := map[error]int{
|
||||
ErrSigTerm: ExitCodeSigTerm,
|
||||
ErrSighup: ExitCodeSighup,
|
||||
ErrSigint: ExitCodeSigint,
|
||||
ErrSigquit: ExitCodeSigquit,
|
||||
}
|
||||
|
||||
for e, code := range exitCodeMap {
|
||||
if errors.Is(err, e) {
|
||||
return code
|
||||
}
|
||||
}
|
||||
|
||||
if exitErr, ok := err.(interface{ ExitCode() int }); ok {
|
||||
return exitErr.ExitCode()
|
||||
}
|
||||
|
||||
var pathErr *os.PathError
|
||||
if errors.As(err, &pathErr) {
|
||||
return 1
|
||||
}
|
||||
|
||||
var syscallErr *os.SyscallError
|
||||
if errors.As(err, &syscallErr) {
|
||||
return 1
|
||||
}
|
||||
|
||||
var errno syscall.Errno
|
||||
if errors.As(err, &errno) {
|
||||
return 1
|
||||
}
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
3
main.go
3
main.go
@ -4,11 +4,10 @@ import (
|
||||
"os"
|
||||
|
||||
"github.com/filebrowser/filebrowser/v2/cmd"
|
||||
"github.com/filebrowser/filebrowser/v2/errors"
|
||||
)
|
||||
|
||||
func main() {
|
||||
if err := cmd.Execute(); err != nil {
|
||||
os.Exit(errors.GetExitCode(err))
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
@ -34,12 +34,12 @@ filebrowser config init [flags]
|
||||
--commands strings a list of the commands a user can execute
|
||||
--create-user-dir generate user's home directory automatically
|
||||
--dateFormat use date format (true for absolute time, false for relative)
|
||||
--dir-mode string Mode bits that new directories are created with (default "0o750")
|
||||
--dir-mode string mode bits that new directories are created with (default "0o750")
|
||||
--disable-exec disables Command Runner feature (default true)
|
||||
--disable-preview-resize disable resize of image previews
|
||||
--disable-thumbnails disable image thumbnails
|
||||
--disable-type-detection-by-header disables type detection by reading file headers
|
||||
--file-mode string Mode bits that new files are created with (default "0o640")
|
||||
--file-mode string mode bits that new files are created with (default "0o640")
|
||||
-h, --help help for init
|
||||
--hide-login-button hide login button from public pages
|
||||
--hideDotfiles hide dotfiles
|
||||
@ -71,6 +71,8 @@ filebrowser config init [flags]
|
||||
--sorting.asc sorting by ascending order
|
||||
--sorting.by string sorting mode (name, size or modified) (default "name")
|
||||
--token-expiration-time string user session timeout (default "2h")
|
||||
--tus.chunkSize uint the tus chunk size (default 10485760)
|
||||
--tus.retryCount uint16 the tus retry count (default 5)
|
||||
--viewMode string view mode for users (default "list")
|
||||
```
|
||||
|
||||
|
||||
@ -31,12 +31,12 @@ filebrowser config set [flags]
|
||||
--commands strings a list of the commands a user can execute
|
||||
--create-user-dir generate user's home directory automatically
|
||||
--dateFormat use date format (true for absolute time, false for relative)
|
||||
--dir-mode string Mode bits that new directories are created with (default "0o750")
|
||||
--dir-mode string mode bits that new directories are created with (default "0o750")
|
||||
--disable-exec disables Command Runner feature (default true)
|
||||
--disable-preview-resize disable resize of image previews
|
||||
--disable-thumbnails disable image thumbnails
|
||||
--disable-type-detection-by-header disables type detection by reading file headers
|
||||
--file-mode string Mode bits that new files are created with (default "0o640")
|
||||
--file-mode string mode bits that new files are created with (default "0o640")
|
||||
-h, --help help for set
|
||||
--hide-login-button hide login button from public pages
|
||||
--hideDotfiles hide dotfiles
|
||||
@ -68,6 +68,8 @@ filebrowser config set [flags]
|
||||
--sorting.asc sorting by ascending order
|
||||
--sorting.by string sorting mode (name, size or modified) (default "name")
|
||||
--token-expiration-time string user session timeout (default "2h")
|
||||
--tus.chunkSize uint the tus chunk size (default 10485760)
|
||||
--tus.retryCount uint16 the tus retry count (default 5)
|
||||
--viewMode string view mode for users (default "list")
|
||||
```
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user