Documentation ¶
Index ¶
- Constants
- Variables
- func AddLogDescription(key string, description *LogDescription)
- func AddSubLogDescription(key string, subLogDescription SubLogDescription) bool
- func CreateOrAppendToCustomConf(purpose string, callback func(cfg *ini.File))
- func DBConnStr() (string, error)
- func GetCronSettings(name string, config interface{}) (interface{}, error)
- func GetDefaultDisableGravatar() bool
- func GetDefaultEnableFederatedAvatar(disableGravatar bool) bool
- func GetHighlightMapping() map[string]string
- func GetLogDescriptions() map[string]*LogDescription
- func IndexerGlobFromString(globstr string) []glob.Glob
- func InitLogs(disableConsole bool)
- func InitProviderAllowEmpty()
- func InitProviderAndLoadCommonSettingsForTest(extraConfigs ...string)
- func InitProviderFromExistingFile()
- func InitSQLLog(disableConsole bool)
- func IsRunUserMatchCurrentUser(runUser string) (string, bool)
- func LastCommitCacheTTLSeconds() int64
- func LoadCommonSettings()
- func LoadDBSetting()
- func LoadQueueSettings()
- func LoadSettings()
- func LoadSettingsForInstall()
- func MakeAbsoluteAssetURL(appURL, staticURLPrefix string) string
- func MakeManifestData(appName, appURL, absoluteAssetURL string) []byte
- func ParseMSSQLHostPort(info string) (string, string)
- func PrepareAppDataPath() error
- func RemoveSubLogDescription(key, name string) bool
- func RestartLogsWithPIDSuffix()
- func SetCustomPathAndConf(providedCustom, providedConf, providedWorkPath string)
- type AllowedVisibility
- type Cache
- type ConfigProvider
- type LandingPage
- type LogDescription
- type Mailer
- type MarkupRenderer
- type MarkupSanitizerRule
- type OAuth2AccountLinkingType
- type OAuth2UsernameType
- type QueueSettings
- type Scheme
- type Storage
- type SubLogDescription
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 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 string Host string Name string User string Passwd string Schema string SSLMode string Path string LogSQL bool Charset string Timeout int // seconds SQLiteJournalMode string UseSQLite3 bool UseMySQL bool UseMSSQL bool UsePostgreSQL bool 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 ( // Other settings EnableFeed bool EnableSitemap bool )
var ( // Picture settings Avatar = struct { Storage MaxWidth int MaxHeight int MaxFileSize int64 RenderedSizeFactor int }{ MaxWidth: 4096, MaxHeight: 3072, MaxFileSize: 1048576, RenderedSizeFactor: 3, } GravatarSource string DisableGravatar bool // Depreciated: migrated to database EnableFederatedAvatar bool // Depreciated: migrated to database RepoAvatar = struct { Storage Fallback string FallbackImage string }{} )
settings
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 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 PreviewableFileModes []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 PreviewableFileModes []string }{ LineWrapExtensions: strings.Split(".txt,.md,.markdown,.mdown,.mkd,", ","), PreviewableFileModes: []string{"markdown"}, }, 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 // Global setting objects CfgProvider ConfigProvider CustomPath string // Custom directory path CustomConf string PIDFile = "/run/gitea.pid" WritePIDFile bool RunMode string RunUser string IsProd bool IsWindows bool )
settings
var ( // Time settings TimeFormat string // UILocation is the location on the UI, so that we can display the time on UI. DefaultUILocation = time.Local )
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 { Storage // how the created logs 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 }{ Enabled: false, MaxAge: 10 * time.Minute, Headers: []string{"Content-Type", "User-Agent"}, 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 ( 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 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"` }{ 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 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 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: "", 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 Log struct { Level log.Level StacktraceLogLevel string RootPath string EnableSSHLog bool EnableXORMLog bool DisableRouterLog bool EnableAccessLog bool AccessLogTemplate string BufferLength int64 }
Log settings
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", ","), 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 ( Packages = struct { Storage Enabled bool ChunkedUploadPath string RegistryHost string LimitTotalOwnerCount int64 LimitTotalOwnerSize int64 LimitSizeCargo int64 LimitSizeChef int64 LimitSizeComposer int64 LimitSizeConan int64 LimitSizeConda int64 LimitSizeContainer int64 LimitSizeGeneric int64 LimitSizeHelm int64 LimitSizeMaven int64 LimitSizeNpm int64 LimitSizeNuGet int64 LimitSizePub int64 LimitSizePyPI int64 LimitSizeRubyGems 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 Queue = QueueSettings{}
Queue 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: "ssh-keygen", 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 EmailDomainWhitelist []string EmailDomainBlocklist []string 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 "/". 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: `#6cc644`, 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 AddLogDescription ¶ added in v1.13.0
func AddLogDescription(key string, description *LogDescription)
AddLogDescription adds a set of descriptions to the complete description
func AddSubLogDescription ¶ added in v1.13.0
func AddSubLogDescription(key string, subLogDescription SubLogDescription) bool
AddSubLogDescription adds a sub log description
func CreateOrAppendToCustomConf ¶ added in v1.15.0
CreateOrAppendToCustomConf creates or updates the custom config. Use the callback to set individual values.
func GetCronSettings ¶ added in v1.12.0
GetCronSettings maps the cron subsection to the provided config
func GetDefaultDisableGravatar ¶ added in v1.17.4
func GetDefaultDisableGravatar() bool
func GetDefaultEnableFederatedAvatar ¶ added in v1.17.4
func GetHighlightMapping ¶ added in v1.19.0
func GetLogDescriptions ¶ added in v1.13.0
func GetLogDescriptions() map[string]*LogDescription
GetLogDescriptions returns a race safe set of descriptions
func IndexerGlobFromString ¶ added in v1.10.0
IndexerGlobFromString parses a comma separated list of patterns and returns a glob.Glob slice suited for repo indexing
func InitLogs ¶ added in v1.19.0
func InitLogs(disableConsole bool)
InitLogs creates all the log services
func InitProviderAllowEmpty ¶ added in v1.19.0
func InitProviderAllowEmpty()
InitProviderAllowEmpty initializes config provider from file, it's also fine that if the config file (app.ini) doesn't exist
func InitProviderAndLoadCommonSettingsForTest ¶ added in v1.19.0
func InitProviderAndLoadCommonSettingsForTest(extraConfigs ...string)
InitProviderAndLoadCommonSettingsForTest initializes config provider and load common setttings for tests
func InitProviderFromExistingFile ¶ added in v1.19.0
func InitProviderFromExistingFile()
InitProviderFromExistingFile initializes config provider from an existing config file (app.ini)
func InitSQLLog ¶ added in v1.19.0
func InitSQLLog(disableConsole bool)
InitSQLLog initializes xorm logger setting
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 ¶ added in v1.14.0
func LastCommitCacheTTLSeconds() int64
LastCommitCacheTTLSeconds returns the TTLSeconds or unix timestamp for memcache
func LoadCommonSettings ¶ added in v1.19.0
func LoadCommonSettings()
LoadCommonSettings loads common configurations from a configuration provider.
func LoadDBSetting ¶ added in v1.19.0
func LoadDBSetting()
LoadDBSetting loads the database settings
func LoadQueueSettings ¶ added in v1.19.0
func LoadQueueSettings()
LoadQueueSettings sets up the default settings for Queues This is exported for tests to be able to use the queue
func LoadSettings ¶ added in v1.19.0
func LoadSettings()
LoadSettings initializes the settings for normal start up
func LoadSettingsForInstall ¶ added in v1.19.0
func LoadSettingsForInstall()
LoadSettingsForInstall initializes the settings for install
func MakeAbsoluteAssetURL ¶ added in v1.14.0
MakeAbsoluteAssetURL returns the absolute asset url prefix without a trailing slash
func MakeManifestData ¶ added in v1.14.0
MakeManifestData generates web app manifest JSON
func ParseMSSQLHostPort ¶ added in v1.10.0
ParseMSSQLHostPort splits the host into host and port
func PrepareAppDataPath ¶ added in v1.16.0
func PrepareAppDataPath() error
PrepareAppDataPath creates app data directory if necessary
func RemoveSubLogDescription ¶ added in v1.13.0
RemoveSubLogDescription removes a sub log description
func RestartLogsWithPIDSuffix ¶ added in v1.11.0
func RestartLogsWithPIDSuffix()
RestartLogsWithPIDSuffix restarts the logs with a PID suffix on files
func SetCustomPathAndConf ¶ added in v1.9.0
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 ¶ added in v1.15.0
type AllowedVisibility []bool
AllowedVisibility store in a 3 item bool array what is allowed
func (AllowedVisibility) IsAllowedVisibility ¶ added in v1.15.0
func (a AllowedVisibility) IsAllowedVisibility(t structs.VisibleType) bool
IsAllowedVisibility check if a AllowedVisibility allow a specific VisibleType
func (AllowedVisibility) ToVisibleTypeSlice ¶ added in v1.15.0
func (a AllowedVisibility) ToVisibleTypeSlice() (result []structs.VisibleType)
ToVisibleTypeSlice convert a AllowedVisibility into a VisibleType slice
type Cache ¶ added in v1.3.0
type Cache struct { Enabled bool Adapter string Interval int Conn string TTL time.Duration `ini:"ITEM_TTL"` }
Cache represents cache settings
func (Cache) TTLSeconds ¶ added in v1.14.0
TTLSeconds returns the TTLSeconds or unix timestamp for memcache
type ConfigProvider ¶ added in v1.19.0
type ConfigProvider interface { Section(section string) *ini.Section NewSection(name string) (*ini.Section, error) GetSection(name string) (*ini.Section, error) }
ConfigProvider represents a config provider
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 LogDescription ¶ added in v1.9.0
type LogDescription struct { Name string SubLogDescriptions []SubLogDescription }
LogDescription describes a named logger
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 ¶ added in v1.15.0
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 ¶ added in v1.11.0
type MarkupSanitizerRule struct { Element string AllowAttr string Regexp *regexp.Regexp AllowDataURIImages bool }
MarkupSanitizerRule defines the policy for whitelisting attributes on certain elements.
type OAuth2AccountLinkingType ¶ added in v1.15.0
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 ¶ added in v1.15.0
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 QueueSettings ¶ added in v1.11.0
type QueueSettings struct { Name string DataDir string QueueLength int `ini:"LENGTH"` BatchLength int ConnectionString string Type string QueueName string SetName string WrapIfNecessary bool MaxAttempts int Timeout time.Duration Workers int MaxWorkers int BlockTimeout time.Duration BoostTimeout time.Duration BoostWorkers int }
QueueSettings represent the settings for a queue from the ini
func GetQueueSettings ¶ added in v1.11.0
func GetQueueSettings(name string) QueueSettings
GetQueueSettings returns the queue settings for the appropriately named queue
type SubLogDescription ¶ added in v1.9.0
SubLogDescription describes a sublogger
Source Files ¶
- actions.go
- admin.go
- api.go
- attachment.go
- cache.go
- camo.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