mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Add default values for settings (#455)
* add default values for settings * more default values * more default settings and labels resource * mv locale to options
This commit is contained in:
		@@ -843,6 +843,8 @@ func getRepoInitFile(tp, name string) ([]byte, error) {
 | 
				
			|||||||
		return options.Gitignore(cleanedName)
 | 
							return options.Gitignore(cleanedName)
 | 
				
			||||||
	case "license":
 | 
						case "license":
 | 
				
			||||||
		return options.License(cleanedName)
 | 
							return options.License(cleanedName)
 | 
				
			||||||
 | 
						case "label":
 | 
				
			||||||
 | 
							return options.Labels(cleanedName)
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
		return []byte{}, fmt.Errorf("Invalid init file type")
 | 
							return []byte{}, fmt.Errorf("Invalid init file type")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,6 +76,11 @@ func License(name string) ([]byte, error) {
 | 
				
			|||||||
	return fileFromDir(path.Join("license", name))
 | 
						return fileFromDir(path.Join("license", name))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Labels eads the content of a specific labels from static or custom path.
 | 
				
			||||||
 | 
					func Labels(name string) ([]byte, error) {
 | 
				
			||||||
 | 
						return fileFromDir(path.Join("label", name))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// fileFromDir is a helper to read files from static or custom path.
 | 
					// fileFromDir is a helper to read files from static or custom path.
 | 
				
			||||||
func fileFromDir(name string) ([]byte, error) {
 | 
					func fileFromDir(name string) ([]byte, error) {
 | 
				
			||||||
	customPath := path.Join(setting.CustomPath, "options", name)
 | 
						customPath := path.Join(setting.CustomPath, "options", name)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -72,6 +72,11 @@ func License(name string) ([]byte, error) {
 | 
				
			|||||||
	return fileFromDir(path.Join("license", name))
 | 
						return fileFromDir(path.Join("license", name))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Labels eads the content of a specific labels from static or custom path.
 | 
				
			||||||
 | 
					func Labels(name string) ([]byte, error) {
 | 
				
			||||||
 | 
						return fileFromDir(path.Join("label", name))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// fileFromDir is a helper to read files from bindata or custom path.
 | 
					// fileFromDir is a helper to read files from bindata or custom path.
 | 
				
			||||||
func fileFromDir(name string) ([]byte, error) {
 | 
					func fileFromDir(name string) ([]byte, error) {
 | 
				
			||||||
	customPath := path.Join(setting.CustomPath, "options", name)
 | 
						customPath := path.Join(setting.CustomPath, "options", name)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										10
									
								
								modules/setting/defaults.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								modules/setting/defaults.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					package setting
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var (
 | 
				
			||||||
 | 
						defaultLangs     = strings.Split("en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,ja-JP,es-ES,pt-BR,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR", ",")
 | 
				
			||||||
 | 
						defaultLangNames = strings.Split("English,简体中文,繁體中文(香港),繁體中文(台湾),Deutsch,Français,Nederlands,Latviešu,Русский,日本語,Español,Português do Brasil,Polski,български,Italiano,Suomalainen,Türkçe,čeština,Српски,Svenska,한국어", ",")
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
@@ -104,16 +104,21 @@ var (
 | 
				
			|||||||
	UseTiDB       bool
 | 
						UseTiDB       bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Webhook settings
 | 
						// Webhook settings
 | 
				
			||||||
	Webhook struct {
 | 
						Webhook = struct {
 | 
				
			||||||
		QueueLength    int
 | 
							QueueLength    int
 | 
				
			||||||
		DeliverTimeout int
 | 
							DeliverTimeout int
 | 
				
			||||||
		SkipTLSVerify  bool
 | 
							SkipTLSVerify  bool
 | 
				
			||||||
		Types          []string
 | 
							Types          []string
 | 
				
			||||||
		PagingNum      int
 | 
							PagingNum      int
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							QueueLength:    1000,
 | 
				
			||||||
 | 
							DeliverTimeout: 5,
 | 
				
			||||||
 | 
							SkipTLSVerify:  false,
 | 
				
			||||||
 | 
							PagingNum:      10,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Repository settings
 | 
						// Repository settings
 | 
				
			||||||
	Repository struct {
 | 
						Repository = struct {
 | 
				
			||||||
		AnsiCharset            string
 | 
							AnsiCharset            string
 | 
				
			||||||
		ForcePrivate           bool
 | 
							ForcePrivate           bool
 | 
				
			||||||
		MaxCreationLimit       int
 | 
							MaxCreationLimit       int
 | 
				
			||||||
@@ -136,12 +141,44 @@ var (
 | 
				
			|||||||
			FileMaxSize  int64
 | 
								FileMaxSize  int64
 | 
				
			||||||
			MaxFiles     int
 | 
								MaxFiles     int
 | 
				
			||||||
		} `ini:"-"`
 | 
							} `ini:"-"`
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							AnsiCharset:            "",
 | 
				
			||||||
 | 
							ForcePrivate:           false,
 | 
				
			||||||
 | 
							MaxCreationLimit:       -1,
 | 
				
			||||||
 | 
							MirrorQueueLength:      1000,
 | 
				
			||||||
 | 
							PullRequestQueueLength: 1000,
 | 
				
			||||||
 | 
							PreferredLicenses:      []string{"Apache License 2.0,MIT License"},
 | 
				
			||||||
 | 
							DisableHTTPGit:         false,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Repository editor settings
 | 
				
			||||||
 | 
							Editor: struct {
 | 
				
			||||||
 | 
								LineWrapExtensions   []string
 | 
				
			||||||
 | 
								PreviewableFileModes []string
 | 
				
			||||||
 | 
							}{
 | 
				
			||||||
 | 
								LineWrapExtensions:   strings.Split(".txt,.md,.markdown,.mdown,.mkd,", ","),
 | 
				
			||||||
 | 
								PreviewableFileModes: []string{"markdown"},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							// Repository upload settings
 | 
				
			||||||
 | 
							Upload: struct {
 | 
				
			||||||
 | 
								Enabled      bool
 | 
				
			||||||
 | 
								TempPath     string
 | 
				
			||||||
 | 
								AllowedTypes []string `delim:"|"`
 | 
				
			||||||
 | 
								FileMaxSize  int64
 | 
				
			||||||
 | 
								MaxFiles     int
 | 
				
			||||||
 | 
							}{
 | 
				
			||||||
 | 
								Enabled:      true,
 | 
				
			||||||
 | 
								TempPath:     "data/tmp/uploads",
 | 
				
			||||||
 | 
								AllowedTypes: []string{},
 | 
				
			||||||
 | 
								FileMaxSize:  3,
 | 
				
			||||||
 | 
								MaxFiles:     5,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	RepoRootPath string
 | 
						RepoRootPath string
 | 
				
			||||||
	ScriptType   string
 | 
						ScriptType   = "bash"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// UI settings
 | 
						// UI settings
 | 
				
			||||||
	UI struct {
 | 
						UI = struct {
 | 
				
			||||||
		ExplorePagingNum   int
 | 
							ExplorePagingNum   int
 | 
				
			||||||
		IssuePagingNum     int
 | 
							IssuePagingNum     int
 | 
				
			||||||
		FeedMaxCommitNum   int
 | 
							FeedMaxCommitNum   int
 | 
				
			||||||
@@ -157,13 +194,38 @@ var (
 | 
				
			|||||||
		User struct {
 | 
							User struct {
 | 
				
			||||||
			RepoPagingNum int
 | 
								RepoPagingNum int
 | 
				
			||||||
		} `ini:"ui.user"`
 | 
							} `ini:"ui.user"`
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							ExplorePagingNum:   20,
 | 
				
			||||||
 | 
							IssuePagingNum:     10,
 | 
				
			||||||
 | 
							FeedMaxCommitNum:   5,
 | 
				
			||||||
 | 
							ThemeColorMetaTag:  `#6cc644`,
 | 
				
			||||||
 | 
							MaxDisplayFileSize: 8388608,
 | 
				
			||||||
 | 
							Admin: struct {
 | 
				
			||||||
 | 
								UserPagingNum   int
 | 
				
			||||||
 | 
								RepoPagingNum   int
 | 
				
			||||||
 | 
								NoticePagingNum int
 | 
				
			||||||
 | 
								OrgPagingNum    int
 | 
				
			||||||
 | 
							}{
 | 
				
			||||||
 | 
								UserPagingNum:   50,
 | 
				
			||||||
 | 
								RepoPagingNum:   50,
 | 
				
			||||||
 | 
								NoticePagingNum: 25,
 | 
				
			||||||
 | 
								OrgPagingNum:    50,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							User: struct {
 | 
				
			||||||
 | 
								RepoPagingNum int
 | 
				
			||||||
 | 
							}{
 | 
				
			||||||
 | 
								RepoPagingNum: 15,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Markdown sttings
 | 
						// Markdown sttings
 | 
				
			||||||
	Markdown struct {
 | 
						Markdown = struct {
 | 
				
			||||||
		EnableHardLineBreak bool
 | 
							EnableHardLineBreak bool
 | 
				
			||||||
		CustomURLSchemes    []string `ini:"CUSTOM_URL_SCHEMES"`
 | 
							CustomURLSchemes    []string `ini:"CUSTOM_URL_SCHEMES"`
 | 
				
			||||||
		FileExtensions      []string
 | 
							FileExtensions      []string
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							EnableHardLineBreak: false,
 | 
				
			||||||
 | 
							FileExtensions:      strings.Split(".md,.markdown,.mdown,.mkd", ","),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Picture settings
 | 
						// Picture settings
 | 
				
			||||||
@@ -198,7 +260,7 @@ var (
 | 
				
			|||||||
	CSRFCookieName = "_csrf"
 | 
						CSRFCookieName = "_csrf"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Cron tasks
 | 
						// Cron tasks
 | 
				
			||||||
	Cron struct {
 | 
						Cron = struct {
 | 
				
			||||||
		UpdateMirror struct {
 | 
							UpdateMirror struct {
 | 
				
			||||||
			Enabled    bool
 | 
								Enabled    bool
 | 
				
			||||||
			RunAtStart bool
 | 
								RunAtStart bool
 | 
				
			||||||
@@ -216,10 +278,37 @@ var (
 | 
				
			|||||||
			RunAtStart bool
 | 
								RunAtStart bool
 | 
				
			||||||
			Schedule   string
 | 
								Schedule   string
 | 
				
			||||||
		} `ini:"cron.check_repo_stats"`
 | 
							} `ini:"cron.check_repo_stats"`
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							UpdateMirror: struct {
 | 
				
			||||||
 | 
								Enabled    bool
 | 
				
			||||||
 | 
								RunAtStart bool
 | 
				
			||||||
 | 
								Schedule   string
 | 
				
			||||||
 | 
							}{
 | 
				
			||||||
 | 
								Schedule: "@every 10m",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							RepoHealthCheck: struct {
 | 
				
			||||||
 | 
								Enabled    bool
 | 
				
			||||||
 | 
								RunAtStart bool
 | 
				
			||||||
 | 
								Schedule   string
 | 
				
			||||||
 | 
								Timeout    time.Duration
 | 
				
			||||||
 | 
								Args       []string `delim:" "`
 | 
				
			||||||
 | 
							}{
 | 
				
			||||||
 | 
								Schedule: "@every 24h",
 | 
				
			||||||
 | 
								Timeout:  60 * time.Second,
 | 
				
			||||||
 | 
								Args:     []string{},
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							CheckRepoStats: struct {
 | 
				
			||||||
 | 
								Enabled    bool
 | 
				
			||||||
 | 
								RunAtStart bool
 | 
				
			||||||
 | 
								Schedule   string
 | 
				
			||||||
 | 
							}{
 | 
				
			||||||
 | 
								RunAtStart: true,
 | 
				
			||||||
 | 
								Schedule:   "@every 24h",
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Git settings
 | 
						// Git settings
 | 
				
			||||||
	Git struct {
 | 
						Git = struct {
 | 
				
			||||||
		DisableDiffHighlight     bool
 | 
							DisableDiffHighlight     bool
 | 
				
			||||||
		MaxGitDiffLines          int
 | 
							MaxGitDiffLines          int
 | 
				
			||||||
		MaxGitDiffLineCharacters int
 | 
							MaxGitDiffLineCharacters int
 | 
				
			||||||
@@ -232,16 +321,39 @@ var (
 | 
				
			|||||||
			Pull    int
 | 
								Pull    int
 | 
				
			||||||
			GC      int `ini:"GC"`
 | 
								GC      int `ini:"GC"`
 | 
				
			||||||
		} `ini:"git.timeout"`
 | 
							} `ini:"git.timeout"`
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							DisableDiffHighlight:     false,
 | 
				
			||||||
 | 
							MaxGitDiffLines:          1000,
 | 
				
			||||||
 | 
							MaxGitDiffLineCharacters: 500,
 | 
				
			||||||
 | 
							MaxGitDiffFiles:          100,
 | 
				
			||||||
 | 
							GCArgs:                   []string{},
 | 
				
			||||||
 | 
							Timeout: struct {
 | 
				
			||||||
 | 
								Migrate int
 | 
				
			||||||
 | 
								Mirror  int
 | 
				
			||||||
 | 
								Clone   int
 | 
				
			||||||
 | 
								Pull    int
 | 
				
			||||||
 | 
								GC      int `ini:"GC"`
 | 
				
			||||||
 | 
							}{
 | 
				
			||||||
 | 
								Migrate: 600,
 | 
				
			||||||
 | 
								Mirror:  300,
 | 
				
			||||||
 | 
								Clone:   300,
 | 
				
			||||||
 | 
								Pull:    300,
 | 
				
			||||||
 | 
								GC:      60,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Mirror settings
 | 
						// Mirror settings
 | 
				
			||||||
	Mirror struct {
 | 
						Mirror = struct {
 | 
				
			||||||
		DefaultInterval int
 | 
							DefaultInterval int
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							DefaultInterval: 8,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// API settings
 | 
						// API settings
 | 
				
			||||||
	API struct {
 | 
						API = struct {
 | 
				
			||||||
		MaxResponseItems int
 | 
							MaxResponseItems int
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							MaxResponseItems: 50,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// I18n settings
 | 
						// I18n settings
 | 
				
			||||||
@@ -470,11 +582,11 @@ please consider changing to GITEA_CUSTOM`)
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sec = Cfg.Section("security")
 | 
						sec = Cfg.Section("security")
 | 
				
			||||||
	InstallLock = sec.Key("INSTALL_LOCK").MustBool()
 | 
						InstallLock = sec.Key("INSTALL_LOCK").MustBool(false)
 | 
				
			||||||
	SecretKey = sec.Key("SECRET_KEY").String()
 | 
						SecretKey = sec.Key("SECRET_KEY").MustString("!#@FDEWREWR&*(")
 | 
				
			||||||
	LogInRememberDays = sec.Key("LOGIN_REMEMBER_DAYS").MustInt()
 | 
						LogInRememberDays = sec.Key("LOGIN_REMEMBER_DAYS").MustInt(7)
 | 
				
			||||||
	CookieUserName = sec.Key("COOKIE_USERNAME").String()
 | 
						CookieUserName = sec.Key("COOKIE_USERNAME").MustString("gitea_awesome")
 | 
				
			||||||
	CookieRememberName = sec.Key("COOKIE_REMEMBER_NAME").String()
 | 
						CookieRememberName = sec.Key("COOKIE_REMEMBER_NAME").MustString("gitea_incredible")
 | 
				
			||||||
	ReverseProxyAuthUser = sec.Key("REVERSE_PROXY_AUTHENTICATION_USER").MustString("X-WEBAUTH-USER")
 | 
						ReverseProxyAuthUser = sec.Key("REVERSE_PROXY_AUTHENTICATION_USER").MustString("X-WEBAUTH-USER")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	sec = Cfg.Section("attachment")
 | 
						sec = Cfg.Section("attachment")
 | 
				
			||||||
@@ -597,21 +709,17 @@ please consider changing to GITEA_CUSTOM`)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	Langs = Cfg.Section("i18n").Key("LANGS").Strings(",")
 | 
						Langs = Cfg.Section("i18n").Key("LANGS").Strings(",")
 | 
				
			||||||
	if len(Langs) == 0 {
 | 
						if len(Langs) == 0 {
 | 
				
			||||||
		Langs = []string{
 | 
							Langs = defaultLangs
 | 
				
			||||||
			"en-US",
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	Names = Cfg.Section("i18n").Key("NAMES").Strings(",")
 | 
						Names = Cfg.Section("i18n").Key("NAMES").Strings(",")
 | 
				
			||||||
	if len(Names) == 0 {
 | 
						if len(Names) == 0 {
 | 
				
			||||||
		Names = []string{
 | 
							Names = defaultLangNames
 | 
				
			||||||
			"English",
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	dateLangs = Cfg.Section("i18n.datelang").KeysHash()
 | 
						dateLangs = Cfg.Section("i18n.datelang").KeysHash()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ShowFooterBranding = Cfg.Section("other").Key("SHOW_FOOTER_BRANDING").MustBool()
 | 
						ShowFooterBranding = Cfg.Section("other").Key("SHOW_FOOTER_BRANDING").MustBool(false)
 | 
				
			||||||
	ShowFooterVersion = Cfg.Section("other").Key("SHOW_FOOTER_VERSION").MustBool()
 | 
						ShowFooterVersion = Cfg.Section("other").Key("SHOW_FOOTER_VERSION").MustBool(true)
 | 
				
			||||||
	ShowFooterTemplateLoadTime = Cfg.Section("other").Key("SHOW_FOOTER_TEMPLATE_LOAD_TIME").MustBool()
 | 
						ShowFooterTemplateLoadTime = Cfg.Section("other").Key("SHOW_FOOTER_TEMPLATE_LOAD_TIME").MustBool(true)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	HasRobotsTxt = com.IsFile(path.Join(CustomPath, "robots.txt"))
 | 
						HasRobotsTxt = com.IsFile(path.Join(CustomPath, "robots.txt"))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -738,7 +846,7 @@ func newSessionService() {
 | 
				
			|||||||
	SessionConfig.ProviderConfig = strings.Trim(Cfg.Section("session").Key("PROVIDER_CONFIG").String(), "\" ")
 | 
						SessionConfig.ProviderConfig = strings.Trim(Cfg.Section("session").Key("PROVIDER_CONFIG").String(), "\" ")
 | 
				
			||||||
	SessionConfig.CookieName = Cfg.Section("session").Key("COOKIE_NAME").MustString("i_like_gogits")
 | 
						SessionConfig.CookieName = Cfg.Section("session").Key("COOKIE_NAME").MustString("i_like_gogits")
 | 
				
			||||||
	SessionConfig.CookiePath = AppSubURL
 | 
						SessionConfig.CookiePath = AppSubURL
 | 
				
			||||||
	SessionConfig.Secure = Cfg.Section("session").Key("COOKIE_SECURE").MustBool()
 | 
						SessionConfig.Secure = Cfg.Section("session").Key("COOKIE_SECURE").MustBool(false)
 | 
				
			||||||
	SessionConfig.Gclifetime = Cfg.Section("session").Key("GC_INTERVAL_TIME").MustInt64(86400)
 | 
						SessionConfig.Gclifetime = Cfg.Section("session").Key("GC_INTERVAL_TIME").MustInt64(86400)
 | 
				
			||||||
	SessionConfig.Maxlifetime = Cfg.Section("session").Key("SESSION_LIFE_TIME").MustInt64(86400)
 | 
						SessionConfig.Maxlifetime = Cfg.Section("session").Key("SESSION_LIFE_TIME").MustInt64(86400)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user