Documentation ¶
Index ¶
- Constants
- Variables
- func CompileEmailGlobList(sec ConfigSection, keys ...string) (globs []glob.Glob)
- func ConfigInheritedKey(sec ConfigSection, key string) *ini.Key
- func ConfigInheritedKeyString(sec ConfigSection, key string, def ...string) string
- func ConfigSectionKey(sec ConfigSection, key string) *ini.Key
- func ConfigSectionKeyString(sec ConfigSection, key string, def ...string) string
- func DBConnStr() (string, error)
- func EnvironmentToConfig(cfg *ini.File, prefixGitea, suffixFile string, envs []string) (changed bool)
- func GetCronSettings(name string, config interface{}) (interface{}, error)
- func GetDefaultDisableGravatar() bool
- func GetDefaultEnableFederatedAvatar(disableGravatar bool) bool
- func GetHighlightMapping() map[string]string
- func IndexerGlobFromString(globstr string) []glob.Glob
- func Init(opts *Options)
- func InitLoggersForTest()
- func InitSQLLoggersForCli(level log.Level)
- func IsAccessLogEnabled() bool
- func IsRouteLogEnabled() bool
- func IsRunUserMatchCurrentUser(runUser string) (string, bool)
- func LastCommitCacheTTLSeconds() int64
- func LoadDBSetting()
- func LoadQueueSettings()
- func LoadSettings()
- func LoadSettingsForInstall()
- func LogPrepareFilenameForWriter(fileName, defaultFileName string) string
- func MakeAbsoluteAssetURL(appURL, staticURLPrefix string) string
- func MakeManifestData(appName, appURL, absoluteAssetURL string) []byte
- func ParseMSSQLHostPort(info string) (string, string)
- func PrepareAppDataPath() error
- func RestartLogsWithPIDSuffix()
- func SetCustomPathAndConf(providedCustom, providedConf, providedWorkPath string)
- type AllowedVisibility
- type Cache
- type ConfigProvider
- type ConfigSection
- type DatabaseType
- type LandingPage
- type LogGlobalConfig
- type Mailer
- type MarkupRenderer
- type MarkupSanitizerRule
- type OAuth2AccountLinkingType
- type OAuth2UsernameType
- type Options
- type OtherConfig
- type QueueSettings
- type Scheme
- type Storage
Constants ¶
const ( RenderContentModeSanitized = "sanitized" RenderContentModeNoSanitizer = "no-sanitizer" RenderContentModeIframe = "iframe" )
const ( RepoCreatingLastUserVisibility = "last" RepoCreatingPrivate = "private" RepoCreatingPublic = "public" )
enumerates all the policy repository creating
const ( ImageCaptcha = "image" ReCaptcha = "recaptcha" HCaptcha = "hcaptcha" MCaptcha = "mcaptcha" CfTurnstile = "cfturnstile" )
enumerates all the types of captchas
const HasBuiltinBindata = false
const ItemsPerPage = 40
ItemsPerPage maximum items per page in forks, watchers and stars of a repo
const MemcacheMaxTTL = 30 * 24 * time.Hour
MemcacheMaxTTL represents the maximum memcache TTL
Variables ¶
var ( // SupportedDatabaseTypes includes all XORM supported databases type, sqlite3 maybe added by `database_sqlite3.go` SupportedDatabaseTypes = []string{"mysql", "postgres", "mssql"} // DatabaseTypeNames contains the friendly names for all database types DatabaseTypeNames = map[string]string{"mysql": "MySQL", "postgres": "PostgreSQL", "mssql": "MSSQL", "sqlite3": "SQLite3"} // EnableSQLite3 use SQLite3, set by build flag EnableSQLite3 bool // Database holds the database settings Database = struct { Type DatabaseType Host string Name string User string Passwd string Schema string SSLMode string Path string LogSQL bool Charset string Timeout int // seconds SQLiteJournalMode string DBConnectRetries int DBConnectBackoff time.Duration MaxIdleConns int MaxOpenConns int ConnMaxLifetime time.Duration IterateBufferSize int AutoMigration bool }{ Timeout: 500, IterateBufferSize: 50, } )
var ( // I18n settings Langs []string Names []string )
var ( ExternalMarkupRenderers []*MarkupRenderer ExternalSanitizerRules []MarkupSanitizerRule MermaidMaxSourceCharacters int )
ExternalMarkupRenderers represents the external markup renderers
var ( Avatar = struct { Storage MaxWidth int MaxHeight int MaxFileSize int64 MaxOriginSize int64 RenderedSizeFactor int }{ MaxWidth: 4096, MaxHeight: 4096, MaxFileSize: 1048576, MaxOriginSize: 262144, RenderedSizeFactor: 2, } GravatarSource string DisableGravatar bool // Depreciated: migrated to database EnableFederatedAvatar bool // Depreciated: migrated to database RepoAvatar = struct { Storage Fallback string FallbackImage string }{} )
var ( Repository = struct { DetectedCharsetsOrder []string DetectedCharsetScore map[string]int `ini:"-"` AnsiCharset string ForcePrivate bool DefaultPrivate string DefaultPushCreatePrivate bool MaxCreationLimit int PreferredLicenses []string DisableHTTPGit bool AccessControlAllowOrigin string UseCompatSSHURI bool GoGetCloneURLProtocol string DefaultCloseIssuesViaCommitsInAnyBranch bool EnablePushCreateUser bool EnablePushCreateOrg bool DisabledRepoUnits []string DefaultRepoUnits []string DefaultForkRepoUnits []string PrefixArchiveFiles bool DisableMigrations bool DisableStars bool `ini:"DISABLE_STARS"` DefaultBranch string AllowAdoptionOfUnadoptedRepositories bool AllowDeleteOfUnadoptedRepositories bool DisableDownloadSourceArchives bool AllowForkWithoutMaximumLimit bool // Repository editor settings Editor struct { LineWrapExtensions []string } `ini:"-"` // Repository upload settings Upload struct { Enabled bool TempPath string AllowedTypes string FileMaxSize int64 MaxFiles int } `ini:"-"` // Repository local settings Local struct { LocalCopyPath string } `ini:"-"` // Pull request settings PullRequest struct { WorkInProgressPrefixes []string CloseKeywords []string ReopenKeywords []string DefaultMergeStyle string DefaultMergeMessageCommitsLimit int DefaultMergeMessageSize int DefaultMergeMessageAllAuthors bool DefaultMergeMessageMaxApprovers int DefaultMergeMessageOfficialApproversOnly bool PopulateSquashCommentWithCommitMessages bool AddCoCommitterTrailers bool TestConflictingPatchesWithGitApply bool } `ini:"repository.pull-request"` // Issue Setting Issue struct { LockReasons []string } `ini:"repository.issue"` Release struct { AllowedTypes string DefaultPagingNum int } `ini:"repository.release"` Signing struct { SigningKey string SigningName string SigningEmail string InitialCommit []string CRUDActions []string `ini:"CRUD_ACTIONS"` Merges []string Wiki []string DefaultTrustModel string } `ini:"repository.signing"` }{ DetectedCharsetsOrder: []string{ "UTF-8", "UTF-16BE", "UTF-16LE", "UTF-32BE", "UTF-32LE", "ISO-8859-1", "windows-1252", "ISO-8859-2", "windows-1250", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "windows-1253", "ISO-8859-8-I", "windows-1255", "ISO-8859-8", "windows-1251", "windows-1256", "KOI8-R", "ISO-8859-9", "windows-1254", "Shift_JIS", "GB18030", "EUC-JP", "EUC-KR", "Big5", "ISO-2022-JP", "ISO-2022-KR", "ISO-2022-CN", "IBM424_rtl", "IBM424_ltr", "IBM420_rtl", "IBM420_ltr", }, DetectedCharsetScore: map[string]int{}, AnsiCharset: "", ForcePrivate: false, DefaultPrivate: RepoCreatingLastUserVisibility, DefaultPushCreatePrivate: true, MaxCreationLimit: -1, PreferredLicenses: []string{"Apache License 2.0", "MIT License"}, DisableHTTPGit: false, AccessControlAllowOrigin: "", UseCompatSSHURI: false, DefaultCloseIssuesViaCommitsInAnyBranch: false, EnablePushCreateUser: false, EnablePushCreateOrg: false, DisabledRepoUnits: []string{}, DefaultRepoUnits: []string{}, DefaultForkRepoUnits: []string{}, PrefixArchiveFiles: true, DisableMigrations: false, DisableStars: false, DefaultBranch: "main", AllowForkWithoutMaximumLimit: true, Editor: struct { LineWrapExtensions []string }{ LineWrapExtensions: strings.Split(".txt,.md,.markdown,.mdown,.mkd,.livemd,", ","), }, Upload: struct { Enabled bool TempPath string AllowedTypes string FileMaxSize int64 MaxFiles int }{ Enabled: true, TempPath: "data/tmp/uploads", AllowedTypes: "", FileMaxSize: 3, MaxFiles: 5, }, Local: struct { LocalCopyPath string }{ LocalCopyPath: "tmp/local-repo", }, PullRequest: struct { WorkInProgressPrefixes []string CloseKeywords []string ReopenKeywords []string DefaultMergeStyle string DefaultMergeMessageCommitsLimit int DefaultMergeMessageSize int DefaultMergeMessageAllAuthors bool DefaultMergeMessageMaxApprovers int DefaultMergeMessageOfficialApproversOnly bool PopulateSquashCommentWithCommitMessages bool AddCoCommitterTrailers bool TestConflictingPatchesWithGitApply bool }{ WorkInProgressPrefixes: []string{"WIP:", "[WIP]"}, CloseKeywords: strings.Split("close,closes,closed,fix,fixes,fixed,resolve,resolves,resolved", ","), ReopenKeywords: strings.Split("reopen,reopens,reopened", ","), DefaultMergeStyle: "merge", DefaultMergeMessageCommitsLimit: 50, DefaultMergeMessageSize: 5 * 1024, DefaultMergeMessageAllAuthors: false, DefaultMergeMessageMaxApprovers: 10, DefaultMergeMessageOfficialApproversOnly: true, PopulateSquashCommentWithCommitMessages: false, AddCoCommitterTrailers: true, }, Issue: struct { LockReasons []string }{ LockReasons: strings.Split("Too heated,Off-topic,Spam,Resolved", ","), }, Release: struct { AllowedTypes string DefaultPagingNum int }{ AllowedTypes: "", DefaultPagingNum: 10, }, Signing: struct { SigningKey string SigningName string SigningEmail string InitialCommit []string CRUDActions []string `ini:"CRUD_ACTIONS"` Merges []string Wiki []string DefaultTrustModel string }{ SigningKey: "default", SigningName: "", SigningEmail: "", InitialCommit: []string{"always"}, CRUDActions: []string{"pubkey", "twofa", "parentsigned"}, Merges: []string{"pubkey", "twofa", "basesigned", "commitssigned"}, Wiki: []string{"never"}, DefaultTrustModel: "collaborator", }, } RepoRootPath string ScriptType = "bash" RepoArchive = struct { Storage }{} )
Repository settings
var ( // Security settings InstallLock bool SecretKey string InternalToken string // internal access token LogInRememberDays int CookieUserName string CookieRememberName string ReverseProxyAuthUser string ReverseProxyAuthEmail string ReverseProxyAuthFullName string ReverseProxyLimit int ReverseProxyTrustedProxies []string MinPasswordLength int ImportLocalPaths bool DisableGitHooks bool DisableWebhooks bool OnlyAllowPushIfGiteaEnvironmentSet bool PasswordComplexity []string PasswordHashAlgo string PasswordCheckPwn bool SuccessfulTokensCacheSize int CSRFCookieName = "_csrf" CSRFCookieHTTPOnly = true )
var ( // AppName is the Application name, used in the page title. // It maps to ini:"APP_NAME" AppName string // AppURL is the Application ROOT_URL. It always has a '/' suffix // It maps to ini:"ROOT_URL" AppURL string // AppSubURL represents the sub-url mounting point for gitea. It is either "" or starts with '/' and ends without '/', such as '/{subpath}'. // This value is empty if site does not have sub-url. AppSubURL string // AppDataPath is the default path for storing data. // It maps to ini:"APP_DATA_PATH" in [server] and defaults to AppWorkPath + "/data" AppDataPath string // LocalURL is the url for locally running applications to contact Gitea. It always has a '/' suffix // It maps to ini:"LOCAL_ROOT_URL" in [server] LocalURL string // AssetVersion holds a opaque value that is used for cache-busting assets AssetVersion string // Server settings Protocol Scheme UseProxyProtocol bool // `ini:"USE_PROXY_PROTOCOL"` ProxyProtocolTLSBridging bool //`ini:"PROXY_PROTOCOL_TLS_BRIDGING"` ProxyProtocolHeaderTimeout time.Duration ProxyProtocolAcceptUnknown bool Domain string HTTPAddr string HTTPPort string LocalUseProxyProtocol bool RedirectOtherPort bool RedirectorUseProxyProtocol bool PortToRedirect string OfflineMode bool CertFile string KeyFile string StaticRootPath string StaticCacheTime time.Duration EnableGzip bool LandingPageURL LandingPage LandingPageCustom string UnixSocketPermission uint32 EnablePprof bool PprofDataPath string EnableAcme bool AcmeTOS bool AcmeLiveDirectory string AcmeEmail string AcmeURL string AcmeCARoot string SSLMinimumVersion string SSLMaximumVersion string SSLCurvePreferences []string SSLCipherSuites []string GracefulRestartable bool GracefulHammerTime time.Duration StartupTimeout time.Duration PerWriteTimeout = 30 * time.Second PerWritePerKbTimeout = 10 * time.Second StaticURLPrefix string AbsoluteAssetURL string HasRobotsTxt bool ManifestData string )
var ( // AppVer is the version of the current build of Gitea. It is set in main.go from main.Version. AppVer string // AppBuiltWith represents a human-readable version go runtime build version and build tags. (See main.go formatBuiltWith().) AppBuiltWith string // AppStartTime store time gitea has started AppStartTime time.Time // AppPath represents the path to the gitea binary AppPath string // AppWorkPath is the "working directory" of Gitea. It maps to the environment variable GITEA_WORK_DIR. // If that is not set it is the default set here by the linker or failing that the directory of AppPath. // // AppWorkPath is used as the base path for several other paths. AppWorkPath string CfgProvider ConfigProvider CustomPath string // Custom directory path CustomConf string RunMode string RunUser string IsProd bool IsWindows bool // IsInTesting indicates whether the testing is running. A lot of unreliable code causes a lot of nonsense error logs during testing // TODO: this is only a temporary solution, we should make the test code more reliable IsInTesting = false )
settings
var API = struct { EnableSwagger bool SwaggerURL string MaxResponseItems int DefaultPagingNum int DefaultGitTreesPerPage int DefaultMaxBlobSize int64 }{ EnableSwagger: true, SwaggerURL: "", MaxResponseItems: 50, DefaultPagingNum: 30, DefaultGitTreesPerPage: 1000, DefaultMaxBlobSize: 10485760, }
API settings
var ( Actions = struct { LogStorage Storage // how the created logs should be stored ArtifactStorage Storage // how the created artifacts should be stored Enabled bool DefaultActionsURL string `ini:"DEFAULT_ACTIONS_URL"` }{ Enabled: false, DefaultActionsURL: "https://gitea.com", } )
Actions settings
var Admin struct { DisableRegularOrgCreation bool DefaultEmailNotification string }
Admin settings
var Attachment = struct { Storage AllowedTypes string MaxSize int64 MaxFiles int Enabled bool }{ Storage: Storage{ ServeDirect: false, }, AllowedTypes: "image/jpeg,image/png,application/zip,application/gzip", MaxSize: 4, MaxFiles: 5, Enabled: true, }
Attachment settings
var CORSConfig = struct { Enabled bool Scheme string AllowDomain []string AllowSubdomain bool Methods []string MaxAge time.Duration AllowCredentials bool Headers []string XFrameOptions string }{ AllowDomain: []string{"*"}, Methods: []string{"GET", "HEAD", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"}, Headers: []string{"Content-Type", "User-Agent"}, MaxAge: 10 * time.Minute, XFrameOptions: "SAMEORIGIN", }
CORSConfig defines CORS settings
var CacheService = struct { Cache `ini:"cache"` LastCommit struct { Enabled bool TTL time.Duration `ini:"ITEM_TTL"` CommitsCount int64 } `ini:"cache.last_commit"` }{ Cache: Cache{ Enabled: true, Adapter: "memory", Interval: 60, TTL: 16 * time.Hour, }, LastCommit: struct { Enabled bool TTL time.Duration `ini:"ITEM_TTL"` CommitsCount int64 }{ Enabled: true, TTL: 8760 * time.Hour, CommitsCount: 1000, }, }
CacheService the global cache
var Camo = struct { Enabled bool ServerURL string `ini:"SERVER_URL"` HMACKey string `ini:"HMAC_KEY"` Allways bool }{}
var DefaultUILocation = time.Local
DefaultUILocation is the location on the UI, so that we can display the time on UI.
var ( Federation = struct { Enabled bool ShareUserStatistics bool MaxSize int64 Algorithms []string DigestAlgorithm string GetHeaders []string PostHeaders []string }{ Enabled: false, ShareUserStatistics: true, MaxSize: 4, Algorithms: []string{"rsa-sha256", "rsa-sha512", "ed25519"}, DigestAlgorithm: "SHA-256", GetHeaders: []string{"(request-target)", "Date"}, PostHeaders: []string{"(request-target)", "Date", "Digest"}, } )
Federation settings
var Git = struct { Path string HomePath string DisableDiffHighlight bool Reflog struct { Enabled bool Expiration int } `ini:"git.reflog"` MaxGitDiffLines int MaxGitDiffLineCharacters int MaxGitDiffFiles int CommitsRangeSize int // CommitsRangeSize the default commits range size BranchesRangeSize int // BranchesRangeSize the default branches range size VerbosePush bool VerbosePushDelay time.Duration GCArgs []string `ini:"GC_ARGS" delim:" "` EnableAutoGitWireProtocol bool PullRequestPushMessage bool LargeObjectThreshold int64 DisableCoreProtectNTFS bool DisablePartialClone bool Timeout struct { Default int Migrate int Mirror int Clone int Pull int GC int `ini:"GC"` } `ini:"git.timeout"` }{ Reflog: struct { Enabled bool Expiration int }{ Enabled: true, Expiration: 90, }, DisableDiffHighlight: false, MaxGitDiffLines: 1000, MaxGitDiffLineCharacters: 5000, MaxGitDiffFiles: 100, CommitsRangeSize: 50, BranchesRangeSize: 20, VerbosePush: true, VerbosePushDelay: 5 * time.Second, GCArgs: []string{}, EnableAutoGitWireProtocol: true, PullRequestPushMessage: true, LargeObjectThreshold: 1024 * 1024, DisablePartialClone: false, Timeout: struct { Default int Migrate int Mirror int Clone int Pull int GC int `ini:"GC"` }{ Default: 360, Migrate: 600, Mirror: 300, Clone: 300, Pull: 300, GC: 60, }, }
Git settings
var GitConfig = struct { Options map[string]string }{ Options: make(map[string]string), }
var HttpsigAlgs []httpsig.Algorithm
HttpsigAlgs is a constant slice of httpsig algorithm objects
var IncomingEmail = struct { Enabled bool ReplyToAddress string TokenPlaceholder string `ini:"-"` Host string Port int UseTLS bool `ini:"USE_TLS"` SkipTLSVerify bool `ini:"SKIP_TLS_VERIFY"` Username string Password string Mailbox string DeleteHandledMessage bool MaximumMessageSize uint32 }{ Mailbox: "INBOX", DeleteHandledMessage: true, TokenPlaceholder: "%{token}", MaximumMessageSize: 10485760, }
var Indexer = struct { IssueType string IssuePath string IssueConnStr string IssueConnAuth string IssueIndexerName string StartupTimeout time.Duration RepoIndexerEnabled bool RepoType string RepoPath string RepoConnStr string RepoIndexerName string MaxIndexerFileSize int64 IncludePatterns []glob.Glob ExcludePatterns []glob.Glob ExcludeVendored bool }{ IssueType: "bleve", IssuePath: "indexers/issues.bleve", IssueConnStr: "", IssueConnAuth: "", IssueIndexerName: "gitea_issues", RepoIndexerEnabled: false, RepoType: "bleve", RepoPath: "indexers/repos.bleve", RepoConnStr: "", RepoIndexerName: "gitea_codes", MaxIndexerFileSize: 1024 * 1024, ExcludeVendored: true, }
Indexer settings
var LFS = struct { StartServer bool `ini:"LFS_START_SERVER"` JWTSecretBase64 string `ini:"LFS_JWT_SECRET"` JWTSecretBytes []byte `ini:"-"` HTTPAuthExpiry time.Duration `ini:"LFS_HTTP_AUTH_EXPIRY"` MaxFileSize int64 `ini:"LFS_MAX_FILE_SIZE"` LocksPagingNum int `ini:"LFS_LOCKS_PAGING_NUM"` Storage }{}
LFS represents the configuration for Git LFS
var Markdown = struct { EnableHardLineBreakInComments bool EnableHardLineBreakInDocuments bool CustomURLSchemes []string `ini:"CUSTOM_URL_SCHEMES"` FileExtensions []string EnableMath bool }{ EnableHardLineBreakInComments: true, EnableHardLineBreakInDocuments: false, FileExtensions: strings.Split(".md,.markdown,.mdown,.mkd,.livemd", ","), EnableMath: true, }
Markdown settings
var Metrics = struct { Enabled bool Token string EnabledIssueByLabel bool EnabledIssueByRepository bool }{ Enabled: false, Token: "", EnabledIssueByLabel: false, EnabledIssueByRepository: false, }
Metrics settings
var Migrations = struct { MaxAttempts int RetryBackoff int AllowedDomains string BlockedDomains string AllowLocalNetworks bool SkipTLSVerify bool }{ MaxAttempts: 3, RetryBackoff: 3, }
Migrations settings
var MimeTypeMap = struct { Enabled bool Map map[string]string }{ Enabled: false, Map: map[string]string{}, }
MimeTypeMap defines custom mime type mapping settings
var Mirror = struct { Enabled bool DisableNewPull bool DisableNewPush bool DefaultInterval time.Duration MinInterval time.Duration }{ Enabled: true, DisableNewPull: false, DisableNewPush: false, MinInterval: 10 * time.Minute, DefaultInterval: 8 * time.Hour, }
Mirror settings
var OAuth2 = struct { Enable bool AccessTokenExpirationTime int64 RefreshTokenExpirationTime int64 InvalidateRefreshTokens bool JWTSigningAlgorithm string `ini:"JWT_SIGNING_ALGORITHM"` JWTSecretBase64 string `ini:"JWT_SECRET"` JWTSigningPrivateKeyFile string `ini:"JWT_SIGNING_PRIVATE_KEY_FILE"` MaxTokenLength int }{ Enable: true, AccessTokenExpirationTime: 3600, RefreshTokenExpirationTime: 730, InvalidateRefreshTokens: false, JWTSigningAlgorithm: "RS256", JWTSigningPrivateKeyFile: "jwt/private.pem", MaxTokenLength: math.MaxInt16, }
var OAuth2Client struct { RegisterEmailConfirm bool OpenIDConnectScopes []string EnableAutoRegistration bool Username OAuth2UsernameType UpdateAvatar bool AccountLinking OAuth2AccountLinkingType }
OAuth2Client settings
var Other = OtherConfig{ ShowFooterVersion: true, ShowFooterTemplateLoadTime: true, EnableSitemap: true, EnableFeed: true, }
var ( Packages = struct { Storage Enabled bool ChunkedUploadPath string RegistryHost string LimitTotalOwnerCount int64 LimitTotalOwnerSize int64 LimitSizeAlpine int64 LimitSizeCargo int64 LimitSizeChef int64 LimitSizeComposer int64 LimitSizeConan int64 LimitSizeConda int64 LimitSizeContainer int64 LimitSizeCran int64 LimitSizeDebian int64 LimitSizeGeneric int64 LimitSizeGo int64 LimitSizeHelm int64 LimitSizeMaven int64 LimitSizeNpm int64 LimitSizeNuGet int64 LimitSizePub int64 LimitSizePyPI int64 LimitSizeRpm int64 LimitSizeRubyGems int64 LimitSizeSwift int64 LimitSizeVagrant int64 }{ Enabled: true, LimitTotalOwnerCount: -1, } )
Package registry settings
var ( Project = struct { ProjectBoardBasicKanbanType []string ProjectBoardBugTriageType []string }{ ProjectBoardBasicKanbanType: []string{"To Do", "In Progress", "Done"}, ProjectBoardBugTriageType: []string{"Needs Triage", "High Priority", "Low Priority", "Closed"}, } )
Project settings
var Proxy = struct { Enabled bool ProxyURL string ProxyURLFixed *url.URL ProxyHosts []string }{ Enabled: false, ProxyURL: "", ProxyHosts: []string{}, }
Proxy settings
var SSH = struct { Disabled bool `ini:"DISABLE_SSH"` StartBuiltinServer bool `ini:"START_SSH_SERVER"` BuiltinServerUser string `ini:"BUILTIN_SSH_SERVER_USER"` UseProxyProtocol bool `ini:"SSH_SERVER_USE_PROXY_PROTOCOL"` Domain string `ini:"SSH_DOMAIN"` Port int `ini:"SSH_PORT"` User string `ini:"SSH_USER"` ListenHost string `ini:"SSH_LISTEN_HOST"` ListenPort int `ini:"SSH_LISTEN_PORT"` RootPath string `ini:"SSH_ROOT_PATH"` ServerCiphers []string `ini:"SSH_SERVER_CIPHERS"` ServerKeyExchanges []string `ini:"SSH_SERVER_KEY_EXCHANGES"` ServerMACs []string `ini:"SSH_SERVER_MACS"` ServerHostKeys []string `ini:"SSH_SERVER_HOST_KEYS"` KeyTestPath string `ini:"SSH_KEY_TEST_PATH"` KeygenPath string `ini:"SSH_KEYGEN_PATH"` AuthorizedKeysBackup bool `ini:"SSH_AUTHORIZED_KEYS_BACKUP"` AuthorizedPrincipalsBackup bool `ini:"SSH_AUTHORIZED_PRINCIPALS_BACKUP"` AuthorizedKeysCommandTemplate string `ini:"SSH_AUTHORIZED_KEYS_COMMAND_TEMPLATE"` AuthorizedKeysCommandTemplateTemplate *template.Template `ini:"-"` MinimumKeySizeCheck bool `ini:"-"` MinimumKeySizes map[string]int `ini:"-"` CreateAuthorizedKeysFile bool `ini:"SSH_CREATE_AUTHORIZED_KEYS_FILE"` CreateAuthorizedPrincipalsFile bool `ini:"SSH_CREATE_AUTHORIZED_PRINCIPALS_FILE"` ExposeAnonymous bool `ini:"SSH_EXPOSE_ANONYMOUS"` AuthorizedPrincipalsAllow []string `ini:"SSH_AUTHORIZED_PRINCIPALS_ALLOW"` AuthorizedPrincipalsEnabled bool `ini:"-"` TrustedUserCAKeys []string `ini:"SSH_TRUSTED_USER_CA_KEYS"` TrustedUserCAKeysFile string `ini:"SSH_TRUSTED_USER_CA_KEYS_FILENAME"` TrustedUserCAKeysParsed []gossh.PublicKey `ini:"-"` PerWriteTimeout time.Duration `ini:"SSH_PER_WRITE_TIMEOUT"` PerWritePerKbTimeout time.Duration `ini:"SSH_PER_WRITE_PER_KB_TIMEOUT"` }{ Disabled: false, StartBuiltinServer: false, Domain: "", Port: 22, ServerCiphers: []string{"chacha20-poly1305@openssh.com", "aes128-ctr", "aes192-ctr", "aes256-ctr", "aes128-gcm@openssh.com", "aes256-gcm@openssh.com"}, ServerKeyExchanges: []string{"curve25519-sha256", "ecdh-sha2-nistp256", "ecdh-sha2-nistp384", "ecdh-sha2-nistp521", "diffie-hellman-group14-sha256", "diffie-hellman-group14-sha1"}, ServerMACs: []string{"hmac-sha2-256-etm@openssh.com", "hmac-sha2-256", "hmac-sha1"}, KeygenPath: "", MinimumKeySizeCheck: true, MinimumKeySizes: map[string]int{"ed25519": 256, "ed25519-sk": 256, "ecdsa": 256, "ecdsa-sk": 256, "rsa": 2047}, ServerHostKeys: []string{"ssh/gitea.rsa", "ssh/gogs.rsa"}, AuthorizedKeysCommandTemplate: "{{.AppPath}} --config={{.CustomConf}} serv key-{{.Key.ID}}", PerWriteTimeout: PerWriteTimeout, PerWritePerKbTimeout: PerWritePerKbTimeout, }
var Service = struct { DefaultUserVisibility string DefaultUserVisibilityMode structs.VisibleType AllowedUserVisibilityModes []string AllowedUserVisibilityModesSlice AllowedVisibility `ini:"-"` DefaultOrgVisibility string DefaultOrgVisibilityMode structs.VisibleType ActiveCodeLives int ResetPwdCodeLives int RegisterEmailConfirm bool RegisterManualConfirm bool EmailDomainAllowList []glob.Glob EmailDomainBlockList []glob.Glob DisableRegistration bool AllowOnlyInternalRegistration bool AllowOnlyExternalRegistration bool ShowRegistrationButton bool ShowMilestonesDashboardPage bool RequireSignInView bool EnableNotifyMail bool EnableBasicAuth bool EnableReverseProxyAuth bool EnableReverseProxyAutoRegister bool EnableReverseProxyEmail bool EnableReverseProxyFullName bool EnableCaptcha bool RequireCaptchaForLogin bool RequireExternalRegistrationCaptcha bool RequireExternalRegistrationPassword bool CaptchaType string RecaptchaSecret string RecaptchaSitekey string RecaptchaURL string CfTurnstileSecret string CfTurnstileSitekey string HcaptchaSecret string HcaptchaSitekey string McaptchaSecret string McaptchaSitekey string McaptchaURL string DefaultKeepEmailPrivate bool DefaultAllowCreateOrganization bool DefaultUserIsRestricted bool EnableTimetracking bool DefaultEnableTimetracking bool DefaultEnableDependencies bool AllowCrossRepositoryDependencies bool DefaultAllowOnlyContributorsToTrackTime bool NoReplyAddress string EnableUserHeatmap bool AutoWatchNewRepos bool AutoWatchOnChanges bool DefaultOrgMemberVisible bool UserDeleteWithCommentsMaxTime time.Duration ValidSiteURLSchemes []string // OpenID settings EnableOpenIDSignIn bool EnableOpenIDSignUp bool OpenIDWhitelist []*regexp.Regexp OpenIDBlacklist []*regexp.Regexp // Explore page settings Explore struct { RequireSigninView bool `ini:"REQUIRE_SIGNIN_VIEW"` DisableUsersPage bool `ini:"DISABLE_USERS_PAGE"` } `ini:"service.explore"` }{ AllowedUserVisibilityModesSlice: []bool{true, true, true}, }
Service settings
var SessionConfig = struct { OriginalProvider string Provider string // Provider configuration, it's corresponding to provider. ProviderConfig string // Cookie name to save session ID. Default is "MacaronSession". CookieName string // Cookie path to store. Default is "/". HINT: there was a bug, the old value doesn't have trailing slash, and could be empty "". CookiePath string // GC interval time in seconds. Default is 3600. Gclifetime int64 // Max life time in seconds. Default is whatever GC interval time is. Maxlifetime int64 // Use HTTPS only. Default is false. Secure bool // Cookie domain name. Default is empty. Domain string // SameSite declares if your cookie should be restricted to a first-party or same-site context. Valid strings are "none", "lax", "strict". Default is "lax" SameSite http.SameSite }{ CookieName: "i_like_gitea", Gclifetime: 86400, Maxlifetime: 86400, SameSite: http.SameSiteLaxMode, }
SessionConfig defines Session settings
var UI = struct { ExplorePagingNum int SitemapPagingNum int IssuePagingNum int RepoSearchPagingNum int MembersPagingNum int FeedMaxCommitNum int FeedPagingNum int PackagesPagingNum int GraphMaxCommitNum int CodeCommentLines int ReactionMaxUserNum int ThemeColorMetaTag string MaxDisplayFileSize int64 ShowUserEmail bool DefaultShowFullName bool DefaultTheme string Themes []string Reactions []string ReactionsLookup container.Set[string] `ini:"-"` CustomEmojis []string CustomEmojisMap map[string]string `ini:"-"` SearchRepoDescription bool UseServiceWorker bool OnlyShowRelevantRepos bool Notification struct { MinTimeout time.Duration TimeoutStep time.Duration MaxTimeout time.Duration EventSourceUpdateTime time.Duration } `ini:"ui.notification"` SVG struct { Enabled bool `ini:"ENABLE_RENDER"` } `ini:"ui.svg"` CSV struct { MaxFileSize int64 } `ini:"ui.csv"` Admin struct { UserPagingNum int RepoPagingNum int NoticePagingNum int OrgPagingNum int } `ini:"ui.admin"` User struct { RepoPagingNum int } `ini:"ui.user"` Meta struct { Author string Description string Keywords string } `ini:"ui.meta"` }{ ExplorePagingNum: 20, SitemapPagingNum: 20, IssuePagingNum: 20, RepoSearchPagingNum: 20, MembersPagingNum: 20, FeedMaxCommitNum: 5, FeedPagingNum: 20, PackagesPagingNum: 20, GraphMaxCommitNum: 100, CodeCommentLines: 4, ReactionMaxUserNum: 10, ThemeColorMetaTag: ``, MaxDisplayFileSize: 8388608, DefaultTheme: `auto`, Themes: []string{`auto`, `gitea`, `arc-green`}, Reactions: []string{`+1`, `-1`, `laugh`, `hooray`, `confused`, `heart`, `rocket`, `eyes`}, CustomEmojis: []string{`git`, `gitea`, `codeberg`, `gitlab`, `github`, `gogs`}, CustomEmojisMap: map[string]string{"git": ":git:", "gitea": ":gitea:", "codeberg": ":codeberg:", "gitlab": ":gitlab:", "github": ":github:", "gogs": ":gogs:"}, Notification: struct { MinTimeout time.Duration TimeoutStep time.Duration MaxTimeout time.Duration EventSourceUpdateTime time.Duration }{ MinTimeout: 10 * time.Second, TimeoutStep: 10 * time.Second, MaxTimeout: 60 * time.Second, EventSourceUpdateTime: 10 * time.Second, }, SVG: struct { Enabled bool `ini:"ENABLE_RENDER"` }{ Enabled: true, }, CSV: struct { MaxFileSize int64 }{ MaxFileSize: 524288, }, Admin: struct { UserPagingNum int RepoPagingNum int NoticePagingNum int OrgPagingNum int }{ UserPagingNum: 50, RepoPagingNum: 50, NoticePagingNum: 25, OrgPagingNum: 50, }, User: struct { RepoPagingNum int }{ RepoPagingNum: 15, }, Meta: struct { Author string Description string Keywords string }{ Author: "Gitea - Git with a cup of tea", Description: "Gitea (Git with a cup of tea) is a painless self-hosted Git service written in Go", Keywords: "go,git,self-hosted,gitea", }, }
UI settings
var Webhook = struct { QueueLength int DeliverTimeout int SkipTLSVerify bool AllowedHostList string Types []string PagingNum int ProxyURL string ProxyURLFixed *url.URL ProxyHosts []string }{ QueueLength: 1000, DeliverTimeout: 5, SkipTLSVerify: false, PagingNum: 10, ProxyURL: "", ProxyHosts: []string{}, }
Webhook settings
Functions ¶
func CompileEmailGlobList ¶
func CompileEmailGlobList(sec ConfigSection, keys ...string) (globs []glob.Glob)
func ConfigInheritedKey ¶
func ConfigInheritedKey(sec ConfigSection, key string) *ini.Key
ConfigInheritedKey works like ini.Section.Key(), but it always returns a new key instance, it is O(n) because NewKey is O(n) and the returned key is safe to be used with "MustXxx", it doesn't change the parent's values. Otherwise, ini.Section.Key().MustXxx would pollute the parent section's keys. It never returns nil.
func ConfigInheritedKeyString ¶
func ConfigInheritedKeyString(sec ConfigSection, key string, def ...string) string
func ConfigSectionKey ¶
func ConfigSectionKey(sec ConfigSection, key string) *ini.Key
ConfigSectionKey only searches the keys in the given section, but it is O(n). ini package has a special behavior: with "[sec] a=1" and an empty "[sec.sub]", then in "[sec.sub]", Key()/HasKey() can always see "a=1" because it always tries parent sections. It returns nil if the key doesn't exist.
func ConfigSectionKeyString ¶
func ConfigSectionKeyString(sec ConfigSection, key string, def ...string) string
func EnvironmentToConfig ¶
func GetCronSettings ¶
GetCronSettings maps the cron subsection to the provided config
func GetDefaultDisableGravatar ¶
func GetDefaultDisableGravatar() bool
func GetHighlightMapping ¶
func IndexerGlobFromString ¶
IndexerGlobFromString parses a comma separated list of patterns and returns a glob.Glob slice suited for repo indexing
func InitLoggersForTest ¶
func InitLoggersForTest()
func InitSQLLoggersForCli ¶
func IsAccessLogEnabled ¶
func IsAccessLogEnabled() bool
func IsRouteLogEnabled ¶
func IsRouteLogEnabled() bool
func IsRunUserMatchCurrentUser ¶
IsRunUserMatchCurrentUser returns false if configured run user does not match actual user that runs the app. The first return value is the actual user name. This check is ignored under Windows since SSH remote login is not the main method to login on Windows.
func LastCommitCacheTTLSeconds ¶
func LastCommitCacheTTLSeconds() int64
LastCommitCacheTTLSeconds returns the TTLSeconds or unix timestamp for memcache
func LoadQueueSettings ¶
func LoadQueueSettings()
func LoadSettingsForInstall ¶
func LoadSettingsForInstall()
LoadSettingsForInstall initializes the settings for install
func MakeAbsoluteAssetURL ¶
MakeAbsoluteAssetURL returns the absolute asset url prefix without a trailing slash
func MakeManifestData ¶
MakeManifestData generates web app manifest JSON
func ParseMSSQLHostPort ¶
ParseMSSQLHostPort splits the host into host and port
func PrepareAppDataPath ¶
func PrepareAppDataPath() error
PrepareAppDataPath creates app data directory if necessary
func RestartLogsWithPIDSuffix ¶
func RestartLogsWithPIDSuffix()
RestartLogsWithPIDSuffix restarts the logs with a PID suffix on files FIXME: it seems not right, it breaks log rotating or log collectors
func SetCustomPathAndConf ¶
func SetCustomPathAndConf(providedCustom, providedConf, providedWorkPath string)
SetCustomPathAndConf will set CustomPath and CustomConf with reference to the GITEA_CUSTOM environment variable and with provided overrides before stepping back to the default
Types ¶
type AllowedVisibility ¶
type AllowedVisibility []bool
AllowedVisibility store in a 3 item bool array what is allowed
func (AllowedVisibility) IsAllowedVisibility ¶
func (a AllowedVisibility) IsAllowedVisibility(t structs.VisibleType) bool
IsAllowedVisibility check if a AllowedVisibility allow a specific VisibleType
func (AllowedVisibility) ToVisibleTypeSlice ¶
func (a AllowedVisibility) ToVisibleTypeSlice() (result []structs.VisibleType)
ToVisibleTypeSlice convert a AllowedVisibility into a VisibleType slice
type Cache ¶
type Cache struct { Enabled bool Adapter string Interval int Conn string TTL time.Duration `ini:"ITEM_TTL"` }
Cache represents cache settings
func (Cache) TTLSeconds ¶
TTLSeconds returns the TTLSeconds or unix timestamp for memcache
type ConfigProvider ¶
type ConfigProvider interface { Section(section string) ConfigSection NewSection(name string) (ConfigSection, error) GetSection(name string) (ConfigSection, error) Save() error }
ConfigProvider represents a config provider
func NewConfigProviderFromData ¶
func NewConfigProviderFromData(configContent string) (ConfigProvider, error)
NewConfigProviderFromData this function is only for testing
type ConfigSection ¶
type DatabaseType ¶
type DatabaseType string
func (DatabaseType) IsMSSQL ¶
func (t DatabaseType) IsMSSQL() bool
func (DatabaseType) IsMySQL ¶
func (t DatabaseType) IsMySQL() bool
func (DatabaseType) IsPostgreSQL ¶
func (t DatabaseType) IsPostgreSQL() bool
func (DatabaseType) IsSQLite3 ¶
func (t DatabaseType) IsSQLite3() bool
func (DatabaseType) String ¶
func (t DatabaseType) String() string
type LandingPage ¶
type LandingPage string
LandingPage describes the default page
const ( LandingPageHome LandingPage = "/" LandingPageExplore LandingPage = "/explore" LandingPageOrganizations LandingPage = "/explore/organizations" LandingPageLogin LandingPage = "/user/login" )
enumerates all the landing page types
type LogGlobalConfig ¶
type LogGlobalConfig struct { RootPath string Mode string Level log.Level StacktraceLogLevel log.Level BufferLen int EnableSSHLog bool AccessLogTemplate string RequestIDHeaders []string }
var Log LogGlobalConfig
type Mailer ¶
type Mailer struct { // Mailer Name string `ini:"NAME"` From string `ini:"FROM"` EnvelopeFrom string `ini:"ENVELOPE_FROM"` OverrideEnvelopeFrom bool `ini:"-"` FromName string `ini:"-"` FromEmail string `ini:"-"` SendAsPlainText bool `ini:"SEND_AS_PLAIN_TEXT"` SubjectPrefix string `ini:"SUBJECT_PREFIX"` // SMTP sender Protocol string `ini:"PROTOCOL"` SMTPAddr string `ini:"SMTP_ADDR"` SMTPPort string `ini:"SMTP_PORT"` User string `ini:"USER"` Passwd string `ini:"PASSWD"` EnableHelo bool `ini:"ENABLE_HELO"` HeloHostname string `ini:"HELO_HOSTNAME"` ForceTrustServerCert bool `ini:"FORCE_TRUST_SERVER_CERT"` UseClientCert bool `ini:"USE_CLIENT_CERT"` ClientCertFile string `ini:"CLIENT_CERT_FILE"` ClientKeyFile string `ini:"CLIENT_KEY_FILE"` // Sendmail sender SendmailPath string `ini:"SENDMAIL_PATH"` SendmailArgs []string `ini:"-"` SendmailTimeout time.Duration `ini:"SENDMAIL_TIMEOUT"` SendmailConvertCRLF bool `ini:"SENDMAIL_CONVERT_CRLF"` }
Mailer represents mail service.
var MailService *Mailer
MailService the global mailer
type MarkupRenderer ¶
type MarkupRenderer struct { Enabled bool MarkupName string Command string FileExtensions []string IsInputFile bool NeedPostProcess bool MarkupSanitizerRules []MarkupSanitizerRule RenderContentMode string }
MarkupRenderer defines the external parser configured in ini
type MarkupSanitizerRule ¶
type MarkupSanitizerRule struct { Element string AllowAttr string Regexp *regexp.Regexp AllowDataURIImages bool }
MarkupSanitizerRule defines the policy for whitelisting attributes on certain elements.
type OAuth2AccountLinkingType ¶
type OAuth2AccountLinkingType string
OAuth2AccountLinkingType is enum describing behaviour of linking with existing account
const ( // OAuth2AccountLinkingDisabled error will be displayed if account exist OAuth2AccountLinkingDisabled OAuth2AccountLinkingType = "disabled" // OAuth2AccountLinkingLogin account linking login will be displayed if account exist OAuth2AccountLinkingLogin OAuth2AccountLinkingType = "login" // OAuth2AccountLinkingAuto account will be automatically linked if account exist OAuth2AccountLinkingAuto OAuth2AccountLinkingType = "auto" )
type OAuth2UsernameType ¶
type OAuth2UsernameType string
OAuth2UsernameType is enum describing the way gitea 'name' should be generated from oauth2 data
const ( // OAuth2UsernameUserid oauth2 userid field will be used as gitea name OAuth2UsernameUserid OAuth2UsernameType = "userid" // OAuth2UsernameNickname oauth2 nickname field will be used as gitea name OAuth2UsernameNickname OAuth2UsernameType = "nickname" // OAuth2UsernameEmail username of oauth2 email filed will be used as gitea name OAuth2UsernameEmail OAuth2UsernameType = "email" )
type OtherConfig ¶
type QueueSettings ¶
type QueueSettings struct { Name string // not an INI option, it is the name for [queue.the-name] section Type string Datadir string ConnStr string // for leveldb or redis Length int // max queue length before blocking QueueName, SetName string // the name suffix for storage (db key, redis key), "set" is for unique queue BatchLength int MaxWorkers int }
QueueSettings represent the settings for a queue from the ini
func GetQueueSettings ¶
func GetQueueSettings(rootCfg ConfigProvider, name string) (QueueSettings, error)
Source Files ¶
- actions.go
- admin.go
- api.go
- asset_dynamic.go
- attachment.go
- cache.go
- camo.go
- config_env.go
- config_provider.go
- cors.go
- cron.go
- database.go
- federation.go
- git.go
- highlight.go
- i18n.go
- incoming_email.go
- indexer.go
- lfs.go
- log.go
- mailer.go
- markup.go
- metrics.go
- migrations.go
- mime_type_map.go
- mirror.go
- oauth2.go
- other.go
- packages.go
- picture.go
- project.go
- proxy.go
- queue.go
- repository.go
- security.go
- server.go
- service.go
- session.go
- setting.go
- ssh.go
- storage.go
- task.go
- time.go
- ui.go
- webhook.go