0
0
mirror of https://github.com/go-gitea/gitea.git synced 2025-07-04 22:57:34 -04:00
gitea/modules/setting/hooks.go
2024-05-24 11:13:46 +02:00

43 lines
1.3 KiB
Go

// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package setting
import (
"fmt"
"strings"
"code.gitea.io/gitea/modules/log"
)
var (
// Git hook settings
GitHookPrereceiveName string
GitHookPostreceiveName string
GitHookUpdateName string
)
func isValidFileName(filename string) error {
if strings.Contains(filename, "/") || strings.Contains(filename, "\\") {
return fmt.Errorf("contains path components")
}
return nil
}
func loadHooksFrom(rootCfg ConfigProvider) {
githooks := rootCfg.Section("git.hooks")
GitHookPrereceiveName = githooks.Key("GIT_HOOK_PRERECEIVE_NAME").MustString("pre-receive")
GitHookUpdateName = githooks.Key("GIT_HOOK_UPDATE_NAME").MustString("update")
GitHookPostreceiveName = githooks.Key("GIT_HOOK_POSTRECEIVE_NAME").MustString("post-receive")
if err := isValidFileName(GitHookPrereceiveName); err != nil {
log.Fatal("Invalid git pre-receive hook name (%s): %v", GitHookPrereceiveName, err)
}
if err := isValidFileName(GitHookUpdateName); err != nil {
log.Fatal("Invalid git update hook name (%s): %v", GitHookUpdateName, err)
}
if err := isValidFileName(GitHookPostreceiveName); err != nil {
log.Fatal("Invalid git post-receive hook name (%s): %v", GitHookPostreceiveName, err)
}
}