12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package geodb
- import "strings"
- /*
- Whitelist.go
- This script handles whitelist related functions
- */
- //Geo Whitelist
- func (s *Store) AddCountryCodeToWhitelist(countryCode string) {
- countryCode = strings.ToLower(countryCode)
- s.sysdb.Write("whitelist-cn", countryCode, true)
- }
- func (s *Store) RemoveCountryCodeFromWhitelist(countryCode string) {
- countryCode = strings.ToLower(countryCode)
- s.sysdb.Delete("whitelist-cn", countryCode)
- }
- func (s *Store) IsCountryCodeWhitelisted(countryCode string) bool {
- countryCode = strings.ToLower(countryCode)
- var isWhitelisted bool = false
- s.sysdb.Read("whitelist-cn", countryCode, &isWhitelisted)
- return isWhitelisted
- }
- func (s *Store) GetAllWhitelistedCountryCode() []string {
- whitelistedCountryCode := []string{}
- entries, err := s.sysdb.ListTable("whitelist-cn")
- if err != nil {
- return whitelistedCountryCode
- }
- for _, keypairs := range entries {
- ip := string(keypairs[0])
- whitelistedCountryCode = append(whitelistedCountryCode, ip)
- }
- return whitelistedCountryCode
- }
- //IP Whitelist
- func (s *Store) AddIPToWhiteList(ipAddr string) {
- s.sysdb.Write("whitelist-ip", ipAddr, true)
- }
- func (s *Store) RemoveIPFromWhiteList(ipAddr string) {
- s.sysdb.Delete("whitelist-ip", ipAddr)
- }
- func (s *Store) IsIPWhitelisted(ipAddr string) bool {
- var isWhitelisted bool = false
- s.sysdb.Read("whitelist-ip", ipAddr, &isWhitelisted)
- if isWhitelisted {
- return true
- }
- //Check for IP wildcard and CIRD rules
- AllWhitelistedIps := s.GetAllWhitelistedIp()
- for _, whitelistRules := range AllWhitelistedIps {
- wildcardMatch := MatchIpWildcard(ipAddr, whitelistRules)
- if wildcardMatch {
- return true
- }
- cidrMatch := MatchIpCIDR(ipAddr, whitelistRules)
- if cidrMatch {
- return true
- }
- }
- return false
- }
- func (s *Store) GetAllWhitelistedIp() []string {
- whitelistedIp := []string{}
- entries, err := s.sysdb.ListTable("whitelist-ip")
- if err != nil {
- return whitelistedIp
- }
- for _, keypairs := range entries {
- ip := string(keypairs[0])
- whitelistedIp = append(whitelistedIp, ip)
- }
- return whitelistedIp
- }
|