]> source.dussan.org Git - gitea.git/commitdiff
Unified custom config creation (#16012)
authorKN4CK3R <KN4CK3R@users.noreply.github.com>
Sat, 29 May 2021 18:44:14 +0000 (20:44 +0200)
committerGitHub <noreply@github.com>
Sat, 29 May 2021 18:44:14 +0000 (19:44 +0100)
* Unified custom config creation.

* Fixed log message.

Co-authored-by: techknowlogick <techknowlogick@gitea.io>
cmd/web.go
modules/setting/lfs.go
modules/setting/setting.go

index 3a5c36833b272df3f7ec7115b640fc24215720bf..9c7d493339f04114bc81848c7cf2688c4f74d497 100644 (file)
@@ -16,7 +16,6 @@ import (
        "code.gitea.io/gitea/modules/graceful"
        "code.gitea.io/gitea/modules/log"
        "code.gitea.io/gitea/modules/setting"
-       "code.gitea.io/gitea/modules/util"
        "code.gitea.io/gitea/routers"
        "code.gitea.io/gitea/routers/routes"
 
@@ -152,19 +151,6 @@ func setPort(port string) error {
        case setting.FCGI:
        case setting.FCGIUnix:
        default:
-               // Save LOCAL_ROOT_URL if port changed
-               cfg := ini.Empty()
-               isFile, err := util.IsFile(setting.CustomConf)
-               if err != nil {
-                       log.Fatal("Unable to check if %s is a file", err)
-               }
-               if isFile {
-                       // Keeps custom settings if there is already something.
-                       if err := cfg.Append(setting.CustomConf); err != nil {
-                               return fmt.Errorf("Failed to load custom conf '%s': %v", setting.CustomConf, err)
-                       }
-               }
-
                defaultLocalURL := string(setting.Protocol) + "://"
                if setting.HTTPAddr == "0.0.0.0" {
                        defaultLocalURL += "localhost"
@@ -173,10 +159,10 @@ func setPort(port string) error {
                }
                defaultLocalURL += ":" + setting.HTTPPort + "/"
 
-               cfg.Section("server").Key("LOCAL_ROOT_URL").SetValue(defaultLocalURL)
-               if err := cfg.SaveTo(setting.CustomConf); err != nil {
-                       return fmt.Errorf("Error saving generated LOCAL_ROOT_URL to custom config: %v", err)
-               }
+               // Save LOCAL_ROOT_URL if port changed
+               setting.CreateOrAppendToCustomConf(func(cfg *ini.File) {
+                       cfg.Section("server").Key("LOCAL_ROOT_URL").SetValue(defaultLocalURL)
+               })
        }
        return nil
 }
index ab475bbeb4b314ec37c5faed521832ce414f2f30..38c656fc298589cf160ed3b467b45407a0b6fab8 100644 (file)
@@ -6,14 +6,11 @@ package setting
 
 import (
        "encoding/base64"
-       "os"
-       "path/filepath"
        "time"
 
        "code.gitea.io/gitea/modules/generate"
        "code.gitea.io/gitea/modules/git"
        "code.gitea.io/gitea/modules/log"
-       "code.gitea.io/gitea/modules/util"
 
        ini "gopkg.in/ini.v1"
 )
@@ -64,27 +61,9 @@ func newLFSService() {
                        }
 
                        // Save secret
-                       cfg := ini.Empty()
-                       isFile, err := util.IsFile(CustomConf)
-                       if err != nil {
-                               log.Error("Unable to check if %s is a file. Error: %v", CustomConf, err)
-                       }
-                       if isFile {
-                               // Keeps custom settings if there is already something.
-                               if err := cfg.Append(CustomConf); err != nil {
-                                       log.Error("Failed to load custom conf '%s': %v", CustomConf, err)
-                               }
-                       }
-
-                       cfg.Section("server").Key("LFS_JWT_SECRET").SetValue(LFS.JWTSecretBase64)
-
-                       if err := os.MkdirAll(filepath.Dir(CustomConf), os.ModePerm); err != nil {
-                               log.Fatal("Failed to create '%s': %v", CustomConf, err)
-                       }
-                       if err := cfg.SaveTo(CustomConf); err != nil {
-                               log.Fatal("Error saving generated JWT Secret to custom config: %v", err)
-                               return
-                       }
+                       CreateOrAppendToCustomConf(func(cfg *ini.File) {
+                               cfg.Section("server").Key("LFS_JWT_SECRET").SetValue(LFS.JWTSecretBase64)
+                       })
                }
        }
 }
