aboutsummaryrefslogtreecommitdiffstats
path: root/modules/setting
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2022-06-06 15:43:17 +0100
committerGitHub <noreply@github.com>2022-06-06 10:43:17 -0400
commitc48706ecde14a536e77a5340475f1a66b274c0aa (patch)
treefe18adc1dbdfa2a83c5f046f768b4434916d8ae1 /modules/setting
parent26095115f4ae90e3fdc6ab695978efd16e317f75 (diff)
downloadgitea-c48706ecde14a536e77a5340475f1a66b274c0aa.tar.gz
gitea-c48706ecde14a536e77a5340475f1a66b274c0aa.zip
Make AppDataPath absolute against the AppWorkPath if it is not (#19815)
* Make AppDataPath absolute against the AppWorkPath if it is not There are multiple repeated issues whereby a non-absolute provided APP_DATA_PATH causes strange issues. This PR simply absolutes the APP_DATA_PATH against the AppWorkPath if its not so. It also ensures that AppWorkPath is also always absolute. Ref #19367 Signed-off-by: Andrew Thornton <art27@cantab.net> * Add logging Signed-off-by: Andrew Thornton <art27@cantab.net> * absolute workpath against pwd instead of app path first Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'modules/setting')
-rw-r--r--modules/setting/setting.go16
1 files changed, 16 insertions, 0 deletions
diff --git a/modules/setting/setting.go b/modules/setting/setting.go
index 5e317b39ea..88f306b3fa 100644
--- a/modules/setting/setting.go
+++ b/modules/setting/setting.go
@@ -478,6 +478,18 @@ func getWorkPath(appPath string) string {
workPath = appPath[:i]
}
}
+ workPath = strings.ReplaceAll(workPath, "\\", "/")
+ if !filepath.IsAbs(workPath) {
+ log.Info("Provided work path %s is not absolute - will be made absolute against the current working directory", workPath)
+
+ absPath, err := filepath.Abs(workPath)
+ if err != nil {
+ log.Error("Unable to absolute %s against the current working directory %v. Will absolute against the AppPath %s", workPath, err, appPath)
+ workPath = filepath.Join(appPath, workPath)
+ } else {
+ workPath = absPath
+ }
+ }
return strings.ReplaceAll(workPath, "\\", "/")
}
@@ -769,6 +781,10 @@ func loadFromConf(allowEmpty bool, extraConfig string) {
StaticRootPath = sec.Key("STATIC_ROOT_PATH").MustString(StaticRootPath)
StaticCacheTime = sec.Key("STATIC_CACHE_TIME").MustDuration(6 * time.Hour)
AppDataPath = sec.Key("APP_DATA_PATH").MustString(path.Join(AppWorkPath, "data"))
+ if !filepath.IsAbs(AppDataPath) {
+ log.Info("The provided APP_DATA_PATH: %s is not absolute - it will be made absolute against the work path: %s", AppDataPath, AppWorkPath)
+ AppDataPath = filepath.ToSlash(filepath.Join(AppWorkPath, AppDataPath))
+ }
EnableGzip = sec.Key("ENABLE_GZIP").MustBool()
EnablePprof = sec.Key("ENABLE_PPROF").MustBool(false)