Add a reserved path check to the wiki (#720)
This commit is contained in:
parent
f9a3aa8737
commit
1257d43e14
1 changed files with 18 additions and 1 deletions
|
@ -21,7 +21,10 @@ import (
|
||||||
"code.gitea.io/gitea/modules/sync"
|
"code.gitea.io/gitea/modules/sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
var wikiWorkingPool = sync.NewExclusivePool()
|
var (
|
||||||
|
reservedWikiPaths = []string{"_pages", "_new", "_edit"}
|
||||||
|
wikiWorkingPool = sync.NewExclusivePool()
|
||||||
|
)
|
||||||
|
|
||||||
// ToWikiPageURL formats a string to corresponding wiki URL name.
|
// ToWikiPageURL formats a string to corresponding wiki URL name.
|
||||||
func ToWikiPageURL(name string) string {
|
func ToWikiPageURL(name string) string {
|
||||||
|
@ -88,8 +91,22 @@ func discardLocalWikiChanges(localPath string) error {
|
||||||
return discardLocalRepoBranchChanges(localPath, "master")
|
return discardLocalRepoBranchChanges(localPath, "master")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// pathAllowed checks if a wiki path is allowed
|
||||||
|
func pathAllowed(path string) error {
|
||||||
|
for i := range reservedWikiPaths {
|
||||||
|
if path == reservedWikiPaths[i] {
|
||||||
|
return ErrWikiAlreadyExist{path}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// updateWikiPage adds new page to repository wiki.
|
// updateWikiPage adds new page to repository wiki.
|
||||||
func (repo *Repository) updateWikiPage(doer *User, oldWikiPath, wikiPath, content, message string, isNew bool) (err error) {
|
func (repo *Repository) updateWikiPage(doer *User, oldWikiPath, wikiPath, content, message string, isNew bool) (err error) {
|
||||||
|
if err = pathAllowed(wikiPath); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
wikiWorkingPool.CheckIn(com.ToStr(repo.ID))
|
wikiWorkingPool.CheckIn(com.ToStr(repo.ID))
|
||||||
defer wikiWorkingPool.CheckOut(com.ToStr(repo.ID))
|
defer wikiWorkingPool.CheckOut(com.ToStr(repo.ID))
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue