123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- // Copyright 2020 The Gogs Authors. All rights reserved.
- // Use of this source code is governed by a MIT-style
- // license that can be found in the LICENSE file.
- package conf
- import (
- "net/url"
- "os"
- )
- // ℹ️ README: This file contains static values that should only be set at initialization time.
- // HasMinWinSvc is whether the application is built with Windows Service support.
- //
- // ⚠️ WARNING: should only be set by "static_minwinsvc.go".
- var HasMinWinSvc bool
- // Build time and commit information.
- //
- // ⚠️ WARNING: should only be set by -ldflags.
- var (
- BuildTime string
- BuildCommit string
- )
- // CustomConf returns the absolute path of custom configuration file that is used.
- var CustomConf string
- // ⚠️ WARNING: After changing the following section, do not forget to update template of
- // "/admin/config" page as well.
- var (
- // Application settings
- App struct {
- // ⚠️ WARNING: Should only be set by main package (i.e. "gogs.go").
- Version string `ini:"-"`
- BrandName string
- RunUser string
- RunMode string
- // Deprecated: Use BrandName instead, will be removed in 0.13.
- AppName string
- }
- // Server settings
- Server struct {
- ExternalURL string `ini:"EXTERNAL_URL"`
- Domain string
- Protocol string
- HTTPAddr string `ini:"HTTP_ADDR"`
- HTTPPort string `ini:"HTTP_PORT"`
- CertFile string
- KeyFile string
- TLSMinVersion string `ini:"TLS_MIN_VERSION"`
- UnixSocketPermission string
- LocalRootURL string `ini:"LOCAL_ROOT_URL"`
- OfflineMode bool
- DisableRouterLog bool
- EnableGzip bool
- AppDataPath string
- LoadAssetsFromDisk bool
- LandingURL string `ini:"LANDING_URL"`
- // Derived from other static values
- URL *url.URL `ini:"-"` // Parsed URL object of ExternalURL.
- Subpath string `ini:"-"` // Subpath found the ExternalURL. Should be empty when not found.
- SubpathDepth int `ini:"-"` // The number of slashes found in the Subpath.
- UnixSocketMode os.FileMode `ini:"-"` // Parsed file mode of UnixSocketPermission.
- // Deprecated: Use ExternalURL instead, will be removed in 0.13.
- RootURL string `ini:"ROOT_URL"`
- // Deprecated: Use LandingURL instead, will be removed in 0.13.
- LangdingPage string `ini:"LANDING_PAGE"`
- }
- // SSH settings
- SSH struct {
- Disabled bool `ini:"DISABLE_SSH"`
- Domain string `ini:"SSH_DOMAIN"`
- Port int `ini:"SSH_PORT"`
- RootPath string `ini:"SSH_ROOT_PATH"`
- KeygenPath string `ini:"SSH_KEYGEN_PATH"`
- KeyTestPath string `ini:"SSH_KEY_TEST_PATH"`
- MinimumKeySizeCheck bool
- MinimumKeySizes map[string]int `ini:"-"` // Load from [ssh.minimum_key_sizes]
- RewriteAuthorizedKeysAtStart bool
- StartBuiltinServer bool `ini:"START_SSH_SERVER"`
- ListenHost string `ini:"SSH_LISTEN_HOST"`
- ListenPort int `ini:"SSH_LISTEN_PORT"`
- ServerCiphers []string `ini:"SSH_SERVER_CIPHERS"`
- }
- // Repository settings
- Repository struct {
- Root string
- ScriptType string
- ANSICharset string `ini:"ANSI_CHARSET"`
- ForcePrivate bool
- MaxCreationLimit int
- PreferredLicenses []string
- DisableHTTPGit bool `ini:"DISABLE_HTTP_GIT"`
- EnableLocalPathMigration bool
- EnableRawFileRenderMode bool
- CommitsFetchConcurrency int
- // Repository editor settings
- Editor struct {
- LineWrapExtensions []string
- PreviewableFileModes []string
- } `ini:"repository.editor"`
- // Repository upload settings
- Upload struct {
- Enabled bool
- TempPath string
- AllowedTypes []string `delim:"|"`
- FileMaxSize int64
- MaxFiles int
- } `ini:"repository.upload"`
- }
- // Database settings
- Database struct {
- Type string
- Host string
- Name string
- User string
- Password string
- SSLMode string `ini:"SSL_MODE"`
- Path string
- // Deprecated: Use Type instead, will be removed in 0.13.
- DbType string
- // Deprecated: Use Password instead, will be removed in 0.13.
- Passwd string
- }
- // Security settings
- Security struct {
- InstallLock bool
- SecretKey string
- LoginRememberDays int
- CookieRememberName string
- CookieUsername string
- CookieSecure bool
- EnableLoginStatusCookie bool
- LoginStatusCookieName string
- // Deprecated: Use Auth.ReverseProxyAuthenticationHeader instead, will be removed in 0.13.
- ReverseProxyAuthenticationUser string
- }
- // Email settings
- Email struct {
- Enabled bool
- SubjectPrefix string
- Host string
- From string
- User string
- Password string
- DisableHELO bool `ini:"DISABLE_HELO"`
- HELOHostname string `ini:"HELO_HOSTNAME"`
- SkipVerify bool
- UseCertificate bool
- CertFile string
- KeyFile string
- UsePlainText bool
- AddPlainTextAlt bool
- // Derived from other static values
- FromEmail string `ini:"-"` // Parsed email address of From without person's name.
- // Deprecated: Use Password instead, will be removed in 0.13.
- Passwd string
- }
- // Authentication settings
- Auth struct {
- ActivateCodeLives int
- ResetPasswordCodeLives int
- RequireEmailConfirmation bool
- RequireSigninView bool
- DisableRegistration bool
- EnableRegistrationCaptcha bool
- EnableReverseProxyAuthentication bool
- EnableReverseProxyAutoRegistration bool
- ReverseProxyAuthenticationHeader string
- // Deprecated: Use ActivateCodeLives instead, will be removed in 0.13.
- ActiveCodeLiveMinutes int
- // Deprecated: Use ResetPasswordCodeLives instead, will be removed in 0.13.
- ResetPasswdCodeLiveMinutes int
- // Deprecated: Use RequireEmailConfirmation instead, will be removed in 0.13.
- RegisterEmailConfirm bool
- // Deprecated: Use EnableRegistrationCaptcha instead, will be removed in 0.13.
- EnableCaptcha bool
- // Deprecated: Use User.EnableEmailNotification instead, will be removed in 0.13.
- EnableNotifyMail bool
- }
- // User settings
- User struct {
- EnableEmailNotification bool
- }
- )
- // handleDeprecated transfers deprecated values to the new ones when set.
- func handleDeprecated() {
- if App.AppName != "" {
- App.BrandName = App.AppName
- App.AppName = ""
- }
- if Server.RootURL != "" {
- Server.ExternalURL = Server.RootURL
- Server.RootURL = ""
- }
- if Server.LangdingPage == "explore" {
- Server.LandingURL = "/explore"
- Server.LangdingPage = ""
- }
- if Database.DbType != "" {
- Database.Type = Database.DbType
- Database.DbType = ""
- }
- if Database.Passwd != "" {
- Database.Password = Database.Passwd
- Database.Passwd = ""
- }
- if Email.Passwd != "" {
- Email.Password = Email.Passwd
- Email.Passwd = ""
- }
- if Auth.ActiveCodeLiveMinutes > 0 {
- Auth.ActivateCodeLives = Auth.ActiveCodeLiveMinutes
- Auth.ActiveCodeLiveMinutes = 0
- }
- if Auth.ResetPasswdCodeLiveMinutes > 0 {
- Auth.ResetPasswordCodeLives = Auth.ResetPasswdCodeLiveMinutes
- Auth.ResetPasswdCodeLiveMinutes = 0
- }
- if Auth.RegisterEmailConfirm {
- Auth.RequireEmailConfirmation = true
- Auth.RegisterEmailConfirm = false
- }
- if Auth.EnableCaptcha {
- Auth.EnableRegistrationCaptcha = true
- Auth.EnableCaptcha = false
- }
- if Security.ReverseProxyAuthenticationUser != "" {
- Auth.ReverseProxyAuthenticationHeader = Security.ReverseProxyAuthenticationUser
- Security.ReverseProxyAuthenticationUser = ""
- }
- if Auth.EnableNotifyMail {
- User.EnableEmailNotification = true
- Auth.EnableNotifyMail = false
- }
- }
|