index ec8e64578bf91fbd3cc244756103f453a38bc5e4..c16520572d357d41b2a079018a8267e32e617c9d 100644 (file)
@@ -793,27 +793,10 @@ func NewContext() {
                                log.Fatal("error generating JWT secret: %v", err)
                                return
                        }
-                       cfg := ini.Empty()
-                       isFile, err := util.IsFile(CustomConf)
-                       if err != nil {
-                               log.Error("Unable to check if %s is a file. Error: %v", CustomConf, err)
-                       }
-                       if isFile {
-                               if err := cfg.Append(CustomConf); err != nil {
-                                       log.Error("failed to load custom conf %s: %v", CustomConf, err)
-                                       return
-                               }
-                       }
-                       cfg.Section("oauth2").Key("JWT_SECRET").SetValue(OAuth2.JWTSecretBase64)
 
-                       if err := os.MkdirAll(filepath.Dir(CustomConf), os.ModePerm); err != nil {
-                               log.Fatal("failed to create '%s': %v", CustomConf, err)
-                               return
-                       }
-                       if err := cfg.SaveTo(CustomConf); err != nil {
-                               log.Fatal("error saving generating JWT secret to custom config: %v", err)
-                               return
-                       }
+                       CreateOrAppendToCustomConf(func(cfg *ini.File) {
+                               cfg.Section("oauth2").Key("JWT_SECRET").SetValue(OAuth2.JWTSecretBase64)
+                       })
                }
        }
 
@@ -1075,26 +1058,9 @@ func loadOrGenerateInternalToken(sec *ini.Section) string {
                }
 
                // Save secret
-               cfgSave := ini.Empty()
-               isFile, err := util.IsFile(CustomConf)
-               if err != nil {
-                       log.Error("Unable to check if %s is a file. Error: %v", CustomConf, err)
-               }
-               if isFile {
-                       // Keeps custom settings if there is already something.
-                       if err := cfgSave.Append(CustomConf); err != nil {
-                               log.Error("Failed to load custom conf '%s': %v", CustomConf, err)
-                       }
-               }
-
-               cfgSave.Section("security").Key("INTERNAL_TOKEN").SetValue(token)
-
-               if err := os.MkdirAll(filepath.Dir(CustomConf), os.ModePerm); err != nil {
-                       log.Fatal("Failed to create '%s': %v", CustomConf, err)
-               }
-               if err := cfgSave.SaveTo(CustomConf); err != nil {
-                       log.Fatal("Error saving generated INTERNAL_TOKEN to custom config: %v", err)
-               }
+               CreateOrAppendToCustomConf(func(cfg *ini.File) {
+                       cfg.Section("security").Key("INTERNAL_TOKEN").SetValue(token)
+               })
        }
        return token
 }
@@ -1160,6 +1126,32 @@ func MakeManifestData(appName string, appURL string, absoluteAssetURL string) []
        return bytes
 }
 
+// CreateOrAppendToCustomConf creates or updates the custom config.
+// Use the callback to set individual values.
+func CreateOrAppendToCustomConf(callback func(cfg *ini.File)) {
+       cfg := ini.Empty()
+       isFile, err := util.IsFile(CustomConf)
+       if err != nil {
+               log.Error("Unable to check if %s is a file. Error: %v", CustomConf, err)
+       }
+       if isFile {
+               if err := cfg.Append(CustomConf); err != nil {
+                       log.Error("failed to load custom conf %s: %v", CustomConf, err)
+                       return
+               }
+       }
+
+       callback(cfg)
+
+       if err := os.MkdirAll(filepath.Dir(CustomConf), os.ModePerm); err != nil {
+               log.Fatal("failed to create '%s': %v", CustomConf, err)
+               return
+       }
+       if err := cfg.SaveTo(CustomConf); err != nil {
+               log.Fatal("error saving to custom config: %v", err)
+       }
+}
+
 // NewServices initializes the services
 func NewServices() {
        InitDBConfig()