Documentation ¶
Overview ¶
Copyright 2016 The GitBundle Authors. All rights reserved. Use of this source code is governed by a MIT-style license that can be found in the LICENSE file.
Index ¶
- Constants
- Variables
- func AddLogDescription(key string, description *LogDescription)
- func AddSubLogDescription(key string, subLogDescription SubLogDescription) bool
- func CreateOrAppendToCustomConf(callback func(cfg *ini.File))
- func DBConnStr() (string, error)
- func Dir(name string) ([]string, error)
- func GetCronSettings(name string, config interface{}) (interface{}, error)
- func GetLogDescriptions() map[string]*LogDescription
- func Gitignore(name string) ([]byte, error)
- func IndexerGlobFromString(globstr string) []glob.Glob
- func InitDBConfig()
- func IsExternalURL(rawURL string) bool
- func IsRunUserMatchCurrentUser(runUser string) (string, bool)
- func IsValidSlackChannel(channelName string) bool
- func Labels(name string) ([]byte, error)
- func LastCommitCacheTTLSeconds() int64
- func License(name string) ([]byte, error)
- func LoadAllowEmpty()
- func LoadForTest(extraConfigs ...string)
- func LoadFromExisting()
- func Locale(name string) ([]byte, error)
- func MakeAbsoluteAssetURL(appURL, staticURLPrefix string) string
- func MakeManifestData(appName, appURL, absoluteAssetURL string) []byte
- func NewDirectorySet() directorySet
- func NewLogServices(disableConsole bool)
- func NewQueueService()
- func NewServices()
- func NewServicesForInstall()
- func NewXORMLogService(disableConsole bool)
- func ParseMSSQLHostPort(info string) (string, string)
- func PrepareAppDataPath() error
- func Readme(name string) ([]byte, error)
- func RemoveSubLogDescription(key, name string) bool
- func RemoveUsernameParameterSuffix(name string) string
- func RestartLogsWithPIDSuffix()
- func SanitizeFlashErrorString(x string) string
- func SetCustomPathAndConf(providedCustom, providedConf, providedWorkPath string)
- type AllowedVisibility
- type Cache
- 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" )
enumerates all the types of captchas
const ( IsProd = false IsBeta = false RunMode = "dev" )
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"} // 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 UseSQLite3 bool UseMySQL bool UseMSSQL bool UsePostgreSQL bool DBConnectRetries int DBConnectBackoff time.Duration MaxIdleConns int MaxOpenConns int ConnMaxLifetime time.Duration IterateBufferSize int }{ Timeout: 500, IterateBufferSize: 50, } )
var ( ExternalMarkupRenderers []*MarkupRenderer ExternalSanitizerRules []MarkupSanitizerRule MermaidMaxSourceCharacters int )
ExternalMarkupRenderers represents the external markup renderers
var ( // Picture settings Avatar = struct { Storage MaxWidth int MaxHeight int MaxFileSize int64 RenderedSizeFactor int }{ MaxWidth: 4096, MaxHeight: 3072, MaxFileSize: 1048576, RenderedSizeFactor: 3, } GravatarSource string GravatarSourceURL *url.URL DisableGravatar bool EnableFederatedAvatar bool LibravatarService *libravatar.Libravatar 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 PrefixArchiveFiles bool DisableMigrations bool DisableStars bool `ini:"DISABLE_STARS"` DefaultBranch string AllowAdoptionOfUnadoptedRepositories bool AllowDeleteOfUnadoptedRepositories bool DisableDownloadSourceArchives 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 } `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{}, PrefixArchiveFiles: true, DisableMigrations: false, DisableStars: false, DefaultBranch: "main", 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 }{ 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 ( // AppVer is the version of the current build of GitBundle. 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 gitbundle has started AppStartTime time.Time // 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 gitbundle. 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 // AppPath represents the path to the gitbundle binary AppPath string // AppWorkPath is the "working directory" of GitBundle. It maps to the environment variable GITBUNDLE_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 // AppDataPath is the default path for storing data. // It maps to ini:"APP_DATA_PATH" and defaults to AppWorkPath + "/data" AppDataPath string // LocalURL is the url for locally running applications to contact GitBundle. It always has a '/' suffix // It maps to ini:"LOCAL_ROOT_URL" LocalURL string // AssetVersion holds a opaque value that is used for cache-busting assets AssetVersion string // Server settings Protocol Scheme Domain string HTTPAddr string HTTPPort string RedirectOtherPort 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 SSH = struct { Disabled bool `ini:"DISABLE_SSH"` StartBuiltinServer bool `ini:"START_SSH_SERVER"` BuiltinServerUser string `ini:"BUILTIN_SSH_SERVER_USER"` 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/gitbundle.rsa", "ssh/gogs.rsa"}, AuthorizedKeysCommandTemplate: "{{.AppPath}} --config={{.CustomConf}} serv key-{{.Key.ID}}", PerWriteTimeout: PerWriteTimeout, PerWritePerKbTimeout: PerWritePerKbTimeout, } // Security settings InstallLock bool SecretKey string LogInRememberDays int CookieUserName string CookieRememberName string ReverseProxyAuthUser string ReverseProxyAuthEmail string ReverseProxyLimit int ReverseProxyTrustedProxies []string MinPasswordLength int ImportLocalPaths bool DisableGitHooks bool DisableWebhooks bool OnlyAllowPushIfGiteaEnvironmentSet bool PasswordComplexity []string PasswordHashAlgo string PasswordCheckPwn bool SuccessfulTokensCacheSize int Camo = struct { Enabled bool ServerURL string `ini:"SERVER_URL"` HMACKey string `ini:"HMAC_KEY"` Allways bool }{} // UI settings UI = struct { ExplorePagingNum 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 ReactionsMap map[string]bool `ini:"-"` CustomEmojis []string CustomEmojisMap map[string]string `ini:"-"` SearchRepoDescription bool UseServiceWorker 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, IssuePagingNum: 10, RepoSearchPagingNum: 10, MembersPagingNum: 20, FeedMaxCommitNum: 5, FeedPagingNum: 20, PackagesPagingNum: 20, GraphMaxCommitNum: 100, CodeCommentLines: 4, ReactionMaxUserNum: 10, MaxDisplayFileSize: 8388608, DefaultTheme: `dark`, Reactions: []string{`+1`, `-1`, `laugh`, `hooray`, `confused`, `heart`, `rocket`, `eyes`}, CustomEmojis: []string{`git`, `gitbundle`, `codeberg`, `gitlab`, `github`, `gogs`}, CustomEmojisMap: map[string]string{"git": ":git:", "gitbundle": ":gitbundle:", "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: "GitBundle", Description: "A Bundled Git Service", Keywords: "go,git,self-hosted,gitbundle", }, } // Markdown settings Markdown = struct { EnableHardLineBreakInComments bool EnableHardLineBreakInDocuments bool CustomURLSchemes []string `ini:"CUSTOM_URL_SCHEMES"` FileExtensions []string }{ EnableHardLineBreakInComments: true, EnableHardLineBreakInDocuments: false, FileExtensions: strings.Split(".md,.markdown,.mdown,.mkd", ","), } // Admin settings Admin struct { DisableRegularOrgCreation bool DefaultEmailNotification string } // Log settings LogLevel log.Level StacktraceLogLevel string LogRootPath string EnableSSHLog bool EnableXORMLog bool DisableRouterLog bool EnableAccessLog bool AccessLogTemplate string // Time settings TimeFormat string // UILocation is the location on the UI, so that we can display the time on UI. DefaultUILocation = time.Local CSRFCookieName = "_csrf" CSRFCookieHTTPOnly = true ManifestData string // API settings 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, } 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, } // FIXME: DEPRECATED to be removed in v1.18.0 U2F = struct { AppID string }{} // Metrics settings Metrics = struct { Enabled bool Token string EnabledIssueByLabel bool EnabledIssueByRepository bool }{ Enabled: false, Token: "", EnabledIssueByLabel: false, EnabledIssueByRepository: false, } // I18n settings Langs []string Names []string // Other settings // Global setting objects Cfg *ini.File CustomPath string // Custom directory path CustomConf string PIDFile = "/run/gitbundle.pid" WritePIDFile bool RunUser string IsWindows bool HasRobotsTxt bool InternalToken string // internal access token )
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 XFrameOptions string }{ Enabled: false, 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 ( Deployment = struct { DebugRunningDuration time.Duration VerifyRunningDuration time.Duration Disable bool }{} )
var ( Federation = struct { Enabled bool ShareUserStatistics bool }{ Enabled: false, ShareUserStatistics: true, } )
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 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 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 ( Nsq = struct { ClusterTcpAddr string AuthSecret string Debug bool Disable bool }{} )
var OAuth2Client struct { RegisterEmailConfirm bool OpenIDConnectScopes []string EnableAutoRegistration bool Username OAuth2UsernameType UpdateAvatar bool AccountLinking OAuth2AccountLinkingType }
OAuth2Client settings
var ( Packages = struct { Storage EnableForAllOrgs bool ChunkedUploadPath string RegistryHost string }{ EnableForAllOrgs: true, } )
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 ( Redis = struct { Connection string Debug bool Disable bool }{} )
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 EnableCaptcha bool RequireExternalRegistrationCaptcha bool RequireExternalRegistrationPassword bool CaptchaType string RecaptchaSecret string RecaptchaSitekey string RecaptchaURL string HcaptchaSecret string HcaptchaSitekey 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 { 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-gitbundle", Gclifetime: 86400, Maxlifetime: 86400, SameSite: http.SameSiteLaxMode, }
SessionConfig defines Session 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 ¶
func AddLogDescription(key string, description *LogDescription)
AddLogDescription adds a set of descriptions to the complete description
func AddSubLogDescription ¶
func AddSubLogDescription(key string, subLogDescription SubLogDescription) bool
AddSubLogDescription adds a sub log description
func CreateOrAppendToCustomConf ¶
CreateOrAppendToCustomConf creates or updates the custom config. Use the callback to set individual values.
func GetCronSettings ¶
GetCronSettings maps the cron subsection to the provided config
func GetLogDescriptions ¶
func GetLogDescriptions() map[string]*LogDescription
GetLogDescriptions returns a race safe set of descriptions
func IndexerGlobFromString ¶
IndexerGlobFromString parses a comma separated list of patterns and returns a glob.Glob slice suited for repo indexing
func IsExternalURL ¶
IsExternalURL checks if rawURL points to an external URL like http://example.com
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 IsValidSlackChannel ¶
IsValidSlackChannel validates a channel name conforms to what slack expects. It makes sure a channel name cannot be empty and invalid ( only an # )
func LastCommitCacheTTLSeconds ¶
func LastCommitCacheTTLSeconds() int64
LastCommitCacheTTLSeconds returns the TTLSeconds or unix timestamp for memcache
func LoadAllowEmpty ¶
func LoadAllowEmpty()
LoadAllowEmpty initializes setting options, it's also fine that if the config file (app.ini) doesn't exist
func LoadForTest ¶
func LoadForTest(extraConfigs ...string)
LoadForTest initializes setting options for tests
func LoadFromExisting ¶
func LoadFromExisting()
LoadFromExisting initializes setting options from an existing config file (app.ini)
func MakeAbsoluteAssetURL ¶
MakeAbsoluteAssetURL returns the absolute asset url prefix without a trailing slash
func MakeManifestData ¶
MakeManifestData generates web app manifest JSON
func NewDirectorySet ¶
func NewDirectorySet() directorySet
func NewLogServices ¶
func NewLogServices(disableConsole bool)
NewLogServices creates all the log services
func NewQueueService ¶
func NewQueueService()
NewQueueService sets up the default settings for Queues This is exported for tests to be able to use the queue
func NewServicesForInstall ¶
func NewServicesForInstall()
NewServicesForInstall initializes the services for install
func NewXORMLogService ¶
func NewXORMLogService(disableConsole bool)
NewXORMLogService initializes xorm logger service
func ParseMSSQLHostPort ¶
ParseMSSQLHostPort splits the host into host and port
func PrepareAppDataPath ¶
func PrepareAppDataPath() error
PrepareAppDataPath creates app data directory if necessary
func RemoveSubLogDescription ¶
RemoveSubLogDescription removes a sub log description
func RemoveUsernameParameterSuffix ¶
RemoveUsernameParameterSuffix returns the username parameter without the (fullname) suffix - leaving just the username
func RestartLogsWithPIDSuffix ¶
func RestartLogsWithPIDSuffix()
RestartLogsWithPIDSuffix restarts the logs with a PID suffix on files
func SanitizeFlashErrorString ¶
SanitizeFlashErrorString will sanitize a flash error string
func SetCustomPathAndConf ¶
func SetCustomPathAndConf(providedCustom, providedConf, providedWorkPath string)
SetCustomPathAndConf will set CustomPath and CustomConf with reference to the GITBUNDLE_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 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 ¶
type LogDescription struct { Name string SubLogDescriptions []SubLogDescription }
LogDescription describes a named logger
type Mailer ¶
type Mailer struct { // Mailer Name string From string EnvelopeFrom string OverrideEnvelopeFrom bool `ini:"-"` FromName string FromEmail string SendAsPlainText bool MailerType string SubjectPrefix string // SMTP sender Host string User, Passwd string DisableHelo bool HeloHostname string SkipVerify bool UseCertificate bool CertFile, KeyFile string IsTLSEnabled bool // Sendmail sender SendmailPath string SendmailArgs []string SendmailTimeout time.Duration SendmailConvertCRLF bool }
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 gitbundle 'name' should be generated from oauth2 data
const ( // OAuth2UsernameUserid oauth2 userid field will be used as gitbundle name OAuth2UsernameUserid OAuth2UsernameType = "userid" // OAuth2UsernameNickname oauth2 nickname field will be used as gitbundle name OAuth2UsernameNickname OAuth2UsernameType = "nickname" // OAuth2UsernameEmail username of oauth2 email filed will be used as gitbundle name OAuth2UsernameEmail OAuth2UsernameType = "email" )
type QueueSettings ¶
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 ¶
func GetQueueSettings(name string) QueueSettings
GetQueueSettings returns the queue settings for the appropriately named queue
type SubLogDescription ¶
SubLogDescription describes a sublogger
Source Files ¶
- attachment.go
- cache.go
- cors.go
- cron.go
- database.go
- deployment.go
- directory.go
- federation.go
- git.go
- i18n.go
- indexer.go
- lfs.go
- log.go
- mailer.go
- markup.go
- migrations.go
- mime_type_map.go
- mirror.go
- nsq.go
- oauth2_client.go
- options.go
- packages.go
- picture.go
- project.go
- proxy.go
- queue.go
- redis.go
- repository.go
- service.go
- session.go
- setting.go
- setting_dev.go
- storage.go
- task.go
- utils.go
- webhook.go