fix: options should only override if set

pull/5560/head
Henrique Dias 2025-11-17 09:58:27 +01:00
parent f576d38a7e
commit 420adea7e6
No known key found for this signature in database
1 changed files with 46 additions and 39 deletions

View File

@ -271,48 +271,64 @@ func getServerSettings(v *viper.Viper, st *storage.Storage) (*settings.Server, e
return nil, err
}
if val, set := vGetStringIsSet(v, "root"); set {
server.Root = val
}
if val, set := vGetStringIsSet(v, "baseURL"); set {
server.BaseURL = val
}
if val, set := vGetStringIsSet(v, "log"); set {
server.Log = val
}
isSocketSet := false
isAddrSet := false
if val, set := vGetStringIsSet(v, "address"); set {
server.Address = val
isAddrSet = isAddrSet || set
if v.IsSet("address") {
server.Address = v.GetString("address")
isAddrSet = true
}
if val, set := vGetStringIsSet(v, "port"); set {
server.Port = val
isAddrSet = isAddrSet || set
if v.IsSet("log") {
server.Log = v.GetString("log")
}
if val, set := vGetStringIsSet(v, "key"); set {
server.TLSKey = val
isAddrSet = isAddrSet || set
if v.IsSet("port") {
server.Port = v.GetString("port")
isAddrSet = true
}
if val, set := vGetStringIsSet(v, "cert"); set {
server.TLSCert = val
isAddrSet = isAddrSet || set
if v.IsSet("cert") {
server.TLSCert = v.GetString("cert")
isAddrSet = true
}
if val, set := vGetStringIsSet(v, "socket"); set {
server.Socket = val
isSocketSet = isSocketSet || set
if v.IsSet("key") {
server.TLSKey = v.GetString("key")
isAddrSet = true
}
if val, set := vGetStringIsSet(v, "tokenExpirationTime"); set {
server.TokenExpirationTime = val
if v.IsSet("root") {
server.Root = v.GetString("root")
}
if v.IsSet("socket") {
server.Socket = v.GetString("socket")
isSocketSet = true
}
if v.IsSet("baseURL") {
server.BaseURL = v.GetString("baseURL")
}
if v.IsSet("tokenExpirationTime") {
server.TokenExpirationTime = v.GetString("tokenExpirationTime")
}
if v.IsSet("disableThumbnails") {
server.EnableThumbnails = !v.GetBool("disableThumbnails")
}
if v.IsSet("disablePreviewResize") {
server.ResizePreview = !v.GetBool("disablePreviewResize")
}
if v.IsSet("disableTypeDetectionByHeader") {
server.TypeDetectionByHeader = !v.GetBool("disableTypeDetectionByHeader")
}
if v.IsSet("disableExec") {
server.EnableExec = !v.GetBool("disableExec")
}
if isAddrSet && isSocketSet {
@ -324,11 +340,6 @@ func getServerSettings(v *viper.Viper, st *storage.Storage) (*settings.Server, e
server.Socket = ""
}
server.EnableThumbnails = !v.GetBool("disableThumbnails")
server.ResizePreview = !v.GetBool("disablePreviewResize")
server.TypeDetectionByHeader = !v.GetBool("disableTypeDetectionByHeader")
server.EnableExec = !v.GetBool("disableExec")
if server.EnableExec {
log.Println("WARNING: Command Runner feature enabled!")
log.Println("WARNING: This feature has known security vulnerabilities and should not")
@ -339,10 +350,6 @@ func getServerSettings(v *viper.Viper, st *storage.Storage) (*settings.Server, e
return server, nil
}
func vGetStringIsSet(v *viper.Viper, key string) (string, bool) {
return v.GetString(key), v.IsSet(key)
}
func setupLog(logMethod string) {
switch logMethod {
case "stdout":
@ -399,7 +406,7 @@ func quickSetup(d pythonData) error {
}
var err error
if _, noauth := vGetStringIsSet(d.viper, "noauth"); noauth {
if d.viper.GetBool("noauth") {
set.AuthMethod = auth.MethodNoAuth
err = d.store.Auth.Save(&auth.NoAuth{})
} else {