mirror of
https://github.com/filebrowser/filebrowser.git
synced 2025-07-27 10:20:28 +00:00
88 lines
2.3 KiB
Go
88 lines
2.3 KiB
Go
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 (
|
|
ErrEmptyKey = errors.New("empty key")
|
|
ErrExist = errors.New("the resource already exists")
|
|
ErrNotExist = errors.New("the resource does not exist")
|
|
ErrEmptyPassword = errors.New("password is empty")
|
|
ErrEasyPassword = errors.New("password is too easy")
|
|
ErrEmptyUsername = errors.New("username is empty")
|
|
ErrEmptyRequest = errors.New("empty request")
|
|
ErrScopeIsRelative = errors.New("scope is a relative path")
|
|
ErrInvalidDataType = errors.New("invalid data type")
|
|
ErrIsDirectory = errors.New("file is directory")
|
|
ErrInvalidOption = errors.New("invalid option")
|
|
ErrInvalidAuthMethod = errors.New("invalid auth method")
|
|
ErrPermissionDenied = errors.New("permission denied")
|
|
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 {
|
|
MinimumLength uint
|
|
}
|
|
|
|
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
|
|
}
|