Prevent clones and pushes to disabled wiki (#11131)
Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		
							parent
							
								
									9588d2c622
								
							
						
					
					
						commit
						41f05588ed
					
				
					 2 changed files with 33 additions and 1 deletions
				
			
		|  | @ -329,8 +329,27 @@ func ServCommand(ctx *macaron.Context) { | |||
| 		results.RepoID = repo.ID | ||||
| 	} | ||||
| 
 | ||||
| 	// Finally if we're trying to touch the wiki we should init it
 | ||||
| 	if results.IsWiki { | ||||
| 		// Ensure the wiki is enabled before we allow access to it
 | ||||
| 		if _, err := repo.GetUnit(models.UnitTypeWiki); err != nil { | ||||
| 			if models.IsErrUnitTypeNotExist(err) { | ||||
| 				ctx.JSON(http.StatusForbidden, map[string]interface{}{ | ||||
| 					"results": results, | ||||
| 					"type":    "ErrForbidden", | ||||
| 					"err":     "repository wiki is disabled", | ||||
| 				}) | ||||
| 				return | ||||
| 			} | ||||
| 			log.Error("Failed to get the wiki unit in %-v Error: %v", repo, err) | ||||
| 			ctx.JSON(http.StatusInternalServerError, map[string]interface{}{ | ||||
| 				"results": results, | ||||
| 				"type":    "InternalServerError", | ||||
| 				"err":     fmt.Sprintf("Failed to get the wiki unit in %s/%s Error: %v", ownerName, repoName, err), | ||||
| 			}) | ||||
| 			return | ||||
| 		} | ||||
| 
 | ||||
| 		// Finally if we're trying to touch the wiki we should init it
 | ||||
| 		if err = wiki_service.InitWiki(repo); err != nil { | ||||
| 			log.Error("Failed to initialize the wiki in %-v Error: %v", repo, err) | ||||
| 			ctx.JSON(http.StatusInternalServerError, map[string]interface{}{ | ||||
|  |  | |||
|  | @ -298,6 +298,19 @@ func HTTP(ctx *context.Context) { | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if isWiki { | ||||
| 		// Ensure the wiki is enabled before we allow access to it
 | ||||
| 		if _, err := repo.GetUnit(models.UnitTypeWiki); err != nil { | ||||
| 			if models.IsErrUnitTypeNotExist(err) { | ||||
| 				ctx.HandleText(http.StatusForbidden, "repository wiki is disabled") | ||||
| 				return | ||||
| 			} | ||||
| 			log.Error("Failed to get the wiki unit in %-v Error: %v", repo, err) | ||||
| 			ctx.ServerError("GetUnit(UnitTypeWiki) for "+repo.FullName(), err) | ||||
| 			return | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	environ = append(environ, models.ProtectedBranchRepoID+fmt.Sprintf("=%d", repo.ID)) | ||||
| 
 | ||||
| 	w := ctx.Resp | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue