mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 08:02:36 +09:00 
			
		
		
		
	Add disable download source configuration (#20548)
Add configuration to enable/disable download source from UI. Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
		@@ -879,6 +879,9 @@ ROUTER = console
 | 
				
			|||||||
;; Allow deletion of unadopted repositories
 | 
					;; Allow deletion of unadopted repositories
 | 
				
			||||||
;ALLOW_DELETION_OF_UNADOPTED_REPOSITORIES = false
 | 
					;ALLOW_DELETION_OF_UNADOPTED_REPOSITORIES = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					;; Don't allow download source archive files from UI
 | 
				
			||||||
 | 
					;DISABLE_DOWNLOAD_SOURCE_ARCHIVES = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
					;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
				
			||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
					;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 | 
				
			||||||
;[repository.editor]
 | 
					;[repository.editor]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -78,6 +78,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
 | 
				
			|||||||
- `DEFAULT_BRANCH`: **main**: Default branch name of all repositories.
 | 
					- `DEFAULT_BRANCH`: **main**: Default branch name of all repositories.
 | 
				
			||||||
- `ALLOW_ADOPTION_OF_UNADOPTED_REPOSITORIES`: **false**: Allow non-admin users to adopt unadopted repositories
 | 
					- `ALLOW_ADOPTION_OF_UNADOPTED_REPOSITORIES`: **false**: Allow non-admin users to adopt unadopted repositories
 | 
				
			||||||
- `ALLOW_DELETION_OF_UNADOPTED_REPOSITORIES`: **false**: Allow non-admin users to delete unadopted repositories
 | 
					- `ALLOW_DELETION_OF_UNADOPTED_REPOSITORIES`: **false**: Allow non-admin users to delete unadopted repositories
 | 
				
			||||||
 | 
					- `DISABLE_DOWNLOAD_SOURCE_ARCHIVES`: **false**: Don't allow download source archive files from UI
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Repository - Editor (`repository.editor`)
 | 
					### Repository - Editor (`repository.editor`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,6 +48,7 @@ var (
 | 
				
			|||||||
		DefaultBranch                           string
 | 
							DefaultBranch                           string
 | 
				
			||||||
		AllowAdoptionOfUnadoptedRepositories    bool
 | 
							AllowAdoptionOfUnadoptedRepositories    bool
 | 
				
			||||||
		AllowDeleteOfUnadoptedRepositories      bool
 | 
							AllowDeleteOfUnadoptedRepositories      bool
 | 
				
			||||||
 | 
							DisableDownloadSourceArchives           bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Repository editor settings
 | 
							// Repository editor settings
 | 
				
			||||||
		Editor struct {
 | 
							Editor struct {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,10 +35,11 @@ func BaseVars() Vars {
 | 
				
			|||||||
		"IsLandingPageExplore":       setting.LandingPageURL == setting.LandingPageExplore,
 | 
							"IsLandingPageExplore":       setting.LandingPageURL == setting.LandingPageExplore,
 | 
				
			||||||
		"IsLandingPageOrganizations": setting.LandingPageURL == setting.LandingPageOrganizations,
 | 
							"IsLandingPageOrganizations": setting.LandingPageURL == setting.LandingPageOrganizations,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		"ShowRegistrationButton":      setting.Service.ShowRegistrationButton,
 | 
							"ShowRegistrationButton":        setting.Service.ShowRegistrationButton,
 | 
				
			||||||
		"ShowMilestonesDashboardPage": setting.Service.ShowMilestonesDashboardPage,
 | 
							"ShowMilestonesDashboardPage":   setting.Service.ShowMilestonesDashboardPage,
 | 
				
			||||||
		"ShowFooterBranding":          setting.ShowFooterBranding,
 | 
							"ShowFooterBranding":            setting.ShowFooterBranding,
 | 
				
			||||||
		"ShowFooterVersion":           setting.ShowFooterVersion,
 | 
							"ShowFooterVersion":             setting.ShowFooterVersion,
 | 
				
			||||||
 | 
							"DisableDownloadSourceArchives": setting.Repository.DisableDownloadSourceArchives,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		"EnableSwagger":      setting.API.EnableSwagger,
 | 
							"EnableSwagger":      setting.API.EnableSwagger,
 | 
				
			||||||
		"EnableOpenIDSignIn": setting.Service.EnableOpenIDSignIn,
 | 
							"EnableOpenIDSignIn": setting.Service.EnableOpenIDSignIn,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -290,6 +290,13 @@ func RegisterRoutes(m *web.Route) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						dlSourceEnabled := func(ctx *context.Context) {
 | 
				
			||||||
 | 
							if setting.Repository.DisableDownloadSourceArchives {
 | 
				
			||||||
 | 
								ctx.Error(http.StatusNotFound)
 | 
				
			||||||
 | 
								return
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// FIXME: not all routes need go through same middleware.
 | 
						// FIXME: not all routes need go through same middleware.
 | 
				
			||||||
	// Especially some AJAX requests, we can reduce middleware number to improve performance.
 | 
						// Especially some AJAX requests, we can reduce middleware number to improve performance.
 | 
				
			||||||
	// Routers.
 | 
						// Routers.
 | 
				
			||||||
@@ -1106,7 +1113,7 @@ func RegisterRoutes(m *web.Route) {
 | 
				
			|||||||
		m.Group("/archive", func() {
 | 
							m.Group("/archive", func() {
 | 
				
			||||||
			m.Get("/*", repo.Download)
 | 
								m.Get("/*", repo.Download)
 | 
				
			||||||
			m.Post("/*", repo.InitiateDownload)
 | 
								m.Post("/*", repo.InitiateDownload)
 | 
				
			||||||
		}, repo.MustBeNotEmpty, reqRepoCodeReader)
 | 
							}, repo.MustBeNotEmpty, dlSourceEnabled, reqRepoCodeReader)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		m.Group("/branches", func() {
 | 
							m.Group("/branches", func() {
 | 
				
			||||||
			m.Get("", repo.Branches)
 | 
								m.Get("", repo.Branches)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,12 +31,14 @@
 | 
				
			|||||||
		<br>
 | 
							<br>
 | 
				
			||||||
		{{.locale.Tr "mail.release.downloads"}}
 | 
							{{.locale.Tr "mail.release.downloads"}}
 | 
				
			||||||
		<ul>
 | 
							<ul>
 | 
				
			||||||
 | 
								{{if not .DisableDownloadSourceArchives}}
 | 
				
			||||||
			<li>
 | 
								<li>
 | 
				
			||||||
				<a href="{{.Release.Repo.Link}}/archive/{{.Release.TagName | PathEscapeSegments}}.zip" rel="nofollow"><strong>{{.locale.Tr "mail.release.download.zip"}}</strong></a>
 | 
									<a href="{{.Release.Repo.Link}}/archive/{{.Release.TagName | PathEscapeSegments}}.zip" rel="nofollow"><strong>{{.locale.Tr "mail.release.download.zip"}}</strong></a>
 | 
				
			||||||
			</li>
 | 
								</li>
 | 
				
			||||||
			<li>
 | 
								<li>
 | 
				
			||||||
				<a href="{{.Release.Repo.Link}}/archive/{{.Release.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow"><strong>{{.locale.Tr "mail.release.download.targz"}}</strong></a>
 | 
									<a href="{{.Release.Repo.Link}}/archive/{{.Release.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow"><strong>{{.locale.Tr "mail.release.download.targz"}}</strong></a>
 | 
				
			||||||
			</li>
 | 
								</li>
 | 
				
			||||||
 | 
								{{end}}
 | 
				
			||||||
			{{if .Release.Attachments}}
 | 
								{{if .Release.Attachments}}
 | 
				
			||||||
				{{range .Release.Attachments}}
 | 
									{{range .Release.Attachments}}
 | 
				
			||||||
					<li>
 | 
										<li>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,13 +26,15 @@
 | 
				
			|||||||
										{{svg "octicon-git-branch"}}
 | 
															{{svg "octicon-git-branch"}}
 | 
				
			||||||
									</div>
 | 
														</div>
 | 
				
			||||||
								{{end}}
 | 
													{{end}}
 | 
				
			||||||
								<div class="ui basic jump dropdown icon button tooltip" data-content="{{$.locale.Tr "repo.branch.download" ($.DefaultBranch)}}" data-position="top right">
 | 
													{{if not $.DisableDownloadSourceArchives}}
 | 
				
			||||||
									{{svg "octicon-download"}}
 | 
														<div class="ui basic jump dropdown icon button tooltip" data-content="{{$.locale.Tr "repo.branch.download" ($.DefaultBranch)}}" data-position="top right">
 | 
				
			||||||
									<div class="menu">
 | 
															{{svg "octicon-download"}}
 | 
				
			||||||
										<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.DefaultBranch}}.zip" rel="nofollow">{{svg "octicon-file-zip"}} ZIP</a>
 | 
															<div class="menu">
 | 
				
			||||||
										<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.DefaultBranch}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip"}} TAR.GZ</a>
 | 
																<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.DefaultBranch}}.zip" rel="nofollow">{{svg "octicon-file-zip"}} ZIP</a>
 | 
				
			||||||
 | 
																<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.DefaultBranch}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip"}} TAR.GZ</a>
 | 
				
			||||||
 | 
															</div>
 | 
				
			||||||
									</div>
 | 
														</div>
 | 
				
			||||||
								</div>
 | 
													{{end}}
 | 
				
			||||||
							</td>
 | 
												</td>
 | 
				
			||||||
						</tr>
 | 
											</tr>
 | 
				
			||||||
					</tbody>
 | 
										</tbody>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -124,6 +124,7 @@
 | 
				
			|||||||
				{{if eq $n 0}}
 | 
									{{if eq $n 0}}
 | 
				
			||||||
					<div class="ui action tiny input" id="clone-panel">
 | 
										<div class="ui action tiny input" id="clone-panel">
 | 
				
			||||||
						{{template "repo/clone_buttons" .}}
 | 
											{{template "repo/clone_buttons" .}}
 | 
				
			||||||
 | 
											{{if not .DisableDownloadSourceArchives}}
 | 
				
			||||||
						<button id="download-btn" class="ui basic jump dropdown icon button tooltip" data-content="{{.locale.Tr "repo.download_archive"}}" data-position="top right">
 | 
											<button id="download-btn" class="ui basic jump dropdown icon button tooltip" data-content="{{.locale.Tr "repo.download_archive"}}" data-position="top right">
 | 
				
			||||||
							{{svg "octicon-download"}}
 | 
												{{svg "octicon-download"}}
 | 
				
			||||||
							<div class="menu">
 | 
												<div class="menu">
 | 
				
			||||||
@@ -133,6 +134,7 @@
 | 
				
			|||||||
								<a class="item" href="vscode://vscode.git/clone?url={{$.RepoCloneLink.HTTPS}}">{{svg "gitea-vscode" 16 "mr-3"}}{{.locale.Tr "repo.clone_in_vsc"}}</a>
 | 
													<a class="item" href="vscode://vscode.git/clone?url={{$.RepoCloneLink.HTTPS}}">{{svg "gitea-vscode" 16 "mr-3"}}{{.locale.Tr "repo.clone_in_vsc"}}</a>
 | 
				
			||||||
							</div>
 | 
												</div>
 | 
				
			||||||
						</button>
 | 
											</button>
 | 
				
			||||||
 | 
											{{end}}
 | 
				
			||||||
					</div>
 | 
										</div>
 | 
				
			||||||
				{{end}}
 | 
									{{end}}
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,8 +37,10 @@
 | 
				
			|||||||
								<div class="download df ac">
 | 
													<div class="download df ac">
 | 
				
			||||||
									{{if $.Permission.CanRead $.UnitTypeCode}}
 | 
														{{if $.Permission.CanRead $.UnitTypeCode}}
 | 
				
			||||||
										<a class="mr-3 mono" href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow">{{svg "octicon-git-commit" 16 "mr-2"}}{{ShortSha .Sha1}}</a>
 | 
															<a class="mr-3 mono" href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow">{{svg "octicon-git-commit" 16 "mr-2"}}{{ShortSha .Sha1}}</a>
 | 
				
			||||||
										<a class="archive-link mr-3" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16 "mr-2"}}ZIP</a>
 | 
															{{if not $.DisableDownloadSourceArchives}}
 | 
				
			||||||
										<a class="archive-link mr-3" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip" 16 "mr-2"}}TAR.GZ</a>
 | 
																<a class="archive-link mr-3" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16 "mr-2"}}ZIP</a>
 | 
				
			||||||
 | 
																<a class="archive-link mr-3" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip" 16 "mr-2"}}TAR.GZ</a>
 | 
				
			||||||
 | 
															{{end}}
 | 
				
			||||||
										{{if (and $.CanCreateRelease $release.IsTag)}}
 | 
															{{if (and $.CanCreateRelease $release.IsTag)}}
 | 
				
			||||||
											<a class="mr-3" href="{{$.RepoLink}}/releases/new?tag={{.TagName}}">{{svg "octicon-tag" 16 "mr-2"}}{{$.locale.Tr "repo.release.new_release"}}</a>
 | 
																<a class="mr-3" href="{{$.RepoLink}}/releases/new?tag={{.TagName}}">{{svg "octicon-tag" 16 "mr-2"}}{{$.locale.Tr "repo.release.new_release"}}</a>
 | 
				
			||||||
										{{end}}
 | 
															{{end}}
 | 
				
			||||||
@@ -104,8 +106,10 @@
 | 
				
			|||||||
							<div class="download">
 | 
												<div class="download">
 | 
				
			||||||
							{{if $.Permission.CanRead $.UnitTypeCode}}
 | 
												{{if $.Permission.CanRead $.UnitTypeCode}}
 | 
				
			||||||
								<a class="mono" href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow">{{svg "octicon-git-commit" 16 "mr-2"}}{{ShortSha .Sha1}}</a>
 | 
													<a class="mono" href="{{$.RepoLink}}/src/commit/{{.Sha1}}" rel="nofollow">{{svg "octicon-git-commit" 16 "mr-2"}}{{ShortSha .Sha1}}</a>
 | 
				
			||||||
								<a class="archive-link" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.zip" rel="nofollow">{{svg "octicon-file-zip"}} ZIP</a>
 | 
													{{if not $.DisableDownloadSourceArchives}}
 | 
				
			||||||
								<a class="archive-link" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip"}} TAR.GZ</a>
 | 
														<a class="archive-link" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.zip" rel="nofollow">{{svg "octicon-file-zip"}} ZIP</a>
 | 
				
			||||||
 | 
														<a class="archive-link" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip"}} TAR.GZ</a>
 | 
				
			||||||
 | 
													{{end}}
 | 
				
			||||||
							{{end}}
 | 
												{{end}}
 | 
				
			||||||
							</div>
 | 
												</div>
 | 
				
			||||||
						{{else}}
 | 
											{{else}}
 | 
				
			||||||
@@ -146,7 +150,7 @@
 | 
				
			|||||||
									{{$.locale.Tr "repo.release.downloads"}}
 | 
														{{$.locale.Tr "repo.release.downloads"}}
 | 
				
			||||||
								</summary>
 | 
													</summary>
 | 
				
			||||||
								<ul class="list">
 | 
													<ul class="list">
 | 
				
			||||||
									{{if and (not .IsDraft) ($.Permission.CanRead $.UnitTypeCode)}}
 | 
														{{if and (not $.DisableDownloadSourceArchives) (not .IsDraft) ($.Permission.CanRead $.UnitTypeCode)}}
 | 
				
			||||||
										<li>
 | 
															<li>
 | 
				
			||||||
											<a class="archive-link" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.zip" rel="nofollow"><strong>{{svg "octicon-file-zip" 16 "mr-2"}}{{$.locale.Tr "repo.release.source_code"}} (ZIP)</strong></a>
 | 
																<a class="archive-link" href="{{$.RepoLink}}/archive/{{.TagName | PathEscapeSegments}}.zip" rel="nofollow"><strong>{{svg "octicon-file-zip" 16 "mr-2"}}{{$.locale.Tr "repo.release.source_code"}} (ZIP)</strong></a>
 | 
				
			||||||
										</li>
 | 
															</li>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user