@@ -62,6 +62,9 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`. | |||||
HTTP protocol. | HTTP protocol. | ||||
- `USE_COMPAT_SSH_URI`: **false**: Force ssh:// clone url instead of scp-style uri when | - `USE_COMPAT_SSH_URI`: **false**: Force ssh:// clone url instead of scp-style uri when | ||||
default SSH port is used. | default SSH port is used. | ||||
- `ACCESS_CONTROL_ALLOW_ORIGIN`: **\<empty\>**: Value for Access-Control-Allow-Origin header, | |||||
default is not to present. **WARNING**: This maybe harmful to you website if you do not | |||||
give it a right value. | |||||
### Repository - Pull Request (`repository.pull-request`) | ### Repository - Pull Request (`repository.pull-request`) | ||||
- `WORK_IN_PROGRESS_PREFIXES`: **WIP:,\[WIP\]**: List of prefixes used in Pull Request | - `WORK_IN_PROGRESS_PREFIXES`: **WIP:,\[WIP\]**: List of prefixes used in Pull Request | ||||
@@ -201,15 +201,16 @@ var ( | |||||
// Repository settings | // Repository settings | ||||
Repository = struct { | Repository = struct { | ||||
AnsiCharset string | |||||
ForcePrivate bool | |||||
DefaultPrivate string | |||||
MaxCreationLimit int | |||||
MirrorQueueLength int | |||||
PullRequestQueueLength int | |||||
PreferredLicenses []string | |||||
DisableHTTPGit bool | |||||
UseCompatSSHURI bool | |||||
AnsiCharset string | |||||
ForcePrivate bool | |||||
DefaultPrivate string | |||||
MaxCreationLimit int | |||||
MirrorQueueLength int | |||||
PullRequestQueueLength int | |||||
PreferredLicenses []string | |||||
DisableHTTPGit bool | |||||
AccessControlAllowOrigin string | |||||
UseCompatSSHURI bool | |||||
// Repository editor settings | // Repository editor settings | ||||
Editor struct { | Editor struct { | ||||
@@ -237,15 +238,16 @@ var ( | |||||
WorkInProgressPrefixes []string | WorkInProgressPrefixes []string | ||||
} `ini:"repository.pull-request"` | } `ini:"repository.pull-request"` | ||||
}{ | }{ | ||||
AnsiCharset: "", | |||||
ForcePrivate: false, | |||||
DefaultPrivate: RepoCreatingLastUserVisibility, | |||||
MaxCreationLimit: -1, | |||||
MirrorQueueLength: 1000, | |||||
PullRequestQueueLength: 1000, | |||||
PreferredLicenses: []string{"Apache License 2.0,MIT License"}, | |||||
DisableHTTPGit: false, | |||||
UseCompatSSHURI: false, | |||||
AnsiCharset: "", | |||||
ForcePrivate: false, | |||||
DefaultPrivate: RepoCreatingLastUserVisibility, | |||||
MaxCreationLimit: -1, | |||||
MirrorQueueLength: 1000, | |||||
PullRequestQueueLength: 1000, | |||||
PreferredLicenses: []string{"Apache License 2.0,MIT License"}, | |||||
DisableHTTPGit: false, | |||||
AccessControlAllowOrigin: "", | |||||
UseCompatSSHURI: false, | |||||
// Repository editor settings | // Repository editor settings | ||||
Editor: struct { | Editor: struct { | ||||
@@ -27,6 +27,18 @@ import ( | |||||
// HTTP implmentation git smart HTTP protocol | // HTTP implmentation git smart HTTP protocol | ||||
func HTTP(ctx *context.Context) { | func HTTP(ctx *context.Context) { | ||||
if len(setting.Repository.AccessControlAllowOrigin) > 0 { | |||||
// Set CORS headers for browser-based git clients | |||||
ctx.Resp.Header().Set("Access-Control-Allow-Origin", setting.Repository.AccessControlAllowOrigin) | |||||
ctx.Resp.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization, User-Agent") | |||||
// Handle preflight OPTIONS request | |||||
if ctx.Req.Method == "OPTIONS" { | |||||
ctx.Status(http.StatusOK) | |||||
return | |||||
} | |||||
} | |||||
username := ctx.Params(":username") | username := ctx.Params(":username") | ||||
reponame := strings.TrimSuffix(ctx.Params(":reponame"), ".git") | reponame := strings.TrimSuffix(ctx.Params(":reponame"), ".git") | ||||