mirror of
https://github.com/tobychui/zoraxy.git
synced 2025-08-05 12:56:48 +02:00
95 lines
2.2 KiB
Go
95 lines
2.2 KiB
Go
package access
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"imuslab.com/zoraxy/mod/netutils"
|
|
)
|
|
|
|
/*
|
|
Blacklist.go
|
|
|
|
This script store the blacklist related functions
|
|
*/
|
|
|
|
// Geo Blacklist
|
|
func (s *AccessRule) AddCountryCodeToBlackList(countryCode string, comment string) {
|
|
countryCode = strings.ToLower(countryCode)
|
|
newBlacklistCountryCode := deepCopy(*s.BlackListContryCode)
|
|
newBlacklistCountryCode[countryCode] = comment
|
|
s.BlackListContryCode = &newBlacklistCountryCode
|
|
s.SaveChanges()
|
|
}
|
|
|
|
func (s *AccessRule) RemoveCountryCodeFromBlackList(countryCode string) {
|
|
countryCode = strings.ToLower(countryCode)
|
|
newBlacklistCountryCode := deepCopy(*s.BlackListContryCode)
|
|
delete(newBlacklistCountryCode, countryCode)
|
|
s.BlackListContryCode = &newBlacklistCountryCode
|
|
s.SaveChanges()
|
|
}
|
|
|
|
func (s *AccessRule) IsCountryCodeBlacklisted(countryCode string) bool {
|
|
countryCode = strings.ToLower(countryCode)
|
|
blacklistMap := *s.BlackListContryCode
|
|
_, ok := blacklistMap[countryCode]
|
|
return ok
|
|
}
|
|
|
|
func (s *AccessRule) GetAllBlacklistedCountryCode() []string {
|
|
bannedCountryCodes := []string{}
|
|
blacklistMap := *s.BlackListContryCode
|
|
for cc, _ := range blacklistMap {
|
|
bannedCountryCodes = append(bannedCountryCodes, cc)
|
|
}
|
|
return bannedCountryCodes
|
|
}
|
|
|
|
// IP Blacklsits
|
|
func (s *AccessRule) AddIPToBlackList(ipAddr string, comment string) {
|
|
newBlackListIP := deepCopy(*s.BlackListIP)
|
|
newBlackListIP[ipAddr] = comment
|
|
s.BlackListIP = &newBlackListIP
|
|
s.SaveChanges()
|
|
}
|
|
|
|
func (s *AccessRule) RemoveIPFromBlackList(ipAddr string) {
|
|
newBlackListIP := deepCopy(*s.BlackListIP)
|
|
delete(newBlackListIP, ipAddr)
|
|
s.BlackListIP = &newBlackListIP
|
|
s.SaveChanges()
|
|
}
|
|
|
|
func (s *AccessRule) GetAllBlacklistedIp() []string {
|
|
bannedIps := []string{}
|
|
blacklistMap := *s.BlackListIP
|
|
for ip, _ := range blacklistMap {
|
|
bannedIps = append(bannedIps, ip)
|
|
}
|
|
|
|
return bannedIps
|
|
}
|
|
|
|
func (s *AccessRule) IsIPBlacklisted(ipAddr string) bool {
|
|
IPBlacklist := *s.BlackListIP
|
|
_, ok := IPBlacklist[ipAddr]
|
|
if ok {
|
|
return true
|
|
}
|
|
|
|
//Check for CIDR
|
|
for ipOrCIDR, _ := range IPBlacklist {
|
|
wildcardMatch := netutils.MatchIpWildcard(ipAddr, ipOrCIDR)
|
|
if wildcardMatch {
|
|
return true
|
|
}
|
|
|
|
cidrMatch := netutils.MatchIpCIDR(ipAddr, ipOrCIDR)
|
|
if cidrMatch {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|