mirror of
https://github.com/WJQSERVER-STUDIO/ghproxy.git
synced 2026-02-03 16:21:11 +08:00
44 lines
878 B
Go
44 lines
878 B
Go
package auth
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/satomitoka/ghproxy/config"
|
|
"os"
|
|
)
|
|
|
|
type WhitelistConfig struct {
|
|
Whitelist []string `json:"whitelist"`
|
|
}
|
|
|
|
var (
|
|
whitelistfile = "/data/ghproxy/config/whitelist.json"
|
|
whitelist *WhitelistConfig
|
|
)
|
|
|
|
func LoadWhitelist(cfg *config.Config) {
|
|
whitelistfile = cfg.Whitelist.WhitelistFile
|
|
whitelist = &WhitelistConfig{}
|
|
|
|
data, err := os.ReadFile(whitelistfile)
|
|
if err != nil {
|
|
logw("Failed to read whitelist file: %v", err)
|
|
}
|
|
|
|
err = json.Unmarshal(data, whitelist)
|
|
if err != nil {
|
|
logw("Failed to unmarshal whitelist JSON: %v", err)
|
|
}
|
|
}
|
|
|
|
func CheckWhitelist(fullrepo string) bool {
|
|
return forRangeCheckWhitelist(whitelist.Whitelist, fullrepo)
|
|
}
|
|
|
|
func forRangeCheckWhitelist(blist []string, fullrepo string) bool {
|
|
for _, blocked := range blist {
|
|
if blocked == fullrepo {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|