This commit is contained in:
WJQSERVER 2024-11-04 18:38:12 +08:00
parent b1e3a9c1bd
commit f1ff3e9d27
12 changed files with 75 additions and 88 deletions

View file

@ -32,7 +32,6 @@ func LoadBlacklist(cfg *config.Config) {
}
}
// fullrepo: "owner/repo" or "owner/*"
func CheckBlacklist(repouser string, user string, repo string) bool {
return forRangeCheckBlacklist(blacklist.Blacklist, repouser, user)
}
@ -46,28 +45,16 @@ func sliceRepoName_Blacklist(fullrepo string) (string, string) {
}
func forRangeCheckBlacklist(blist []string, fullrepo string, user string) bool {
// 先匹配user,再匹配user/*,最后匹配完整repo
for _, blocked := range blist {
// 切片
users, _ := sliceRepoName_Blacklist(blocked)
logw("users:%s, blocked:%s", users, blocked)
// 匹配 user
if user == users {
// 匹配 user/*
if strings.HasSuffix(blocked, "/*") {
return true
}
// 匹配完整repo
if fullrepo == blocked {
return true
}
}
}
/* for _, blocked := range blist {
if blocked == fullrepo || (strings.HasSuffix(blocked, "/*") && strings.HasPrefix(repoUser, blocked[:len(blocked)-2])) {
return true
}
} */
return false
}

View file

@ -31,8 +31,8 @@ func LoadWhitelist(cfg *config.Config) {
}
}
func CheckWhitelist(fullrepo string) bool {
return forRangeCheckWhitelist(whitelist.Whitelist, fullrepo)
func CheckWhitelist(fullrepo string, user string, repo string) bool {
return forRangeCheckWhitelist(whitelist.Whitelist, fullrepo, user)
}
func sliceRepoName_Whitelist(fullrepo string) (string, string) {
@ -43,11 +43,16 @@ func sliceRepoName_Whitelist(fullrepo string) (string, string) {
return s[0], s[1]
}
func forRangeCheckWhitelist(wlist []string, fullrepo string) bool {
repoUser, _ := sliceRepoName_Whitelist(fullrepo)
for _, blocked := range wlist {
if blocked == fullrepo || (strings.HasSuffix(blocked, "/*") && strings.HasPrefix(repoUser, blocked[:len(blocked)-2])) {
return true
func forRangeCheckWhitelist(wlist []string, fullrepo string, user string) bool {
for _, passd := range wlist {
users, _ := sliceRepoName_Whitelist(passd)
if users == user {
if strings.HasSuffix(passd, "/*") {
return true
}
if fullrepo == passd {
return true
}
}
}
return false