dont reload web config on request

Signed-off-by: jkoberg <jkoberg@owncloud.com>
This commit is contained in:
jkoberg
2023-09-27 11:44:52 +02:00
parent 3b6a2e1afb
commit 2cd6ee361e
2 changed files with 16 additions and 32 deletions

View File

@@ -0,0 +1,5 @@
Bugfix: Don't reload web config
When requesting `config.json` file from the server, web service would reload the file if a path is set. This will remove config entries set via Envvar. Since we want to have the possiblity to set configuration from both sources we removed the reading from file. The file will still be loaded on service startup.
https://github.com/owncloud/ocis/pull/7369

View File

@@ -5,7 +5,6 @@ import (
"fmt"
"net/http"
"net/url"
"os"
"strconv"
"strings"
"time"
@@ -94,42 +93,22 @@ func (p Web) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
func (p Web) getPayload() (payload []byte, err error) {
if p.config.Web.Path == "" {
// render dynamically using config
// render dynamically using config
// build theme url
if themeServer, err := url.Parse(p.config.Web.ThemeServer); err == nil {
p.config.Web.Config.Theme = themeServer.String() + p.config.Web.ThemePath
} else {
p.config.Web.Config.Theme = p.config.Web.ThemePath
}
// make apps render as empty array if it is empty
// TODO remove once https://github.com/golang/go/issues/27589 is fixed
if len(p.config.Web.Config.Apps) == 0 {
p.config.Web.Config.Apps = make([]string, 0)
}
return json.Marshal(p.config.Web.Config)
// build theme url
if themeServer, err := url.Parse(p.config.Web.ThemeServer); err == nil {
p.config.Web.Config.Theme = themeServer.String() + p.config.Web.ThemePath
} else {
p.config.Web.Config.Theme = p.config.Web.ThemePath
}
// try loading from file
if _, err = os.Stat(p.config.Web.Path); os.IsNotExist(err) {
p.logger.Fatal().
Err(err).
Str("config", p.config.Web.Path).
Msg("web config doesn't exist")
// make apps render as empty array if it is empty
// TODO remove once https://github.com/golang/go/issues/27589 is fixed
if len(p.config.Web.Config.Apps) == 0 {
p.config.Web.Config.Apps = make([]string, 0)
}
payload, err = os.ReadFile(p.config.Web.Path)
if err != nil {
p.logger.Fatal().
Err(err).
Str("config", p.config.Web.Path).
Msg("failed to read custom config")
}
return
return json.Marshal(p.config.Web.Config)
}
// Config implements the Service interface.