package categorization import ( "bufio" "context" "crypto/aes" "crypto/cipher" "crypto/md5" b64 "encoding/base64" "encoding/hex" "errors" "fmt" "github.com/d3mondev/resolvermt" "github.com/go-redis/redis/v8" "github.com/techoner/gophp" "io" "log" "net" "net/netip" "os" "regexp" "server/internal" "sort" "strconv" "strings" "time" ) var ctx = context.Background() type Categorie struct { ID int Name string } var ( SelfLocalWhiteBlack = make(map[string]bool) SelfKSRNCategoryWhite int isDebugCategorization bool SelfDns1 = "8.8.8.8" SelfDns2 = "" SelfTrackersDst []string SelfWhitelistDst []string SelfWhitelistDstrx []string SelfWhitelistSrc []string SelfWhitelistArp []string SelfBlacklistDst []string SelfSrnWhite []string SelfAdvertBase []string SelfMac string SelfCacheTime int SelfStripaddr string SelfKsrnDisableGoogleAdServices bool SelfCategorieName string ) var ( defs_internal = []string{"169.254.0.0/16"} defs_ovh = []string{ "147.135.0.0/16", "103.5.12.0/22", "107.189.64.0/18", "135.148.0.0/17", "137.74.0.0/16", "139.99.0.0/17", "139.99.128.0/17", "142.4.192.0/19", "142.44.128.0/17", "144.2.32.0/19", "144.217.0.0/16", "145.239.0.0/16", "146.59.0.0/16", "146.59.0.0/17", "147.135.0.0/17", "147.135.128.0/17", "149.202.0.0/16", "149.56.0.0/16", "151.80.0.0/16", "158.69.0.0/16", "164.132.0.0/16", "79.137.56.0/24", "91.121.0.0/16", "91.134.0.0/16", "92.222.0.0/16", "94.23.0.0/16", "109.190.0.0/16", "137.74.0.0/16", "144.217.0.0/16", "145.239.0.0/16", "147.135.0.0/17", "147.135.128.0/17", "149.56.0.0/16", "149.202.0.0/16", "176.31.0.0/16", "178.32.0.0/16", "178.33.0.0/16", "151.80.0.0/16", "158.69.0.0/16", "164.132.0.0/16", "167.114.0.0/17", "167.114.128.0/18", "167.114.192.0/19", "167.114.192.0/19", "167.114.224.0/19", "217.182.0.0/16", "5.135.0.0/16", "54.36.0.0/16", "54.37.0.0/16", "54.38.0.0/16", "54.39.0.0/16", "54.75.0.0/16", "51.68.0.0/16", "51.77.0.0/16", "51.83.0.0/16", "51.89.0.0/16", "51.91.0.0/16", "51.178.0.0/16", "51.210.0.0/16", "51.254.0.0/16", "51.255.0.0/16", "76.223.0.0/16", "213.32.0.0/16", "213.251.155.0/24", "188.165.0.0/16", "46.105.0.0/16", "193.70.85.0/24", "198.50.0.0/16", "103.5.12.0/22", "107.189.64.0/18", "135.125.0.0/17", "135.125.128.0/17", "135.148.0.0/17", "135.148.128.0/17", "137.74.0.0/16", "139.99.0.0/17", "139.99.128.0/17", "141.94.0.0/16", "141.95.0.0/17", "141.95.128.0/17", "142.4.192.0/19", "142.44.128.0/17", "144.217.0.0/16", "145.239.0.0/16", "146.59.0.0/16", "146.59.0.0/17", "147.135.0.0/17", "213.186.33.0/24", "51.195.0.0/16", } defs_microsoft = []string{ "40.64.0.0/16", "40.65.0.0/16", "40.66.0.0/16", "40.67.0.0/16", "40.68.0.0/16", "40.69.0.0/16", "40.70.0.0/16", "40.71.0.0/16", "40.72.0.0/16", "40.73.0.0/16", "40.74.0.0/16", "40.75.0.0/16", "40.76.0.0/16", "40.77.0.0/16", "40.78.0.0/16", "40.79.0.0/16", "40.80.0.0/16", "40.81.0.0/16", "40.82.0.0/16", "40.83.0.0/16", "40.84.0.0/16", "40.85.0.0/16", "40.86.0.0/16", "40.87.0.0/16", "40.88.0.0/16", "40.89.0.0/16", "40.90.0.0/16", "40.91.0.0/16", "40.92.0.0/16", "40.93.0.0/16", "40.94.0.0/16", "40.95.0.0/16", "40.96.0.0/16", "40.97.0.0/16", "40.98.0.0/16", "40.99.0.0/16", "40.100.0.0/16", "40.101.0.0/16", "40.102.0.0/16", "40.103.0.0/16", "40.104.0.0/16", "40.105.0.0/16", "40.106.0.0/16", "40.107.0.0/16", "40.108.0.0/16", "40.109.0.0/16", "40.110.0.0/16", "40.111.0.0/16", "40.112.0.0/16", "40.113.0.0/16", "40.114.0.0/16", "40.115.0.0/16", "40.116.0.0/16", "40.117.0.0/16", "40.118.0.0/16", "40.119.0.0/16", "40.120.0.0/16", "40.121.0.0/16", "40.122.0.0/16", "40.123.0.0/16", "40.124.0.0/16", "51.4.0.0/16", "51.5.0.0/16", "51.6.0.0/16", "51.7.0.0/16", "51.8.0.0/16", "51.9.0.0/16", "51.10.0.0/16", "51.11.0.0/16", "51.12.0.0/16", "51.13.0.0/16", "51.104.0.0/16", "51.105.0.0/16", "51.122.0.0/16", "51.123.0.0/16", "51.124.0.0/16", "51.125.0.0/16", "51.126.0.0/16", "51.127.0.0/16", "51.128.0.0/16", "51.129.0.0/16", "51.130.0.0/16", "51.131.0.0/16", "51.132.0.0/16", "51.133.0.0/16", "51.134.0.0/16", "51.135.0.0/16", "51.136.0.0/16", "51.137.0.0/16", "51.138.0.0/16", "51.139.0.0/16", "51.140.0.0/16", "51.141.0.0/16", "51.142.0.0/16", "51.143.0.0/16", "51.144.0.0/16", "51.145.0.0/16", "52.126.0.0/15", "65.52.0.0/16", "65.53.0.0/16", "65.54.0.0/16", "65.55.0.0/16", "66.119.144.0/24", "104.40.0.0/16", "104.41.0.0/16", "104.42.0.0/16", "104.43.0.0/16", "104.44.0.0/16", "104.45.0.0/16", "104.46.0.0/16", "104.47.0.0/16", "104.210.0.0/16", "104.211.0.0/16", "104.212.0.0/16", "104.213.0.0/16", "104.214.0.0/16", "104.215.0.0/16", "167.220.0.0/16", "168.62.0.0/16", "191.232.0.0/16", "191.233.0.0/16", "191.234.0.0/16", "191.235.0.0/16", "191.236.0.0/16", "191.237.0.0/16", "191.238.0.0/16", "191.239.0.0/16", "204.79.197.0/24", "207.46.0.0/16", "13.64.0.0/16", "13.65.0.0/16", "13.66.0.0/17", "13.66.128.0/17", "13.67.0.0/17", "13.67.128.0/20", "13.67.144.0/21", "13.67.152.0/24", "13.67.153.0/28", "13.67.153.32/27", "13.67.153.64/26", "13.67.153.128/25", "13.67.155.0/24", "13.67.156.0/22", "13.67.160.0/19", "13.67.192.0/18", "13.68.0.0/17", "13.68.128.0/17", "13.69.0.0/17", "13.69.128.0/17", "13.70.0.0/18", "13.70.64.0/18", "13.70.128.0/18", "13.70.192.0/18", "13.71.0.0/18", "13.71.64.0/18", "13.71.128.0/19", "13.71.160.0/19", "13.71.192.0/18", "13.72.64.0/18", "13.72.192.0/19", "13.72.224.0/19", "13.73.0.0/19", "13.73.32.0/19", "13.73.96.0/19", "13.73.128.0/18", "13.73.192.0/20", "13.73.224.0/21", "13.73.232.0/21", "13.73.240.0/20", "13.74.0.0/16", "13.75.0.0/17", "13.75.128.0/17", "13.76.0.0/16", "13.77.0.0/18", "13.77.64.0/18", "13.77.128.0/18", "13.77.192.0/19", "13.78.0.0/17", "13.78.128.0/17", "13.79.0.0/16", "13.80.0.0/15", "13.82.0.0/16", "13.83.0.0/16", "13.84.0.0/15", "13.86.0.0/17", "13.86.128.0/17", "13.87.36.128/32", "13.87.128.0/17", "13.88.0.0/17", "13.88.128.0/18", "13.88.192.0/23", "13.88.200.0/21", "13.88.208.0/20", "13.88.224.0/19", "13.89.0.0/16", "13.90.0.0/16", "13.91.0.0/16", "13.92.0.0/16", "13.93.0.0/17", "13.93.128.0/17", "13.95.0.0/16", "13.106.4.128/25", "13.106.56.0/25", "20.36.0.0/19", "20.36.96.0/21", "20.36.128.0/17", "20.37.96.0/19", "20.37.128.0/18", "20.37.192.0/19", "20.38.64.0/19", "20.39.32.0/19", "20.39.128.0/20", "20.39.160.0/21", "20.39.168.0/21", "20.39.176.0/21", "20.39.184.0/21", "20.39.192.0/20", "20.39.208.0/20", "20.39.224.0/21", "20.40.0.0/21", "20.40.8.0/21", "20.40.16.0/20", "20.40.32.0/21", "20.40.40.0/21", "20.40.48.0/20", "20.40.64.0/20", "20.40.80.0/21", "20.40.88.0/21", "20.40.96.0/21", "20.40.104.0/21", "20.40.112.0/21", "20.40.120.0/21", "20.40.160.0/20", "20.40.176.0/20", "20.50.0.0/16", "20.184.0.0/18", "20.184.64.0/18", "20.184.128.0/17", "20.185.0.0/16", "20.186.0.0/17", "20.186.128.0/18", "20.186.192.0/18", "20.187.0.0/18", "20.187.64.0/18", "20.187.128.0/17", "20.188.0.0/19", "20.188.64.0/19", "20.188.96.0/19", "20.188.128.0/17", "20.189.0.0/18", "20.189.64.0/18", "20.189.128.0/18", "20.189.192.0/18", "20.190.0.0/18", "20.190.64.0/19", "20.190.96.0/19", "20.190.128.0/18", "20.190.192.0/18", "20.191.0.0/18", "20.191.64.0/18", "20.191.128.0/19", "20.191.160.0/19", "20.191.192.0/18", "23.96.0.0/17", "40.64.0.0/16", "40.65.0.0/18", "40.65.64.0/18", "40.65.128.0/18", "40.65.192.0/18", "40.67.128.0/19", "40.67.160.0/19", "40.67.192.0/19", "40.67.224.0/19", "40.68.0.0/16", "40.69.0.0/18", "40.69.64.0/19", "40.69.96.0/19", "40.69.128.0/18", "40.69.192.0/19", "40.70.0.0/18", "40.70.64.0/20", "40.70.80.0/21", "40.70.128.0/17", "40.71.0.0/16", "40.72.0.0/18", "40.72.64.0/22", "40.72.127.0/24", "40.72.128.0/18", "40.72.192.0/22", "40.72.196.0/23", "40.72.208.0/20", "40.72.224.0/19", "40.73.226.0/24", "40.73.227.0/24", "40.73.232.0/23", "40.73.236.0/23", "40.73.240.0/24", "40.73.242.0/24", "40.73.248.0/22", "40.73.252.0/22", "40.75.0.0/19", "40.75.64.0/18", "40.75.128.0/17", "40.76.0.0/16", "40.80.0.0/22", "40.80.32.0/22", "40.80.36.0/22", "40.80.40.0/22", "40.80.44.0/22", "40.80.144.0/21", "40.80.152.0/21", "40.80.160.0/24", "40.80.192.0/19", "40.80.224.0/20", "40.80.240.0/20", "40.81.0.0/20", "40.81.16.0/20", "40.81.32.0/20", "40.81.48.0/20", "40.81.64.0/20", "40.81.80.0/20", "40.81.112.0/20", "40.81.128.0/19", "40.81.176.0/20", "40.81.192.0/19", "40.81.224.0/19", "40.82.4.0/22", "40.82.16.0/22", "40.82.24.0/22", "40.82.28.0/22", "40.82.32.0/22", "40.82.36.0/22", "40.82.128.0/19", "40.82.160.0/19", "40.82.192.0/19", "40.83.0.0/20", "40.83.16.0/21", "40.83.24.0/26", "40.83.24.64/27", "40.83.24.128/25", "40.83.25.0/24", "40.83.26.0/23", "40.83.28.0/22", "40.83.32.0/19", "40.83.64.0/18", "40.83.128.0/17", "40.85.0.0/17", "40.85.128.0/20", "40.85.144.0/20", "40.85.160.0/19", "40.85.192.0/18", "40.86.0.0/17", "40.86.128.0/19", "40.86.160.0/19", "40.86.192.0/18", "40.87.0.0/17", "40.87.128.0/19", "40.87.160.0/22", "40.87.164.0/22", "40.87.168.0/22", "40.87.172.0/22", "40.87.176.0/22", "40.87.180.0/22", "40.87.184.0/22", "40.87.188.0/22", "40.87.192.0/22", "40.87.196.0/22", "40.87.200.0/22", "40.87.204.0/22", "40.87.208.0/22", "40.87.212.0/22", "40.87.216.0/22", "40.87.220.0/22", "40.87.224.0/22", "40.87.228.0/22", "40.87.232.0/21", "40.88.0.0/16", "40.89.0.0/19", "40.89.192.0/19", "40.89.224.0/19", "40.90.16.0/27", "40.90.128.0/28", "40.90.128.16/28", "40.90.129.192/27", "40.90.129.224/27", "40.90.130.0/27", "40.90.130.64/28", "40.90.130.80/28", "40.90.130.96/28", "40.90.130.160/27", "40.90.130.192/28", "40.90.130.208/28", "40.90.130.224/28", "40.90.131.0/27", "40.90.131.32/27", "40.90.131.64/27", "40.90.131.96/27", "40.90.131.128/27", "40.90.131.160/27", "40.90.131.192/27", "40.90.131.224/27", "40.90.132.48/28", "40.90.132.64/28", "40.90.132.96/27", "40.90.132.128/26", "40.90.132.192/26", "40.90.133.0/27", "40.90.133.32/27", "40.90.133.64/27", "40.90.133.96/27", "40.90.133.128/27", "40.90.136.0/28", "40.90.136.16/28", "40.90.136.32/27", "40.90.136.160/28", "40.90.136.176/28", "40.90.136.224/27", "40.90.137.0/27", "40.90.137.64/27", "40.90.137.96/27", "40.90.137.128/27", "40.90.137.160/27", "40.90.137.192/27", "40.90.137.224/27", "40.90.138.0/27", "40.90.138.32/27", "40.90.138.64/27", "40.90.138.96/27", "40.90.138.128/27", "40.90.138.160/27", "40.90.138.192/28", "40.90.138.208/28", "40.90.138.224/27", "40.90.139.0/27", "40.90.139.32/27", "40.90.139.64/27", "40.90.139.96/27", "40.90.139.128/27", "40.90.139.160/27", "40.90.139.192/27", "40.90.139.224/27", "40.90.140.0/27", "40.90.140.32/27", "40.90.140.64/27", "40.90.140.96/27", "40.90.140.128/27", "40.90.140.160/27", "40.90.140.192/27", "40.90.140.224/27", "40.90.141.0/27", "40.90.141.32/27", "40.90.141.64/27", "40.90.141.96/27", "40.90.141.128/27", "40.90.141.160/27", "40.90.141.192/27", "40.90.141.224/27", "40.90.142.0/27", "40.90.142.128/27", "40.90.142.160/27", "40.90.142.192/28", "40.90.142.208/28", "40.90.142.224/28", "40.90.142.240/28", "40.90.143.0/27", "40.90.143.96/27", "40.90.143.160/27", "40.90.143.192/26", "40.90.144.0/27", "40.90.144.32/27", "40.90.144.64/26", "40.90.144.128/26", "40.90.144.192/27", "40.90.144.224/27", "40.90.145.0/27", "40.90.145.32/27", "40.90.145.64/27", "40.90.145.96/27", "40.90.145.128/27", "40.90.145.160/27", "40.90.145.192/27", "40.90.145.224/27", "40.90.146.0/28", "40.90.146.16/28", "40.90.146.32/27", "40.90.146.64/26", "40.90.146.128/27", "40.90.146.160/27", "40.90.146.224/27", "40.90.147.0/27", "40.90.147.32/27", "40.90.147.64/27", "40.90.147.96/27", "40.90.148.0/26", "40.90.148.64/27", "40.90.148.96/27", "40.90.148.128/27", "40.90.148.160/28", "40.90.148.176/28", "40.90.148.192/27", "40.90.148.224/27", "40.90.149.96/27", "40.90.149.128/25", "40.90.150.0/27", "40.90.150.32/27", "40.90.150.128/25", "40.90.151.0/26", "40.90.151.96/27", "40.90.151.128/28", "40.90.151.160/27", "40.90.160.0/19", "40.90.192.0/19", "40.90.224.0/19", "40.91.0.0/22", "40.91.4.0/22", "40.91.12.16/28", "40.91.12.48/28", "40.91.12.64/26", "40.91.12.128/28", "40.91.12.160/27", "40.91.12.208/28", "40.91.12.240/28", "40.91.13.64/27", "40.91.13.96/28", "40.91.13.128/27", "40.91.13.240/28", "40.91.14.0/24", "40.91.16.0/22", "40.91.20.0/22", "40.91.24.0/22", "40.91.28.0/22", "40.91.64.0/18", "40.91.128.0/18", "40.91.192.0/18", "40.92.0.0/14", "40.96.0.0/13", "40.104.0.0/15", "40.107.0.0/17", "40.108.0.0/19", "40.108.128.0/17", "40.116.0.0/16", "40.119.0.0/18", "40.119.128.0/19", "40.119.192.0/18", "40.121.0.0/16", "40.124.0.0/16", "40.125.64.0/18", "40.125.128.0/17", "40.127.64.0/19", "40.127.96.0/20", "40.127.128.0/17", "42.159.0.0/27", "42.159.0.144/28", "42.159.4.0/22", "42.159.8.0/21", "42.159.16.0/26", "42.159.17.0/24", "42.159.18.0/23", "42.159.20.0/22", "42.159.24.0/21", "42.159.35.128/26", "42.159.48.0/25", "42.159.63.240/28", "42.159.64.0/18", "42.159.130.0/27", "42.159.130.32/28", "42.159.130.144/28", "42.159.132.0/22", "42.159.136.0/22", "42.159.140.0/26", "42.159.141.0/24", "42.159.142.0/23", "42.159.144.0/20", "42.159.176.0/25", "42.159.191.240/28", "42.159.192.0/18", "51.4.32.0/19", "51.4.84.0/24", "51.4.128.0/17", "51.5.84.0/24", "51.5.128.0/17", "51.8.0.0/19", "51.8.32.0/19", "51.8.64.0/18", "51.8.128.0/20", "51.8.144.0/27", "51.8.144.64/26", "51.8.144.128/25", "51.8.145.0/24", "51.8.146.0/24", "51.8.147.0/25", "51.8.148.0/24", "51.8.149.0/24", "51.8.160.0/19", "51.8.192.0/19", "51.8.224.0/21", "51.8.232.0/21", "51.8.240.0/20", "51.104.0.0/19", "51.104.64.0/18", "51.136.0.0/16", "51.137.0.0/17", "51.137.128.0/18", "51.137.192.0/18", "51.140.0.0/17", "51.140.128.0/18", "51.140.192.0/18", "51.141.0.0/17", "51.141.128.0/27", "51.141.128.32/27", "51.141.128.64/26", "51.141.128.128/25", "51.141.129.64/26", "51.141.129.128/26", "51.141.130.0/25", "51.141.134.0/24", "51.141.135.0/24", "51.141.136.0/23", "51.141.144.0/22", "51.141.148.0/22", "51.141.160.0/19", "51.141.192.0/18", "51.142.213.184/32", "51.143.0.0/17", "51.143.128.0/18", "51.144.0.0/16", "51.145.0.0/17", "51.145.128.0/17", "52.96.0.0/14", "52.100.0.0/14", "52.104.0.0/14", "52.108.0.0/14", "52.112.0.0/14", "52.125.128.0/22", "52.125.132.0/22", "52.125.136.0/24", "52.125.137.0/24", "52.125.138.0/23", "52.125.140.0/23", "52.136.0.0/22", "52.136.4.0/22", "52.136.16.0/24", "52.136.17.0/24", "52.136.20.0/24", "52.136.21.0/24", "52.136.22.0/24", "52.136.23.0/24", "52.136.24.0/24", "52.136.25.0/24", "52.136.26.0/24", "52.136.29.0/24", "52.136.30.0/24", "52.136.32.0/19", "52.136.64.0/18", "52.136.192.0/18", "52.137.0.0/18", "52.137.64.0/18", "52.137.128.0/17", "52.138.0.0/18", "52.138.80.0/21", "52.138.96.0/19", "52.138.128.0/17", "52.139.0.0/18", "52.139.64.0/18", "52.139.128.0/18", "52.139.192.0/18", "52.140.0.0/18", "52.140.64.0/18", "52.140.128.0/18", "52.140.192.0/18", "52.141.0.0/18", "52.141.64.0/18", "52.141.128.0/18", "52.141.192.0/19", "52.141.240.0/20", "52.142.0.0/18", "52.142.64.0/18", "52.142.128.0/18", "52.142.192.0/18", "52.143.0.0/18", "52.143.64.0/18", "52.143.192.0/24", "52.143.193.0/24", "52.143.194.0/24", "52.143.195.0/24", "52.143.196.0/24", "52.143.197.0/24", "52.143.208.0/24", "52.143.209.0/24", "52.143.210.0/24", "52.143.211.0/24", "52.143.214.0/24", "52.143.224.0/19", "52.146.0.0/17", "52.146.128.0/17", "52.147.0.0/19", "52.147.32.0/19", "52.147.64.0/19", "52.147.96.0/19", "52.147.160.0/19", "52.147.192.0/18", "52.148.0.0/18", "52.148.64.0/18", "52.148.128.0/18", "52.148.192.0/18", "52.149.0.0/18", "52.149.64.0/18", "52.149.128.0/17", "52.150.0.0/17", "52.150.128.0/17", "52.151.0.0/18", "52.151.64.0/18", "52.151.128.0/17", "52.152.0.0/17", "52.152.128.0/17", "52.153.0.0/18", "52.153.64.0/18", "52.153.128.0/18", "52.153.192.0/18", "52.154.0.0/18", "52.154.64.0/18", "52.154.128.0/17", "52.155.0.0/19", "52.155.32.0/19", "52.155.64.0/19", "52.155.96.0/19", "52.155.128.0/17", "52.156.0.0/19", "52.156.32.0/19", "52.156.64.0/18", "52.156.128.0/19", "52.156.160.0/19", "52.156.192.0/18", "52.157.0.0/18", "52.157.64.0/18", "52.157.128.0/17", "52.158.0.0/17", "52.158.128.0/19", "52.158.160.0/20", "52.158.192.0/19", "52.158.224.0/19", "52.159.0.0/18", "52.159.64.0/19", "52.159.96.0/19", "52.159.128.0/17", "52.160.0.0/16", "52.161.0.0/16", "52.162.0.0/16", "52.163.0.0/16", "52.164.0.0/16", "52.165.0.0/19", "52.165.32.0/20", "52.165.48.0/28", "52.165.49.0/24", "52.165.56.0/21", "52.165.64.0/19", "52.165.96.0/21", "52.165.104.0/25", "52.165.128.0/17", "52.166.0.0/16", "52.167.0.0/16", "52.168.0.0/16", "52.169.0.0/16", "52.170.0.0/16", "52.171.0.0/16", "52.172.0.0/17", "52.172.128.0/17", "52.173.0.0/16", "52.174.0.0/16", "52.175.0.0/17", "52.175.128.0/18", "52.175.192.0/18", "52.176.0.0/17", "52.176.128.0/19", "52.176.160.0/21", "52.176.176.0/20", "52.176.192.0/19", "52.176.224.0/26", "52.176.224.64/27", "52.176.224.96/28", "52.177.0.0/16", "52.178.0.0/17", "52.178.128.0/17", "52.179.0.0/17", "52.179.128.0/17", "52.180.0.0/17", "52.180.128.0/19", "52.180.184.0/27", "52.180.184.32/28", "52.180.185.0/24", "52.182.128.0/17", "52.183.0.0/17", "52.183.128.0/18", "52.183.192.0/18", "52.184.0.0/17", "52.184.128.0/19", "52.184.160.0/21", "52.184.168.0/28", "52.184.168.80/28", "52.184.168.96/27", "52.184.168.128/28", "52.184.169.0/24", "52.184.170.0/24", "52.184.176.0/20", "52.184.192.0/18", "52.185.0.0/19", "52.185.32.0/20", "52.185.48.0/21", "52.185.56.0/26", "52.185.56.64/27", "52.185.56.96/28", "52.185.56.128/27", "52.185.56.160/28", "52.185.64.0/20", "52.185.80.0/26", "52.185.81.0/24", "52.185.88.0/21", "52.185.96.0/20", "52.185.112.0/26", "52.185.112.96/27", "52.185.120.0/21", "52.185.128.0/18", "52.185.192.0/18", "52.186.0.0/16", "52.187.0.0/17", "52.187.128.0/18", "52.187.192.0/18", "52.188.0.0/16", "52.189.0.0/17", "52.189.128.0/18", "52.189.192.0/18", "52.190.0.0/17", "52.190.128.0/17", "52.191.0.0/18", "52.191.64.0/19", "52.191.96.0/21", "52.191.104.0/27", "52.191.105.0/24", "52.191.106.0/24", "52.191.112.0/20", "52.191.128.0/18", "52.191.192.0/18", "52.224.0.0/16", "52.225.0.0/17", "52.225.128.0/21", "52.225.136.0/27", "52.225.136.32/28", "52.225.136.64/28", "52.225.137.0/24", "52.225.192.0/18", "52.226.0.0/16", "52.228.0.0/17", "52.228.128.0/17", "52.229.0.0/18", "52.229.64.0/18", "52.229.128.0/17", "52.230.0.0/17", "52.230.128.0/17", "52.231.0.0/17", "52.231.128.0/17", "52.232.0.0/17", "52.232.128.0/21", "52.232.136.0/21", "52.232.144.0/24", "52.232.145.0/24", "52.232.146.0/24", "52.232.147.0/24", "52.232.148.0/24", "52.232.149.0/24", "52.232.151.0/24", "52.232.152.0/24", "52.232.153.0/24", "52.232.154.0/24", "52.232.155.0/24", "52.232.156.0/24", "52.232.157.0/24", "52.232.158.0/24", "52.232.159.0/24", "52.232.160.0/19", "52.232.192.0/18", "52.233.0.0/18", "52.233.64.0/18", "52.233.128.0/17", "52.234.0.0/17", "52.234.128.0/17", "52.235.0.0/18", "52.235.64.0/18", "52.236.0.0/17", "52.236.128.0/17", "52.237.0.0/18", "52.237.64.0/18", "52.237.128.0/18", "52.237.192.0/18", "52.238.0.0/18", "52.238.78.88/32", "52.238.106.116/32", "52.238.119.141/32", "52.238.192.0/18", "52.239.0.0/17", "52.239.128.0/24", "52.239.129.0/24", "52.239.130.0/23", "52.239.132.0/23", "52.239.135.64/26", "52.239.135.128/26", "52.239.135.192/26", "52.239.136.0/22", "52.239.140.0/22", "52.239.144.0/23", "52.239.146.0/23", "52.239.148.0/27", "52.239.148.64/26", "52.239.148.128/25", "52.239.149.0/24", "52.239.150.0/23", "52.239.152.0/22", "52.239.156.0/24", "52.239.157.0/25", "52.239.157.128/26", "52.239.157.192/27", "52.239.158.0/23", "52.239.160.0/22", "52.239.164.0/25", "52.239.164.128/26", "52.239.164.192/26", "52.239.165.0/26", "52.239.165.160/27", "52.239.167.0/24", "52.239.168.0/22", "52.239.172.0/22", "52.239.176.128/25", "52.239.177.32/27", "52.239.177.64/26", "52.239.177.128/25", "52.239.178.0/23", "52.239.180.0/22", "52.239.184.0/25", "52.239.184.160/28", "52.239.184.192/27", "52.239.185.32/27", "52.239.185.64/27", "52.239.186.0/24", "52.239.187.0/25", "52.239.187.128/25", "52.239.188.0/24", "52.239.189.0/24", "52.239.190.0/25", "52.239.190.128/26", "52.239.190.192/26", "52.239.192.0/25", "52.239.192.160/27", "52.239.192.192/26", "52.239.193.0/24", "52.239.195.0/24", "52.239.197.0/24", "52.239.198.0/25", "52.239.198.160/27", "52.239.198.192/26", "52.239.199.0/24", "52.239.200.0/23", "52.239.202.0/24", "52.239.203.0/24", "52.239.204.0/24", "52.239.205.0/24", "52.239.206.0/24", "52.239.207.0/27", "52.239.207.32/28", "52.239.207.64/26", "52.239.207.128/26", "52.239.207.192/26", "52.239.208.0/23", "52.239.210.0/23", "52.239.212.0/23", "52.239.214.0/23", "52.239.220.0/23", "52.239.222.0/23", "52.239.224.0/24", "52.239.225.0/24", "52.239.226.0/24", "52.239.227.0/24", "52.239.228.0/23", "52.239.231.0/24", "52.239.234.0/23", "52.239.236.0/23", "52.239.240.0/24", "52.239.242.0/23", "52.239.244.0/23", "52.239.246.0/23", "52.239.248.0/24", "52.239.249.0/24", "52.239.252.0/24", "52.239.254.0/23", "52.240.0.0/17", "52.240.128.0/17", "52.241.0.0/16", "52.242.0.0/18", "52.242.64.0/18", "52.242.128.0/17", "52.243.32.0/19", "52.243.64.0/18", "52.244.160.207/32", "52.245.8.0/22", "52.245.12.0/22", "52.245.16.0/22", "52.245.20.0/22", "52.245.24.0/22", "52.245.28.0/22", "52.245.32.0/22", "52.245.36.0/22", "52.245.40.0/22", "52.245.44.0/24", "52.245.45.0/25", "52.245.45.128/28", "52.245.45.160/27", "52.245.45.192/26", "52.245.46.0/27", "52.245.46.48/28", "52.245.46.64/28", "52.245.46.112/28", "52.245.46.128/28", "52.245.46.160/27", "52.245.46.192/27", "52.245.46.224/28", "52.245.48.0/22", "52.245.52.0/22", "52.245.56.0/22", "52.245.60.0/22", "52.245.64.0/22", "52.245.68.0/24", "52.245.69.32/27", "52.245.69.64/27", "52.245.69.96/28", "52.245.69.144/28", "52.245.69.160/27", "52.245.69.192/26", "52.245.70.0/23", "52.245.72.0/22", "52.245.76.0/22", "52.245.80.0/22", "52.245.84.0/22", "52.245.88.0/22", "52.245.92.0/22", "52.245.96.0/22", "52.245.100.0/22", "52.245.104.0/22", "52.245.108.0/22", "52.245.112.0/22", "52.245.124.0/22", "52.246.0.0/17", "52.246.128.0/20", "52.246.160.0/19", "52.246.192.0/18", "52.247.0.0/17", "52.247.150.191/32", "52.247.192.0/18", "52.248.0.0/17", "52.248.128.0/17", "52.249.0.0/18", "52.249.64.0/19", "52.249.128.0/17", "52.250.0.0/17", "52.250.128.0/18", "52.250.192.0/18", "52.251.0.0/17", "52.251.128.0/17", "52.252.0.0/17", "52.252.128.0/17", "52.253.0.0/18", "52.253.64.0/20", "52.253.80.0/20", "52.253.96.0/19", "52.253.128.0/20", "52.253.148.0/23", "52.253.154.0/23", "52.254.0.0/18", "52.254.64.0/19", "52.254.96.0/20", "52.254.112.0/21", "52.254.128.0/17", "52.255.0.0/19", "52.255.32.0/19", "52.255.64.0/18", "52.255.128.0/17", "64.4.8.0/24", "64.4.22.128/25", "64.4.50.128/25", "64.4.54.0/24", "65.52.0.0/19", "65.52.32.0/21", "65.52.48.0/20", "65.52.64.0/20", "65.52.104.0/24", "65.52.106.16/28", "65.52.106.32/27", "65.52.106.64/26", "65.52.106.128/27", "65.52.108.0/23", "65.52.110.0/24", "65.52.111.0/24", "65.52.112.0/20", "65.52.128.0/19", "65.52.160.0/19", "65.52.192.0/19", "65.52.224.0/21", "65.52.232.0/21", "65.52.240.0/21", "65.54.19.128/27", "65.54.55.160/27", "65.54.55.224/27", "65.54.170.128/25", "65.54.247.128/25", "70.37.0.0/21", "70.37.8.0/22", "70.37.16.0/20", "70.37.32.0/20", "70.37.48.0/20", "70.37.64.0/18", "70.37.154.128/25", "70.37.160.0/21", "94.245.88.0/21", "94.245.104.0/21", "94.245.114.1/32", "94.245.114.2/31", "94.245.114.4/32", "94.245.114.33/32", "94.245.114.34/31", "94.245.114.36/32", "94.245.117.53/32", "94.245.117.96/27", "94.245.118.0/27", "94.245.118.65/32", "94.245.118.66/31", "94.245.118.68/32", "94.245.118.97/32", "94.245.118.98/31", "94.245.118.100/32", "94.245.118.129/32", "94.245.118.130/31", "94.245.118.132/32", "94.245.120.64/26", "94.245.120.128/28", "94.245.122.0/24", "94.245.123.144/28", "94.245.123.176/28", "104.40.0.0/17", "104.40.128.0/17", "104.41.0.0/18", "104.41.64.0/18", "104.41.128.0/19", "104.41.160.0/19", "104.41.192.0/18", "104.42.0.0/16", "104.43.0.0/17", "104.43.128.0/17", "104.44.88.0/27", "104.44.88.32/27", "104.44.88.64/27", "104.44.88.96/27", "104.44.88.128/27", "104.44.88.160/27", "104.44.88.192/27", "104.44.88.224/27", "104.44.89.0/27", "104.44.89.32/27", "104.44.89.64/27", "104.44.89.96/27", "104.44.89.128/27", "104.44.89.160/27", "104.44.89.192/27", "104.44.89.224/27", "104.44.90.0/27", "104.44.90.32/27", "104.44.90.64/26", "104.44.90.128/27", "104.44.90.160/27", "104.44.90.192/27", "104.44.90.224/27", "104.44.91.0/27", "104.44.91.32/27", "104.44.91.64/27", "104.44.91.96/27", "104.44.91.128/27", "104.44.91.160/27", "104.44.91.192/27", "104.44.91.224/27", "104.44.92.0/27", "104.44.92.32/27", "104.44.92.64/27", "104.44.92.96/27", "104.44.92.128/27", "104.44.92.160/27", "104.44.92.192/27", "104.44.92.224/27", "104.44.93.0/27", "104.44.93.32/27", "104.44.93.64/27", "104.44.93.96/27", "104.44.93.128/27", "104.44.93.160/27", "104.44.93.192/27", "104.44.93.224/27", "104.44.94.0/28", "104.44.94.16/28", "104.44.94.32/28", "104.44.94.48/28", "104.44.94.64/28", "104.44.94.80/28", "104.44.94.96/28", "104.44.94.112/28", "104.44.94.128/28", "104.44.94.144/28", "104.44.94.160/27", "104.44.94.192/28", "104.44.94.208/28", "104.44.94.224/27", "104.44.95.0/28", "104.44.95.16/28", "104.44.95.32/28", "104.44.95.48/28", "104.44.95.64/28", "104.44.95.80/28", "104.44.95.96/28", "104.44.95.112/28", "104.44.95.128/27", "104.44.95.160/27", "104.44.95.192/28", "104.44.95.224/28", "104.44.95.240/28", "104.44.128.0/18", "104.44.218.128/25", "104.44.254.128/25", "104.44.255.0/25", "104.45.0.0/18", "104.45.64.0/20", "104.45.80.0/20", "104.45.96.0/19", "104.45.128.0/18", "104.45.192.0/20", "104.45.208.0/20", "104.45.224.0/19", "104.46.0.0/21", "104.46.8.0/21", "104.46.16.0/21", "104.46.24.0/22", "104.46.28.0/24", "104.46.29.0/24", "104.46.30.0/23", "104.46.32.0/19", "104.46.64.0/19", "104.46.96.0/19", "104.46.128.0/19", "104.46.160.0/19", "104.46.192.0/20", "104.46.208.0/20", "104.46.224.0/20", "104.46.240.0/20", "104.47.0.0/17", "104.47.128.0/18", "104.47.200.0/21", "104.47.208.0/23", "104.47.210.0/23", "104.47.212.0/23", "104.47.214.0/23", "104.47.216.64/26", "104.47.218.0/23", "104.47.220.0/22", "104.47.224.0/20", "104.146.0.0/19", "104.146.128.0/17", "104.208.0.0/19", "104.208.32.0/20", "104.208.64.0/18", "104.208.128.0/17", "104.209.0.0/18", "104.209.64.0/20", "104.209.80.0/20", "104.209.128.0/17", "104.210.0.0/20", "104.210.32.0/19", "104.210.64.0/18", "104.210.128.0/19", "104.210.176.0/20", "104.210.192.0/19", "104.211.0.0/18", "104.211.64.0/18", "104.211.128.0/18", "104.211.192.0/18", "104.214.0.0/17", "104.214.128.0/19", "104.214.160.0/19", "104.214.192.0/18", "104.215.0.0/18", "104.215.64.0/18", "104.215.128.0/17", "111.221.29.0/24", "111.221.30.0/23", "111.221.78.0/23", "111.221.80.0/20", "111.221.96.0/20", "111.221.112.0/21", "131.253.12.8/29", "131.253.12.16/28", "131.253.12.36/30", "131.253.12.40/29", "131.253.12.48/29", "131.253.12.56/29", "131.253.12.64/29", "131.253.12.72/29", "131.253.12.96/27", "131.253.12.128/27", "131.253.12.160/28", "131.253.12.176/28", "131.253.12.192/28", "131.253.12.208/28", "131.253.12.224/30", "131.253.12.228/30", "131.253.12.248/29", "131.253.13.0/28", "131.253.13.16/29", "131.253.13.24/29", "131.253.13.32/28", "131.253.13.48/28", "131.253.13.64/29", "131.253.13.72/29", "131.253.13.80/29", "131.253.13.88/30", "131.253.13.96/30", "131.253.13.100/30", "131.253.13.104/30", "131.253.13.108/30", "131.253.13.112/28", "131.253.13.128/27", "131.253.13.160/28", "131.253.13.176/28", "131.253.13.192/26", "131.253.14.4/30", "131.253.14.8/31", "131.253.14.16/28", "131.253.14.32/27", "131.253.14.64/28", "131.253.14.80/28", "131.253.14.96/27", "131.253.14.128/27", "131.253.14.160/27", "131.253.14.192/29", "131.253.14.208/28", "131.253.14.224/28", "131.253.14.248/29", "131.253.15.8/29", "131.253.15.16/28", "131.253.15.32/27", "131.253.15.64/26", "131.253.15.128/28", "131.253.15.144/28", "131.253.15.160/27", "131.253.15.192/28", "131.253.15.208/28", "131.253.15.224/27", "131.253.24.0/28", "131.253.24.16/28", "131.253.24.32/27", "131.253.24.64/26", "131.253.24.128/27", "131.253.24.160/27", "131.253.24.192/26", "131.253.25.0/24", "131.253.26.0/25", "131.253.26.128/25", "131.253.27.0/24", "131.253.34.0/25", "131.253.34.128/26", "131.253.34.224/27", "131.253.35.0/25", "131.253.35.128/26", "131.253.35.192/26", "131.253.36.128/26", "131.253.36.192/27", "131.253.36.224/27", "131.253.37.0/24", "131.253.38.0/27", "131.253.38.32/27", "131.253.38.64/27", "131.253.38.96/29", "131.253.38.104/29", "131.253.38.112/29", "131.253.38.128/26", "131.253.38.192/26", "131.253.40.0/24", "131.253.41.0/24", "137.117.0.0/19", "137.117.32.0/19", "137.117.64.0/18", "137.117.128.0/17", "137.135.0.0/18", "137.135.64.0/18", "137.135.128.0/17", "138.91.0.0/20", "138.91.16.0/20", "138.91.32.0/20", "138.91.48.0/20", "138.91.64.0/19", "138.91.96.0/19", "138.91.128.0/17", "139.217.0.0/19", "139.217.32.0/24", "139.217.40.0/21", "139.217.48.0/21", "139.217.128.0/19", "139.217.160.0/26", "139.217.160.64/27", "139.217.160.128/28", "139.217.161.0/24", "139.217.162.0/24", "139.217.168.0/21", "139.217.192.0/20", "139.219.0.0/20", "139.219.18.0/23", "139.219.20.0/28", "139.219.32.0/19", "139.219.64.0/18", "139.219.128.0/20", "139.219.144.0/24", "139.219.147.0/26", "139.219.148.0/28", "139.219.150.0/23", "139.219.155.0/24", "139.219.160.0/19", "139.219.192.0/18", "150.171.32.0/22", "150.171.40.0/22", "168.61.0.0/19", "168.61.32.0/20", "168.61.48.0/21", "168.61.56.0/21", "168.61.64.0/20", "168.61.80.0/20", "168.61.96.0/19", "168.61.128.0/24", "168.61.129.0/25", "168.61.129.128/26", "168.61.129.208/28", "168.61.129.224/27", "168.61.130.64/26", "168.61.130.128/25", "168.61.131.0/26", "168.61.131.128/25", "168.61.132.0/26", "168.61.144.0/20", "168.61.160.0/19", "168.61.208.0/20", "168.62.0.0/19", "168.62.32.0/19", "168.62.64.0/19", "168.62.96.0/19", "168.62.128.0/19", "168.62.160.0/19", "168.62.192.0/19", "168.62.224.0/19", "168.63.0.0/19", "168.63.32.0/19", "168.63.64.0/20", "168.63.80.0/21", "168.63.88.0/23", "168.63.90.0/24", "168.63.91.0/26", "168.63.92.0/22", "168.63.96.0/19", "168.63.128.0/24", "168.63.129.0/28", "168.63.129.32/27", "168.63.129.64/26", "168.63.129.128/25", "168.63.130.0/23", "168.63.132.0/22", "168.63.136.0/21", "168.63.144.0/20", "168.63.160.0/19", "168.63.192.0/19", "168.63.224.0/19", "191.232.0.0/23", "191.232.2.128/25", "191.232.32.0/19", "191.232.96.0/19", "191.232.137.0/24", "191.232.138.0/23", "191.232.140.0/24", "191.232.160.0/19", "191.232.192.0/18", "191.234.2.0/23", "191.234.16.0/20", "191.234.32.0/19", "191.234.138.0/23", "191.234.140.0/22", "191.234.160.0/19", "191.235.0.0/20", "191.235.32.0/19", "191.235.64.0/18", "191.235.128.0/18", "191.235.192.0/22", "191.235.196.0/22", "191.235.200.0/21", "191.235.208.0/20", "191.235.224.0/20", "191.235.240.0/21", "191.235.248.0/24", "191.235.255.0/24", "191.236.0.0/18", "191.236.64.0/18", "191.236.128.0/18", "191.236.192.0/18", "191.237.0.0/17", "191.237.128.0/18", "191.237.192.0/23", "191.237.194.0/24", "191.237.195.0/24", "191.237.196.0/24", "191.237.200.0/21", "191.237.208.0/20", "191.237.224.0/21", "191.237.232.0/22", "191.237.236.0/24", "191.237.238.0/24", "191.237.240.0/23", "191.237.244.0/22", "191.237.248.0/21", "191.238.0.0/18", "191.238.64.0/23", "191.238.66.0/23", "191.238.68.0/24", "191.238.70.0/23", "191.238.80.0/21", "191.238.88.0/22", "191.238.92.0/23", "191.238.96.0/19", "191.238.128.0/21", "191.238.136.0/21", "191.238.144.0/20", "191.238.160.0/19", "191.238.192.0/19", "191.238.224.0/19", "191.239.0.0/18", "191.239.64.0/19", "191.239.96.0/20", "191.239.112.0/20", "191.239.128.0/19", "191.239.160.0/19", "191.239.192.0/22", "191.239.196.0/24", "191.239.197.0/28", "191.239.200.0/22", "191.239.204.0/22", "191.239.208.0/20", "191.239.224.0/20", "191.239.240.0/20", "193.149.64.0/21", "193.149.72.0/21", "193.149.80.0/21", "193.149.88.0/21", "199.30.16.0/24", "199.30.17.0/24", "199.30.18.0/23", "199.30.20.0/24", "199.30.21.0/24", "199.30.22.0/24", "199.30.23.0/24", "199.30.24.0/23", "199.30.26.0/24", "199.30.27.0/25", "199.30.27.144/28", "199.30.27.160/27", "199.30.27.192/26", "199.30.28.0/26", "199.30.28.64/26", "199.30.28.128/25", "199.30.29.0/24", "199.30.30.0/23", "204.79.197.215/32", "204.231.197.0/24", "206.191.224.0/19", "207.46.13.0/24", "207.46.50.128/28", "207.46.59.64/27", "207.46.63.64/27", "207.46.63.128/25", "207.46.67.160/27", "207.46.67.192/27", "207.46.72.0/27", "207.46.73.250/32", "207.46.77.224/28", "207.46.87.0/24", "207.46.89.16/28", "207.46.95.32/27", "207.46.100.0/24", "207.46.126.0/24", "207.46.128.0/19", "207.46.163.0/24", "207.46.193.192/28", "207.46.193.224/27", "207.46.194.0/24", "207.46.198.128/25", "207.46.200.96/27", "207.46.200.176/28", "207.46.202.128/28", "207.46.205.0/24", "207.46.216.54/32", "207.46.224.0/20", "207.68.174.0/29", "207.68.174.24/29", "207.68.174.32/29", "207.68.174.40/29", "207.68.174.48/29", "207.68.174.56/29", "207.68.174.64/29", "207.68.174.80/28", "207.68.174.96/28", "207.68.174.112/28", "207.68.174.128/29", "207.68.174.136/29", "207.68.174.144/29", "207.68.174.152/29", "207.68.174.160/29", "207.68.174.168/29", "207.68.174.176/29", "207.68.174.184/29", "207.68.174.192/27", "207.68.174.248/29", "209.240.212.0/23", "213.199.128.0/20", "213.199.154.0/24", "213.199.168.0/23", "213.199.180.32/28", "213.199.180.96/27", "13.94.0.0/16", "13.107.0.0/16", "131.253.0.0/16", "213.199.180.128/26", "213.199.180.192/27", "213.199.183.0/24", "216.32.180.0/23", "51.116.0.0/16", "52.254.0.0/16", "52.253.0.0/16", "91.225.248.0/24", "20.0.0.0/8", "23.102.0.0/16", "40.126.0.0/16", } defs_google = []string{ "168.149.132.0/24", "34.72.0.0/16", "34.80.0.0/16", "34.95.0.0/16", "34.96.0.0/16", "34.97.0.0/16", "34.98.0.0/16", "34.101.0.0/16", "34.102.0.0/16", "34.103.0.0/16", "34.104.0.0/16", "34.105.0.0/16", "34.106.0.0/16", "34.107.0.0/16", "34.108.0.0/16", "34.109.0.0/16", "34.110.0.0/16", "34.111.0.0/16", "34.112.0.0/16", "34.113.0.0/16", "34.114.0.0/16", "34.115.0.0/16", "34.116.0.0/16", "34.117.0.0/16", "34.118.0.0/16", "34.119.0.0/16", "34.120.0.0/16", "34.141.0.0/16", "35.184.0.0/16", "104.132.0.0/23", "104.132.34.0/24", "104.154.0.0/15", "104.154.0.0/19", "104.154.128.0/19", "104.154.160.0/19", "104.154.192.0/19", "104.154.224.0/19", "104.154.32.0/19", "104.154.64.0/19", "104.154.96.0/19", "104.155.0.0/19", "104.155.128.0/19", "104.155.160.0/19", "104.155.192.0/19", "104.155.224.0/19", "104.155.32.0/19", "104.155.64.0/19", "104.155.96.0/19", "104.196.0.0/14", "104.196.0.0/19", "104.196.128.0/19", "104.196.160.0/19", "104.196.192.0/19", "104.196.224.0/19", "104.196.32.0/19", "104.196.64.0/19", "104.196.96.0/19", "104.197.0.0/19", "104.197.128.0/19", "104.197.160.0/19", "104.197.192.0/19", "104.197.224.0/19", "104.197.32.0/19", "104.197.64.0/19", "104.197.96.0/19", "104.198.0.0/19", "104.198.128.0/19", "104.198.160.0/19", "104.198.192.0/19", "104.198.224.0/19", "104.198.32.0/19", "104.198.64.0/19", "104.198.96.0/19", "104.199.0.0/19", "104.199.128.0/19", "104.199.160.0/19", "104.199.192.0/19", "104.199.224.0/19", "104.199.32.0/19", "104.199.64.0/19", "104.199.65.0/24", "104.199.96.0/19", "107.167.160.0/19", "107.178.192.0/18", "108.170.192.0/18", "108.177.0.0/17", "108.177.10.0/24", "108.177.103.0/24", "108.177.104.0/24", "108.177.11.0/24", "108.177.111.0/24", "108.177.112.0/24", "108.177.119.0/24", "108.177.120.0/24", "108.177.12.0/24", "108.177.121.0/24", "108.177.122.0/24", "108.177.125.0/24", "108.177.126.0/24", "108.177.127.0/24", "108.177.13.0/24", "108.177.14.0/24", "108.177.15.0/24", "108.177.8.0/24", "108.177.9.0/24", "108.177.96.0/24", "108.177.97.0/24", "108.177.98.0/24", "108.59.80.0/20", "130.211.0.0/16", "136.112.0.0/12", "142.250.0.0/16", "146.148.0.0/17", "162.216.148.0/22", "162.222.176.0/21", "172.102.10.0/24", "172.102.11.0/24", "172.102.12.0/23", "172.102.14.0/23", "172.102.8.0/21", "172.102.8.0/24", "172.110.32.0/21", "172.217.0.0/16", "172.217.0.0/24", "172.217.10.0/24", "172.217.1.0/24", "172.217.11.0/24", "172.217.12.0/24", "172.217.128.0/19", "172.217.13.0/24", "172.217.14.0/24", "172.217.15.0/24", "172.217.16.0/24", "172.217.17.0/24", "172.217.18.0/24", "172.217.19.0/24", "172.217.192.0/24", "172.217.193.0/24", "172.217.194.0/24", "172.217.195.0/24", "172.217.197.0/24", "172.217.20.0/24", "172.217.2.0/24", "172.217.21.0/24", "172.217.22.0/24", "172.217.23.0/24", "172.217.24.0/24", "172.217.25.0/24", "172.217.26.0/24", "172.217.27.0/24", "172.217.28.0/24", "172.217.29.0/24", "172.217.30.0/24", "172.217.3.0/24", "172.217.31.0/24", "172.217.4.0/24", "172.217.5.0/24", "172.217.6.0/24", "172.217.7.0/24", "172.217.8.0/24", "172.217.9.0/24", "172.253.0.0/16", "173.194.0.0/16", "173.194.0.0/19", "173.194.112.0/24", "173.194.113.0/24", "173.194.117.0/24", "173.194.118.0/24", "173.194.119.0/24", "173.194.120.0/24", "173.194.121.0/24", "173.194.124.0/24", "173.194.128.0/20", "173.194.132.0/24", "173.194.136.0/24", "173.194.140.0/24", "173.194.141.0/24", "173.194.142.0/24", "173.194.144.0/20", "173.194.160.0/21", "173.194.175.0/24", "173.194.176.0/20", "173.194.192.0/24", "173.194.193.0/24", "173.194.194.0/24", "173.194.195.0/24", "173.194.196.0/24", "173.194.197.0/24", "173.194.198.0/24", "173.194.199.0/24", "173.194.200.0/24", "173.194.201.0/24", "173.194.202.0/24", "173.194.203.0/24", "173.194.204.0/24", "173.194.205.0/24", "173.194.206.0/24", "173.194.207.0/24", "173.194.208.0/24", "173.194.209.0/24", "173.194.210.0/24", "173.194.211.0/24", "173.194.212.0/24", "173.194.213.0/24", "173.194.214.0/24", "173.194.215.0/24", "173.194.216.0/24", "173.194.217.0/24", "173.194.218.0/24", "173.194.219.0/24", "173.194.220.0/24", "173.194.221.0/24", "173.194.222.0/24", "173.194.223.0/24", "173.194.32.0/24", "173.194.34.0/24", "173.194.35.0/24", "173.194.36.0/24", "173.194.37.0/24", "173.194.38.0/24", "173.194.39.0/24", "173.194.40.0/24", "173.194.41.0/24", "173.194.42.0/24", "173.194.44.0/24", "173.194.46.0/24", "173.194.48.0/20", "173.194.53.0/24", "173.194.63.0/24", "173.194.66.0/24", "173.194.67.0/24", "173.194.68.0/24", "173.194.69.0/24", "173.194.70.0/24", "173.194.7.0/24", "173.194.73.0/24", "173.194.74.0/24", "173.194.76.0/24", "173.194.78.0/24", "173.194.79.0/24", "173.194.96.0/21", "173.255.112.0/20", "185.150.148.0/22", "185.25.28.0/23", "192.104.160.0/23", "192.158.28.0/22", "192.178.0.0/15", "199.192.112.0/22", "199.223.232.0/21", "207.223.160.0/20", "208.68.108.0/22", "208.81.188.0/22", "209.107.176.0/20", "209.107.176.0/23", "209.107.182.0/23", "209.107.184.0/23", "209.107.185.0/24", "209.85.128.0/17", "209.85.137.0/24", "209.85.144.0/24", "209.85.145.0/24", "209.85.147.0/24", "209.85.164.0/23", "209.85.200.0/24", "209.85.201.0/24", "209.85.202.0/24", "209.85.203.0/24", "209.85.232.0/24", "209.85.233.0/24", "209.85.234.0/24", "209.85.235.0/24", "216.239.32.0/19", "216.239.32.0/24", "216.239.33.0/24", "216.239.34.0/24", "216.239.35.0/24", "216.239.36.0/24", "216.239.38.0/24", "216.239.39.0/24", "216.252.220.0/22", "216.252.220.0/24", "216.252.222.0/24", "216.58.192.0/19", "216.58.192.0/22", "216.58.196.0/23", "216.58.198.0/24", "216.58.199.0/24", "216.58.200.0/24", "216.58.201.0/24", "216.58.202.0/24", "216.58.203.0/24", "216.58.204.0/23", "216.58.206.0/23", "216.58.208.0/24", "216.58.209.0/24", "216.58.210.0/24", "216.58.211.0/24", "216.58.212.0/24", "216.58.213.0/24", "216.58.214.0/24", "216.58.215.0/24", "216.58.216.0/24", "216.58.217.0/24", "216.58.218.0/24", "216.58.219.0/24", "216.58.220.0/24", "216.58.221.0/24", "216.58.222.0/24", "216.58.223.0/24", "216.73.80.0/20", "23.236.48.0/20", "23.251.128.0/19", "34.102.0.0/16", "35.184.0.0/13", "35.184.0.0/19", "35.184.128.0/19", "35.184.160.0/19", "35.184.192.0/19", "35.184.224.0/19", "35.184.32.0/19", "35.184.64.0/19", "35.184.96.0/19", "35.185.0.0/19", "35.185.128.0/19", "35.185.160.0/19", "35.185.192.0/19", "35.185.224.0/19", "35.185.32.0/19", "35.185.64.0/19", "35.185.96.0/19", "35.186.0.0/16", "35.186.0.0/19", "35.186.128.0/19", "35.186.160.0/19", "35.186.32.0/19", "35.186.64.0/19", "35.186.96.0/19", "35.187.0.0/19", "35.187.128.0/19", "35.187.160.0/19", "35.187.192.0/19", "35.187.224.0/19", "35.187.32.0/19", "35.187.64.0/19", "35.187.96.0/19", "35.188.0.0/19", "35.188.128.0/19", "35.188.160.0/19", "35.188.192.0/19", "35.188.224.0/19", "35.188.32.0/19", "35.188.64.0/19", "35.188.96.0/19", "35.189.0.0/19", "35.189.128.0/19", "35.189.160.0/19", "35.189.192.0/19", "35.189.224.0/19", "35.189.32.0/19", "35.189.64.0/19", "35.189.96.0/19", "35.190.0.0/16", "35.190.128.0/19", "35.190.160.0/19", "35.190.192.0/19", "35.190.224.0/19", "35.192.0.0/13", "35.200.0.0/14", "35.204.0.0/15", "35.220.0.0/14", "35.224.0.0/14", "35.228.0.0/14", "35.232.0.0/14", "35.236.0.0/14", "35.240.0.0/14", "35.244.0.0/14", "64.233.160.0/19", "64.233.160.0/24", "64.233.161.0/24", "64.233.162.0/24", "64.233.163.0/24", "64.233.164.0/24", "64.233.165.0/24", "64.233.166.0/24", "64.233.167.0/24", "64.233.168.0/24", "64.233.169.0/24", "64.233.170.0/24", "64.233.171.0/24", "64.233.172.0/23", "64.233.176.0/24", "64.233.177.0/24", "64.233.178.0/24", "64.233.179.0/24", "64.233.180.0/24", "64.233.181.0/24", "64.233.182.0/24", "64.233.183.0/24", "64.233.184.0/24", "64.233.185.0/24", "64.233.186.0/24", "64.233.187.0/24", "64.233.188.0/24", "64.233.189.0/24", "64.233.190.0/24", "64.233.191.0/24", "66.102.0.0/20", "66.102.1.0/24", "66.102.12.0/24", "66.102.2.0/24", "66.102.3.0/24", "66.102.4.0/24", "66.102.8.0/23", "66.249.64.0/19", "66.249.64.0/20", "66.249.80.0/22", "66.249.84.0/23", "66.249.88.0/24", "70.32.128.0/19", "70.32.129.0/24", "70.32.131.0/24", "70.32.133.0/24", "70.32.145.0/24", "70.32.146.0/23", "70.32.151.0/24", "72.14.192.0/18", "74.114.24.0/21", "74.125.0.0/16", "74.125.0.0/20", "74.125.124.0/24", "74.125.126.0/24", "74.125.127.0/24", "74.125.128.0/24", "74.125.129.0/24", "74.125.130.0/24", "74.125.131.0/24", "74.125.132.0/24", "74.125.133.0/24", "74.125.134.0/24", "74.125.135.0/24", "74.125.136.0/24", "74.125.138.0/24", "74.125.139.0/24", "74.125.140.0/24", "74.125.141.0/24", "74.125.142.0/24", "74.125.143.0/24", "74.125.152.0/21", "74.125.176.0/20", "74.125.192.0/24", "74.125.193.0/24", "74.125.195.0/24", "74.125.196.0/24", "74.125.197.0/24", "74.125.198.0/24", "74.125.199.0/24", "74.125.200.0/24", "74.125.20.0/24", "74.125.201.0/24", "74.125.202.0/24", "74.125.203.0/24", "74.125.204.0/24", "74.125.205.0/24", "74.125.206.0/24", "74.125.21.0/24", "74.125.225.0/24", "74.125.226.0/24", "74.125.227.0/24", "74.125.228.0/24", "74.125.230.0/24", "74.125.23.0/24", "74.125.232.0/24", "74.125.234.0/24", "74.125.235.0/24", "74.125.236.0/24", "74.125.238.0/24", "74.125.24.0/24", "74.125.27.0/24", "74.125.28.0/24", "74.125.30.0/24", "74.125.31.0/24", "74.125.39.0/24", "74.125.44.0/22", "74.125.6.0/24", "74.125.68.0/24", "74.125.69.0/24", "74.125.70.0/24", "74.125.71.0/24", "74.125.72.0/22", "8.34.208.0/21", "8.34.216.0/21", "8.35.192.0/21", "8.35.200.0/21", "8.8.4.0/24", "8.8.8.0/24", "89.207.231.0/24", "173.255.112.0/24", "173.255.113.0/24", "173.255.114.0/24", "173.255.115.0/24", "173.255.116.0/24", "173.255.117.0/24", "173.255.118.0/24", "173.255.119.0/24", "173.255.120.0/24", "173.255.121.0/24", "173.255.122.0/24", "173.255.123.0/24", "173.255.124.0/24", "173.255.125.0/24", "173.255.126.0/24", "173.255.127.0/24", "162.222.179.0/24", "35.227.0.0/16", "35.185.0.0/16", "35.186.0.0/16", "35.187.0.0/16", "35.188.0.0/16", "35.189.0.0/16", "35.190.0.0/16", "35.190.0.0/16", "35.191.0.0/16", "35.192.0.0/16", "35.193.0.0/16", "35.194.0.0/16", "35.195.0.0/16", "35.196.0.0/16", "35.197.0.0/16", "35.198.0.0/16", "35.199.0.0/16", "35.200.0.0/16", "35.201.0.0/16", "35.202.0.0/16", "35.203.0.0/16", "35.204.0.0/16", "35.205.0.0/16", "35.206.0.0/16", "35.207.0.0/16", "35.208.0.0/16", "35.209.0.0/16", "35.210.0.0/16", "35.211.0.0/16", "35.212.0.0/16", "35.213.0.0/16", "35.214.0.0/16", "35.215.0.0/16", "35.216.0.0/16", "35.217.0.0/16", "35.218.0.0/16", "35.219.0.0/16", "35.220.0.0/16", "35.221.0.0/16", "35.222.0.0/16", "35.223.0.0/16", "35.224.0.0/16", "35.225.0.0/16", "35.226.0.0/16", "35.227.0.0/16", "35.228.0.0/16", "35.229.0.0/16", "35.230.0.0/16", "35.231.0.0/16", "35.232.0.0/16", "35.233.0.0/16", "35.234.0.0/16", "35.235.0.0/16", "35.236.0.0/16", "35.237.0.0/16", "35.238.0.0/16", "35.239.0.0/16", "35.240.0.0/16", "35.241.0.0/16", "35.242.0.0/16", "35.243.0.0/16", "35.244.0.0/16", "35.245.0.0/16", "35.246.0.0/16", "35.247.0.0/16", "104.155.0.0/16", "104.196.0.0/16", "104.197.0.0/16", "104.198.0.0/16", "104.199.0.0/16", "64.15.112.0/24", "64.15.113.0/24", "64.15.114.0/24", "64.15.115.0/24", "64.15.116.0/24", "64.15.117.0/24", "64.15.118.0/24", "64.15.119.0/24", "64.15.120.0/24", "64.15.121.0/24", "64.15.122.0/24", "64.15.123.0/24", "64.15.124.0/24", "64.15.125.0/24", "64.15.126.0/24", "64.15.127.0/24", "216.58.209.0/24", } defs_amazon = []string{ "3.0.0.0/8", "63.33.0.0/16", "13.32.0.0/16", "13.33.0.0/16", "13.34.0.0/16", "13.35.0.0/16", "13.36.0.0/16", "13.37.0.0/16", "13.38.0.0/16", "13.39.0.0/16", "13.40.0.0/16", "13.41.0.0/16", "13.42.0.0/16", "13.43.0.0/16", "13.44.0.0/16", "13.45.0.0/16", "13.46.0.0/16", "13.47.0.0/16", "13.48.0.0/16", "13.49.0.0/16", "13.50.0.0/16", "13.51.0.0/16", "13.52.0.0/16", "13.53.0.0/16", "13.54.0.0/16", "13.55.0.0/16", "13.56.0.0/16", "13.57.0.0/16", "13.58.0.0/16", "13.112.0.0/16", "13.113.0.0/16", "13.124.0.0/16", "13.125.0.0/16", "13.126.0.0/16", "13.208.0.0/16", "13.209.0.0/16", "13.210.0.0/16", "13.224.0.0/16", "13.225.0.0/16", "13.226.0.0/16", "13.227.0.0/16", "13.230.0.0/16", "13.232.0.0/16", "13.249.0.0/16", "13.250.0.0/16", "15.160.0.0/16", "15.188.0.0/16", "15.197.0.0/16", "15.236.0.0/16", "15.237.0.0/16", "18.66.0.0/16", "18.117.0.0/16", "18.118.0.0/16", "18.119.0.0/16", "18.120.0.0/16", "18.121.0.0/16", "18.122.0.0/16", "18.123.0.0/16", "18.124.0.0/16", "18.125.0.0/16", "18.126.0.0/16", "18.127.0.0/16", "18.128.0.0/16", "18.129.0.0/16", "18.130.0.0/16", "18.131.0.0/16", "18.132.0.0/16", "18.133.0.0/16", "18.134.0.0/16", "18.153.0.0/16", "18.154.0.0/16", "18.155.0.0/16", "18.156.0.0/16", "18.157.0.0/16", "18.158.0.0/16", "18.159.0.0/16", "18.160.0.0/16", "18.161.0.0/16", "18.162.0.0/16", "18.163.0.0/16", "18.164.0.0/16", "18.165.0.0/16", "18.166.0.0/16", "18.167.0.0/16", "18.168.0.0/16", "18.169.0.0/16", "18.170.0.0/16", "18.171.0.0/16", "18.172.0.0/16", "18.173.0.0/16", "18.174.0.0/16", "18.175.0.0/16", "18.176.0.0/16", "18.177.0.0/16", "18.178.0.0/16", "18.179.0.0/16", "18.180.0.0/16", "18.181.0.0/16", "18.182.0.0/16", "18.184.0.0/16", "18.185.0.0/16", "18.186.0.0/16", "18.187.0.0/16", "18.188.0.0/16", "18.189.0.0/16", "18.190.0.0/16", "18.191.0.0/16", "18.192.0.0/16", "18.193.0.0/16", "18.194.0.0/16", "18.195.0.0/16", "18.196.0.0/16", "18.197.0.0/16", "18.198.0.0/16", "18.199.0.0/16", "18.200.0.0/16", "18.201.0.0/16", "18.202.0.0/16", "18.203.0.0/16", "18.204.0.0/16", "18.205.0.0/16", "18.206.0.0/16", "18.206.0.0/16", "18.207.0.0/16", "18.208.0.0/16", "18.229.0.0/16", "18.232.0.0/16", "18.233.0.0/16", "23.20.0.0/16", "23.21.0.0/16", "23.22.0.0/16", "50.18.0.0/16", "50.112.0.0/16", "54.65.0.0/16", "52.84.0.0/16", "52.85.0.0/16", "52.86.0.0/16", "52.87.0.0/16", "52.88.0.0/16", "52.89.0.0/16", "52.90.0.0/16", "52.91.0.0/16", "52.92.0.0/16", "52.93.0.0/16", "52.94.0.0/16", "52.95.0.0/16", "52.200.0.0/16", "63.32.0.0/16", "63.34.0.0/16", "18.211.0.0/16", "18.212.0.0/16", "18.213.0.0/16", "18.214.0.0/16", "34.192.0.0/16", "34.193.0.0/16", "34.194.0.0/16", "34.195.0.0/16", "34.196.0.0/16", "34.197.0.0/16", "34.198.0.0/16", "34.199.0.0/16", "34.200.0.0/16", "34.201.0.0/16", "34.202.0.0/16", "34.203.0.0/16", "34.204.0.0/16", "34.205.0.0/16", "34.206.0.0/16", "34.207.0.0/16", "34.208.0.0/16", "34.209.0.0/16", "34.210.0.0/16", "34.211.0.0/16", "34.212.0.0/16", "34.213.0.0/16", "34.214.0.0/16", "34.215.0.0/16", "34.216.0.0/16", "34.217.0.0/16", "34.225.0.0/16", "34.226.0.0/16", "34.227.0.0/16", "34.228.0.0/16", "34.229.0.0/16", "34.230.0.0/16", "34.231.0.0/16", "34.232.0.0/16", "34.233.0.0/16", "34.234.0.0/16", "34.235.0.0/16", "34.236.0.0/16", "34.237.0.0/16", "34.238.0.0/16", "34.239.0.0/16", "34.240.0.0/16", "34.241.0.0/16", "34.242.0.0/16", "34.243.0.0/16", "34.244.0.0/16", "34.245.0.0/16", "34.246.0.0/16", "34.247.0.0/16", "34.248.0.0/16", "34.249.0.0/16", "34.250.0.0/16", "34.251.0.0/16", "34.252.0.0/16", "34.253.0.0/16", "34.254.0.0/16", "34.255.0.0/16", "35.71.0.0/16", "35.72.0.0/16", "35.73.0.0/16", "35.74.0.0/16", "35.75.0.0/16", "35.76.0.0/16", "35.77.0.0/16", "35.78.0.0/16", "35.79.0.0/16", "35.80.0.0/16", "35.81.0.0/16", "35.82.0.0/16", "35.152.0.0/16", "35.153.0.0/16", "35.154.0.0/16", "35.155.0.0/16", "35.156.0.0/16", "35.157.0.0/16", "35.158.0.0/16", "35.159.0.0/16", "35.160.0.0/16", "35.161.0.0/16", "35.162.0.0/16", "35.163.0.0/16", "35.164.0.0/16", "35.165.0.0/16", "35.166.0.0/16", "35.167.0.0/16", "35.168.0.0/16", "35.169.0.0/16", "35.170.0.0/16", "35.171.0.0/16", "35.172.0.0/16", "35.173.0.0/16", "35.174.0.0/16", "35.175.0.0/16", "35.176.0.0/16", "35.177.0.0/16", "35.178.0.0/16", "35.179.0.0/16", "35.180.0.0/16", "35.181.0.0/16", "35.182.0.0/16", "35.183.0.0/16", "44.193.0.0/16", "44.194.0.0/16", "44.195.0.0/16", "44.196.0.0/16", "44.197.0.0/16", "44.198.0.0/16", "44.199.0.0/16", "44.200.0.0/16", "44.201.0.0/16", "44.202.0.0/16", "44.203.0.0/16", "44.204.0.0/16", "44.205.0.0/16", "44.206.0.0/16", "44.207.0.0/16", "44.208.0.0/16", "44.209.0.0/16", "44.210.0.0/16", "44.211.0.0/16", "44.212.0.0/16", "44.213.0.0/16", "44.214.0.0/16", "44.215.0.0/16", "44.216.0.0/16", "44.217.0.0/16", "44.218.0.0/16", "44.219.0.0/16", "44.220.0.0/16", "44.221.0.0/16", "44.222.0.0/16", "44.223.0.0/16", "44.224.0.0/16", "44.225.0.0/16", "44.226.0.0/16", "44.236.0.0/16", "44.239.0.0/16", "52.1.0.0/16", "52.2.0.0/16", "52.3.0.0/16", "52.4.0.0/16", "52.5.0.0/16", "52.6.0.0/16", "52.10.0.0/16", "52.16.0.0/16", "52.17.0.0/16", "52.18.0.0/16", "52.19.0.0/16", "52.20.0.0/16", "52.21.0.0/16", "52.22.0.0/16", "52.23.0.0/16", "52.24.0.0/16", "52.25.0.0/16", "52.26.0.0/16", "52.27.0.0/16", "52.28.0.0/16", "52.29.0.0/16", "52.30.0.0/16", "52.31.0.0/16", "52.32.0.0/16", "52.33.0.0/16", "52.34.0.0/16", "52.35.0.0/16", "52.36.0.0/16", "52.37.0.0/16", "52.38.0.0/16", "52.39.0.0/16", "52.40.0.0/16", "52.41.0.0/16", "52.42.0.0/16", "52.43.0.0/16", "52.44.0.0/16", "52.45.0.0/16", "52.46.0.0/16", "52.47.0.0/16", "52.48.0.0/16", "52.49.0.0/16", "52.50.0.0/16", "52.51.0.0/16", "52.52.0.0/16", "52.53.0.0/16", "52.54.0.0/16", "52.55.0.0/16", "52.56.0.0/16", "52.57.0.0/16", "52.58.0.0/16", "52.59.0.0/16", "52.60.0.0/16", "52.70.0.0/16", "52.72.0.0/16", "52.73.0.0/16", "52.74.0.0/16", "52.119.0.0/16", "52.192.0.0/16", "52.193.0.0/16", "52.194.0.0/16", "52.195.0.0/16", "52.196.0.0/16", "52.197.0.0/16", "52.198.0.0/16", "52.199.0.0/16", "52.200.0.0/16", "52.201.0.0/16", "52.202.0.0/16", "52.203.0.0/16", "52.204.0.0/16", "52.205.0.0/16", "52.206.0.0/16", "52.207.0.0/16", "52.208.0.0/16", "52.209.0.0/16", "52.210.0.0/16", "52.211.0.0/16", "52.212.0.0/16", "52.213.0.0/16", "52.214.0.0/16", "52.215.0.0/16", "52.216.0.0/16", "52.217.0.0/16", "52.218.0.0/16", "52.219.0.0/16", "52.220.0.0/16", "52.221.0.0/16", "52.222.0.0/16", "54.64.0.0/16", "54.65.0.0/16", "54.69.0.0/16", "54.70.0.0/16", "54.71.0.0/16", "54.72.0.0/16", "54.73.0.0/16", "54.74.0.0/16", "54.75.0.0/16", "54.76.0.0/16", "54.77.0.0/16", "54.78.0.0/16", "54.79.0.0/16", "54.80.0.0/16", "54.81.0.0/16", "54.82.0.0/16", "54.83.0.0/16", "54.84.0.0/16", "54.85.0.0/16", "54.86.0.0/16", "54.91.0.0/16", "54.95.0.0/16", "54.145.0.0/16", "54.165.0.0/16", "54.195.0.0/16", "54.220.0.0/16", "54.65.0.0/16", "54.151.0.0/16", "54.152.0.0/16", "54.153.0.0/16", "54.154.0.0/16", "54.155.0.0/16", "54.156.0.0/16", "54.157.0.0/16", "54.158.0.0/16", "54.159.0.0/16", "54.160.0.0/16", "54.161.0.0/16", "54.162.0.0/16", "54.163.0.0/16", "54.164.0.0/16", "54.165.0.0/16", "54.166.0.0/16", "54.167.0.0/16", "54.168.0.0/16", "54.169.0.0/16", "54.170.0.0/16", "54.171.0.0/16", "54.172.0.0/16", "54.173.0.0/16", "54.174.0.0/16", "54.175.0.0/16", "54.176.0.0/16", "54.177.0.0/16", "54.191.0.0/16", "54.192.0.0/16", "54.193.0.0/16", "54.194.0.0/16", "54.195.0.0/16", "54.196.0.0/16", "54.200.0.0/16", "54.201.0.0/16", "54.202.0.0/16", "54.203.0.0/16", "54.204.0.0/16", "54.205.0.0/16", "54.206.0.0/16", "54.207.0.0/16", "54.208.0.0/16", "54.209.0.0/16", "54.210.0.0/16", "54.211.0.0/16", "54.212.0.0/16", "54.213.0.0/16", "54.214.0.0/16", "54.215.0.0/16", "54.216.0.0/16", "54.217.0.0/16", "54.218.0.0/16", "54.219.0.0/16", "54.220.0.0/16", "54.221.0.0/16", "54.222.0.0/16", "54.223.0.0/16", "54.224.0.0/16", "54.225.0.0/16", "54.226.0.0/16", "54.227.0.0/16", "54.228.0.0/16", "54.229.0.0/16", "54.237.0.0/16", "54.238.0.0/16", "54.239.0.0/16", "54.240.0.0/16", "54.241.0.0/16", "54.242.0.0/16", "54.243.0.0/16", "54.244.0.0/16", "54.245.0.0/16", "54.246.0.0/16", "54.252.0.0/16", "63.35.0.0/16", "72.21.195.0/24", "72.44.45.0/24", "52.48.0.0/16", "52.222.0.0/16", "54.91.0.0/16", "52.3.0.0/16", "79.125.21.0/24", "79.125.22.0/24", "79.125.23.0/24", "205.251.0.0/16", "209.54.177.0/24", "209.54.178.0/24", "209.54.179.0/24", "209.54.180.0/24", "209.54.181.0/24", "209.54.182.0/24", "209.54.183.0/24", "209.54.184.0/24", "209.54.185.0/24", "209.54.186.0/24", "209.54.187.0/24", "209.54.188.0/24", "209.54.189.0/24", "209.54.190.0/24", "184.73.0.0/16", "107.22.0.0/16", "99.79.0.0/16", "99.80.0.0/16", "99.81.0.0/16", "99.82.0.0/16", "99.83.0.0/16", "99.84.0.0/16", "99.86.0.0/16", "100.20.0.0/14", "100.24.0.0/16", "100.25.0.0/16", "103.4.9.0/24", "103.124.134.0/24", "103.124.135.0/24", "103.127.75.0/24", "103.136.10.0/24", "103.143.45.0/24", "103.145.182.0/24", "103.145.192.0/24", "103.147.71.0/24", "103.149.112.0/24", "103.150.161.0/24", "103.151.192.0/24", "103.151.193.0/24", "103.152.248.0/24", "103.153.47.0/24", "103.16.101.0/24", "103.16.59.0/24", "103.161.77.0/24", "103.165.160.0/24", "103.124.134.0/24", "103.124.135.0/24", "103.127.75.0/24", "103.136.10.0/24", "103.138.231.0/24", "103.143.45.0/24", "103.145.192.0/24", "103.147.71.0/24", "103.149.112.0/24", "103.150.161.0/24", "103.150.47.0/24", "103.151.192.0/24", "103.151.193.0/24", "103.151.24.0/24", "103.152.248.0/24", "103.153.47.0/24", "103.16.101.0/24", "108.128.0.0/16", "108.129.0.0/16", "108.138.0.0/16", "143.204.0.0/16", "176.32.98.0/24", "176.32.101.0/24", "176.34.0.0/16", } defs_digitalocean = []string{ "103.253.144.0/22", "104.72.73.0/24", "104.131.0.0/18", "104.131.128.0/20", "104.131.144.0/20", "104.131.160.0/20", "104.131.176.0/20", "104.131.192.0/19", "104.131.224.0/19", "104.131.64.0/18", "104.236.0.0/18", "104.236.128.0/18", "104.236.192.0/18", "104.236.64.0/18", "104.248.0.0/20", "104.248.100.0/22", "104.248.104.0/22", "104.248.108.0/22", "104.248.112.0/20", "104.248.128.0/20", "104.248.144.0/20", "138.68.0.0/16", "138.197.0.0/16", "139.59.0.0/16", "68.183.0.0/16", "107.170.0.0/16", "142.93.0.0/16", "146.185.167.0/24", "159.89.0.0/16", "159.65.0.0/16", "159.203.0.0/16", "167.172.0.0/16", "188.226.144.0/24", "198.199.67.0/24", "198.199.74.0/24", "198.211.116.0/24", "206.189.0.0/16", "104.248.0.0/16", "174.138.29.0/24", "162.243.0.0/16", "165.227.0.0/16", "167.99.0.0/16", "45.55.0.0/16", "46.101.0.0/16", "104.131.0.0/16", "104.236.0.0/16", "178.128.0.0/16", "192.241.128.0/24", "192.241.129.0/24", "192.241.130.0/24", "192.241.131.0/24", "192.241.132.0/24", "192.241.133.0/24", "192.241.134.0/24", "192.241.135.0/24", "192.241.136.0/24", "192.241.137.0/24", "192.241.138.0/24", "192.241.139.0/24", "192.241.140.0/24", "192.241.141.0/24", "192.241.142.0/24", "192.241.143.0/24", "192.241.144.0/24", "192.241.145.0/24", "192.241.146.0/24", "192.241.147.0/24", "192.241.148.0/24", "192.241.149.0/24", "192.241.150.0/24", "192.241.151.0/24", "192.241.152.0/24", "192.241.153.0/24", "192.241.154.0/24", "192.241.155.0/24", "192.241.156.0/24", "192.241.157.0/24", "192.241.158.0/24", "192.241.159.0/24", "192.241.160.0/24", "192.241.161.0/24", "192.241.162.0/24", "192.241.163.0/24", "192.241.164.0/24", "192.241.165.0/24", "192.241.166.0/24", "192.241.167.0/24", "192.241.168.0/24", "192.241.169.0/24", "192.241.170.0/24", "192.241.171.0/24", "192.241.172.0/24", "192.241.173.0/24", "192.241.174.0/24", "192.241.175.0/24", "192.241.176.0/24", "192.241.177.0/24", "192.241.178.0/24", "192.241.179.0/24", "192.241.180.0/24", "192.241.181.0/24", "192.241.182.0/24", "192.241.183.0/24", "192.241.184.0/24", "192.241.185.0/24", "192.241.186.0/24", "192.241.187.0/24", "192.241.188.0/24", "192.241.189.0/24", "192.241.190.0/24", "192.241.191.0/24", "192.241.192.0/24", "192.241.193.0/24", "192.241.194.0/24", "192.241.195.0/24", "192.241.196.0/24", "192.241.197.0/24", "192.241.198.0/24", "192.241.199.0/24", "192.241.200.0/24", "192.241.201.0/24", "192.241.202.0/24", "192.241.203.0/24", "192.241.204.0/24", "192.241.205.0/24", "192.241.206.0/24", "192.241.207.0/24", "192.241.208.0/24", "192.241.209.0/24", "192.241.210.0/24", "192.241.211.0/24", "192.241.212.0/24", "192.241.213.0/24", "192.241.214.0/24", "192.241.215.0/24", "192.241.216.0/24", "192.241.217.0/24", "192.241.218.0/24", "192.241.219.0/24", "192.241.220.0/24", "192.241.221.0/24", "192.241.222.0/24", "192.241.223.0/24", "192.241.224.0/24", "192.241.225.0/24", "192.241.226.0/24", "192.241.227.0/24", "192.241.228.0/24", "192.241.229.0/24", "192.241.230.0/24", "192.241.231.0/24", "192.241.232.0/24", "192.241.233.0/24", "192.241.234.0/24", "192.241.235.0/24", "192.241.236.0/24", "192.241.237.0/24", "192.241.238.0/24", "192.241.239.0/24", "192.241.240.0/24", "192.241.241.0/24", "192.241.242.0/24", "192.241.243.0/24", "192.241.244.0/24", "192.241.245.0/24", "192.241.246.0/24", "192.241.247.0/24", "192.241.248.0/24", "192.241.249.0/24", "192.241.250.0/24", "192.241.251.0/24", "192.241.252.0/24", "192.241.253.0/24", "192.241.254.0/24", "192.241.255.0/24", "174.138.29.0/24", } defs_smartadservers = []string{"199.187.192.0/22"} defs_adjust = []string{ "185.151.204.0/24", "185.151.205.0/24", "185.151.206.0/24", "185.151.207.0/24", "185.230.39.0/24", "185.255.24.0/22", } defs_adify_corporation = []string{ "74.117.196.0/24", "74.117.197.0/24", "74.117.198.0/24", "74.117.199.0/24", } defs_indexExchange = []string{ "185.80.36.0/24", "185.80.37.0/24", "185.80.38.0/24", "185.80.39.0/24", } defs_kaspersky = []string{ "81.19.104.0/24", "195.122.177.128/25", "62.67.238.128/25", "77.74.176.0/24", "77.74.177.0/24", "77.74.178.0/24", "77.74.179.0/24", "77.74.180.0/24", "77.74.181.0/24", "77.74.182.0/24", "77.74.183.0/24", "82.202.184.0/24", "82.202.185.0/24", "82.202.186.0/24", "82.202.187.0/24", "82.202.188.0/24", "82.202.189.0/24", "82.202.190.0/24", "82.202.191.0/24", "93.159.230.0/24", } defs_internet_archive = []string{"207.241.224.0/20", "208.70.24.0/21"} defs_conviva = []string{ "199.127.193.0/24", "199.127.192.0/24", "199.127.193.0/24", "199.127.194.0/24", "199.127.195.0/24", "8.15.246.0/24", "8.5.250.0/24", } defs_avast = []string{"77.234.43.0/24"} defs_eulerian = []string{"109.232.192.0/21"} defs_trendmicro = []string{"150.70.183.0/24"} defs_automattic = []string{"192.0.77.0/24", "192.0.73.0/24"} defs_inmotion = []string{ "192.249.118.0/24", "104.152.108.0/22", "104.244.120.0/21", "104.244.120.0/23", "104.244.122.0/24", "104.244.123.0/24", "104.244.124.0/22", "104.247.72.0/23", "104.247.74.0/23", "144.208.64.0/22", "144.208.68.0/22", "173.231.192.0/20", "173.231.224.0/20", "173.231.232.0/21", "173.231.232.0/22", "173.231.236.0/22", "173.247.240.0/22", "173.247.244.0/23", "173.247.246.0/23", "173.247.248.0/21", "192.145.232.0/21", } defs_limelight_networks = []string{ "95.140.239.0/24", "111.119.0.0/22", "111.119.11.0/24", "111.119.16.0/23", "111.119.20.0/23", "111.119.22.0/23", "111.119.24.0/21", "111.119.4.0/22", "117.121.248.0/21", "117.121.248.0/22", "117.121.248.0/23", "117.121.250.0/23", "117.121.254.0/23", "172.105.130.0/23", "172.105.132.0/23", "172.105.140.0/23", "172.105.142.0/23", "178.249.104.0/21", "178.249.105.0/24", "178.79.192.0/18", "178.79.196.0/23", } defs_sdv_plurimedia = []string{ "212.95.74.0/24", "213.225.160.0/19", "212.95.64.0/19", "88.151.14.0/24", } defs_linkdein = []string{ "185.63.144.0/24", "185.63.145.0/24", "185.63.146.0/24", "185.63.147.0/24", } defs_appnexus = []string{ "185.33.221.0/24", "103.43.88.0/24", "103.43.89.0/24", "103.43.90.0/23", "104.254.148.0/22", "172.83.92.0/24", "185.33.220.0/22", "185.83.140.0/22", "185.89.208.0/22", "192.190.7.0/24", "204.13.192.0/21", "204.13.193.0/24", "207.237.150.0/24", "216.252.164.0/23", "216.252.166.0/24", "37.252.160.0/21", "37.252.168.0/21", "43.250.0.0/22", "64.208.136.0/22", "64.208.140.0/24", "64.208.141.0/24", } defs_telegram_messgenger = []string{ "149.154.160.0/24", "149.154.161.0/24", "149.154.162.0/24", "149.154.163.0/24", "149.154.164.0/24", "149.154.165.0/24", "149.154.166.0/24", "149.154.167.0/24", "149.154.168.0/24", "149.154.169.0/24", "149.154.170.0/24", "149.154.171.0/24", "149.154.172.0/24", "149.154.173.0/24", "149.154.174.0/24", "149.154.175.0/24", "149.154.160.0/22", "149.154.164.0/22", "91.108.4.0/22", "91.108.56.0/22", "91.108.8.0/22", "95.161.64.0/20", } defs_remote_control = []string{ "64.68.120.0/24", "162.253.7.0/24", "162.253.2.0/24", "185.188.32.0/24", "185.188.33.0/24", "185.188.34.0/24", "185.188.35.0/24", "185.188.36.0/24", } defs_monaco_telecom = []string{ "80.94.98.0/24", "91.199.109.0/24", "91.198.207.0/24", "88.209.64.0/18", "87.254.224.0/19", "82.113.0.0/19", "185.162.120.0/22", "185.250.4.0/22", "193.105.1.0/24", "195.20.192.0/23", "80.94.96.0/20", } defs_controld = []string{"76.76.2.0/24"} defs_convia_inc = []string{ "199.127.192.0/24", "199.127.193.0/24", "199.127.194.0/24", "199.127.195.0/24", "8.15.246.0/24", "8.5.250.0/24", } defs_internap_holding = []string{ "63.251.0.0/16", "107.150.146.0/23", "107.6.104.0/22", "107.6.64.0/21", "107.6.72.0/21", "107.6.80.0/21", "107.6.88.0/21", "107.6.88.0/22", "107.6.92.0/23", "107.6.92.0/24", "107.6.93.0/24", "107.6.96.0/21", "107.6.96.0/24", "162.217.100.0/22", "162.217.96.0/22", "162.217.96.0/24", "162.217.98.0/24", "162.217.99.0/24", "173.231.128.0/18", "173.231.176.0/22", "173.231.180.0/23", "72.251.241.0/24", } defs_salesforce = []string{ "136.146.0.0/16", "96.43.144.0/24", "96.43.145.0/24", "96.43.146.0/24", "96.43.147.0/24", "96.43.148.0/24", "96.43.149.0/24", "96.43.150.0/24", "96.43.151.0/24", "96.43.152.0/24", "96.43.153.0/24", "96.43.154.0/24", "96.43.155.0/24", "96.43.156.0/24", "96.43.157.0/24", "96.43.158.0/24", "96.43.159.0/24", "85.222.128.0/24", "85.222.129.0/24", "85.222.130.0/24", "85.222.131.0/24", "85.222.132.0/24", "85.222.133.0/24", "85.222.134.0/24", "85.222.135.0/24", "85.222.136.0/24", "85.222.137.0/24", "85.222.138.0/24", "85.222.139.0/24", "85.222.140.0/24", "85.222.141.0/24", "85.222.142.0/24", "85.222.143.0/24", "85.222.144.0/24", "85.222.145.0/24", "85.222.146.0/24", "85.222.147.0/24", "85.222.148.0/24", "85.222.149.0/24", "85.222.150.0/24", "85.222.151.0/24", "85.222.152.0/24", "85.222.153.0/24", "85.222.154.0/24", "85.222.155.0/24", "85.222.156.0/24", "85.222.157.0/24", "85.222.158.0/24", "85.222.159.0/24", } defs_adobe = []string{ "66.235.149.0/24", "63.140.33.0/24", "63.140.34.0/24", "63.140.41.0/24", "63.140.60.0/24", "63.140.61.0/24", "172.82.225.0/24", "172.82.229.0/24", "172.82.228.0/24", "172.82.230.0/24", "172.82.231.0/24", "172.82.232.0/24", "172.82.233.0/24", "172.82.233.0/24", "172.82.234.0/24", "172.82.235.0/24", "172.82.236.0/24", "172.82.237.0/24", "172.82.238.0/24", "172.82.239.0/24", "172.82.240.0/24", "172.82.241.0/24", "172.82.242.0/24", "172.82.243.0/24", "172.82.244.0/24", "172.82.245.0/24", "172.82.246.0/24", "172.82.247.0/24", "172.82.248.0/24", "172.82.249.0/24", "172.82.250.0/24", "192.147.130.0/24", "192.243.246.0/24", } def_unversity = []string{ "45.90.132.0/22", "129.69.0.0/24", "129.69.0.0/16", "129.143.0.0/24", "129.143.0.0/16", "129.143.87.80/28", "129.206.0.0/24", "129.206.0.0/16", "132.230.0.0/24", "132.230.0.0/16", "134.2.0.0/24", "134.2.0.0/16", "134.34.0.0/24", "134.34.0.0/16", "134.60.0.0/24", "134.60.0.0/16", "134.103.0.0/24", "134.103.0.0/16", "134.108.0.0/24", "134.108.0.0/16", "134.155.0.0/24", "134.155.0.0/16", "141.7.0.0/24", "141.7.0.0/16", "141.10.0.0/24", "141.10.0.0/16", "141.18.0.0/24", "141.18.0.0/16", "141.18.0.0/15", "141.19.0.0/24", "141.19.0.0/16", "141.28.0.0/24", "141.28.0.0/16", "141.31.0.0/24", "141.31.0.0/16", "141.37.0.0/24", "141.37.0.0/16", "141.47.0.0/24", "141.47.0.0/16", "141.58.0.0/24", "141.58.0.0/16", "141.58.0.0/15", "141.59.0.0/24", "141.59.0.0/16", "141.62.0.0/24", "141.62.0.0/17", "141.62.0.0/16", "141.68.0.0/24", "141.68.0.0/16", "141.68.0.0/15", "141.69.0.0/24", "141.69.0.0/16", "141.70.0.0/24", "141.70.0.0/16", "141.70.128.0/17", "141.72.0.0/24", "141.72.0.0/17", "141.72.0.0/16", "141.72.128.0/18", "141.79.0.0/24", "141.79.0.0/16", "141.87.0.0/24", "141.87.0.0/16", "144.41.0.0/24", "144.41.0.0/16", "147.142.0.0/24", "147.142.0.0/16", "153.96.83.0/24", "161.42.0.0/24", "161.42.0.0/16", "185.134.84.0/22", "192.42.143.0/24", "192.52.0.0/19", "192.52.32.0/20", "192.52.48.0/23", "192.52.50.0/24", "192.67.189.0/24", "192.67.208.0/24", "192.108.35.0/24", "192.108.36.0/22", "192.108.40.0/22", "192.108.44.0/24", "192.109.76.0/24", "193.196.0.0/21", "193.196.0.0/15", "193.196.9.0/24", "193.196.13.0/24", "193.196.16.0/20", "193.196.64.0/18", "193.196.129.0/24", "193.196.132.0/22", "193.196.136.0/21", "193.196.144.0/21", "193.196.152.0/24", "193.196.154.0/23", "193.196.156.0/22", "193.196.160.0/22", "193.196.165.0/24", "193.196.166.0/23", "193.196.168.0/21", "193.196.176.0/20", "193.196.192.0/18", "193.197.0.0/24", "193.197.4.0/23", "193.197.8.0/22", "193.197.20.0/23", "193.197.28.0/22", "193.197.32.0/19", "193.197.64.0/22", "193.197.68.0/23", "193.197.70.0/24", "193.197.80.0/22", "193.197.85.0/24", "193.197.86.0/23", "193.197.94.0/24", "193.197.120.0/21", "193.197.130.0/24", "193.197.132.0/22", "193.197.136.0/21", "193.197.149.0/24", "193.197.152.0/22", "193.197.157.0/24", "193.197.160.0/23", "193.197.168.0/21", "193.197.180.0/22", "193.197.200.0/21", "193.197.212.0/24", "193.197.224.0/19", "132.203.0.0/16", "132.219.137.0/24", } def_vodaphone = []string{ "195.27.0.0/16", "195.59.0.0/16", "196.55.215.0/24", "176.95.132.0/24", "5.28.194.0/24", } def_apple = []string{"17.0.0.0/8"} def_ionos = []string{ "104.192.4.0/22", "104.219.40.0/22", "104.254.244.0/22", "108.175.0.0/20", "162.255.84.0/22", "185.132.36.0/22", "185.132.40.0/22", "192.195.77.0/24", "195.20.224.0/19", "198.251.64.0/20", "198.71.48.0/20", "212.227.0.0/16", "212.227.148.0/23", "212.227.168.0/23", "212.227.226.0/23", "212.227.228.0/23", "217.160.86.0/24", } def_fly_io = []string{"213.188.196.0/24"} def_mach_dilemma = []string{ "103.196.38.0/24", "103.196.36.0/24", "103.196.37.0/24", "103.196.38.0/24", "103.196.39.0/24", "198.72.6.0/24", "45.127.114.0/24", "45.127.115.0/24", } def_facebook = []string{ "31.13.65.0/24", "31.13.83.0/24", "179.60.192.0/24", "157.240.0.0/16", "102.132.100.0/24", "102.132.101.0/24", "102.132.96.0/20", "102.132.96.0/24", "102.132.99.0/24", "103.4.96.0/22", "129.134.0.0/17", "129.134.25.0/24", "129.134.26.0/24", "129.134.27.0/24", "129.134.28.0/24", "129.134.29.0/24", "129.134.30.0/23", "129.134.30.0/24", "129.134.31.0/24", "129.134.64.0/24", "129.134.65.0/24", "129.134.66.0/24", "129.134.67.0/24", "129.134.68.0/24", } def_fastly = []string{ "185.199.108.0/24", "185.199.109.0/24", "185.199.110.0/24", "185.199.111.0/24", "199.232.0.0/16", "151.101.0.0/16", } def_bouygues_telecom = []string{"213.44.0.0/16"} def_rubicon_project = []string{ "69.173.144.0/24", "192.203.231.0/24", "195.122.175.0/24", "208.185.50.0/24", "213.19.162.0/24", "69.173.144.0/24", "69.173.145.0/24", "69.173.148.0/22", "69.173.154.0/23", "69.173.158.0/24", "8.43.72.0/22", } def_roblox = []string{ "128.116.121.0/24", "103.140.28.0/23", "128.116.0.0/17", "128.116.0.0/24", "128.116.1.0/24", "128.116.100.0/24", "128.116.101.0/24", "128.116.102.0/24", "128.116.105.0/24", "128.116.11.0/24", "128.116.112.0/24", "128.116.113.0/24", "128.116.114.0/24", "128.116.115.0/24", "128.116.116.0/24", "128.116.117.0/24", "128.116.118.0/24", "128.116.119.0/24", "128.116.120.0/24", "128.116.121.0/24", "128.116.122.0/24", } def_highwinds_network_group = []string{ "151.139.128.0/24", "151.139.130.0/24", "151.139.254.0/24", "151.139.255.0/24", "205.185.208.0/24", "205.185.216.0/24", "209.197.2.0/24", "209.197.3.0/24", "64.145.64.0/24", "69.16.174.0/24", "69.16.175.0/24", } def_m247 = []string{ "102.128.164.0/24", "102.128.165.0/24", "102.129.156.0/24", "102.165.22.0/24", "102.38.232.0/24", "103.105.164.0/24", "103.110.105.0/24", "103.111.32.0/24", "103.115.185.0/24", "103.129.116.0/24", "103.129.117.0/24", "103.129.118.0/24", "103.129.119.0/24", "103.130.178.0/24", "103.131.235.0/24", "193.19.108.0/24", "194.242.2.0/24", } def_canalplus = []string{ "185.86.252.0/23", "185.86.253.0/24", "185.86.254.0/24", "185.86.255.0/24", } def_network_of_data_centers = []string{"81.163.16.0/24"} def_akamai = []string{ "2.16.0.0/16", "2.17.0.0/16", "2.18.85.0/24", "2.18.107.0/24", "2.18.134.0/24", "2.18.133.0/24", "2.18.131.0/24", "2.18.132.0/24", "2.18.231.0/24", "2.18.247.0/24", "2.19.88.0/24", "2.19.227.0/24", "2.20.0.0/16", "2.21.0.0/16", "2.22.0.0/16", "2.23.92.0/24", "23.1.0.0/16", "23.33.0.0/16", "23.37.0.0/16", "23.38.0.0/16", "23.39.0.0/16", "23.40.0.0/16", "23.41.0.0/16", "23.42.0.0/16", "23.43.0.0/16", "23.44.0.0/16", "23.45.0.0/16", "23.46.0.0/16", "23.47.0.0/16", "23.48.0.0/16", "23.48.0.0/16", "23.49.0.0/16", "23.50.0.0/16", "23.51.0.0/16", "23.52.0.0/16", "23.53.0.0/16", "23.54.0.0/16", "23.55.0.0/16", "23.56.0.0/16", "23.57.0.0/16", "23.58.0.0/16", "23.59.0.0/16", "23.60.0.0/16", "23.61.91.0/24", "23.72.0.0/16", "23.77.0.0/16", "23.200.0.0/16", "23.205.0.0/16", "23.207.0.0/16", "23.212.0.0/16", "23.220.0.0/16", "23.221.0.0/16", "23.222.0.0/16", "23.223.0.0/16", "23.224.0.0/16", "104.87.0.0/16", "104.67.0.0/16", "23.17.0.0/16", "88.221.0.0/16", "96.6.0.0/16", "103.225.242.0/24", "103.238.150.0/23", "103.51.152.0/24", "103.95.84.0/22", "104.80.0.0/16", "104.100.112.0/20", "104.100.128.0/19", "104.100.16.0/20", "104.100.160.0/22", "104.100.172.0/22", "104.100.176.0/20", "104.100.192.0/19", "104.100.224.0/19", "104.100.32.0/20", "104.100.48.0/20", "104.100.64.0/20", "104.100.80.0/22", "104.100.84.0/23", "104.100.86.0/23", "104.100.88.0/22", "104.100.96.0/20", "104.101.0.0/20", "104.82.0.0/16", "104.100.170.0/24", "104.100.93.0/24", "104.101.104.0/22", "104.101.108.0/22", "104.101.192.0/22", "104.101.196.0/22", "104.101.204.0/22", "104.108.55.0/24", "104.101.208.0/24", "104.101.210.0/24", "104.101.211.0/24", "104.101.212.0/22", "104.101.216.0/22", "104.101.224.0/22", "104.101.228.0/24", "104.101.229.0/24", "104.101.232.0/22", "104.101.98.0/23", "104.102.24.0/24", "104.102.241.0/24", "104.103.0.0/16", "104.106.88.0/23", "104.107.166.0/23", "104.110.180.0/22", "104.74.25.0/24", "104.74.64.0/24", "104.77.210.0/23", "104.80.26.0/23", "104.82.188.0/23", "104.86.0.0/16", "104.90.206.0/23", "104.91.56.0/23", "104.93.90.0/23", "104.108.0.0/16", "184.25.0.0/16", "184.50.30.0/23", "184.51.140.0/24", "184.51.254.0/23", "184.51.255.0/24", "184.85.251.0/24", "193.108.152.0/22", "193.108.152.0/24", "193.108.88.0/21", "195.245.124.0/23", "195.245.126.0/23", "84.53.148.0/24", "92.123.0.0/16", "95.100.0.0/16", "95.101.0.0/16", "69.192.0.0/16", "104.108.0.0/16", "104.120.0.0/16", "104.123.0.0/16", "104.126.0.0/16", "184.31.0.0/16", "172.227.0.0/16", "72.246.0.0/16", "84.53.170.0/24", "84.53.169.0/24", "96.16.0.0/16", "173.222.0.0/16", "92.122.0.0/16", "184.26.148.0/24", } def_yahoo = []string{ "87.248.100.0/24", "217.12.13.0/24", "188.125.66.0/24", "188.125.64.0/21", "188.125.66.0/23", "188.125.68.0/23", "188.125.72.0/22", "188.125.72.0/24", "188.125.73.0/24", "188.125.76.0/22", "188.125.80.0/21", "188.125.80.0/24", "188.125.82.0/24", "212.82.100.0/22", "212.82.100.0/24", "212.82.101.0/24", "212.82.104.0/21", "212.82.106.0/24", "212.82.108.0/24", "212.82.109.0/24", "212.82.96.0/22", "217.12.12.0/22", "217.12.15.0/24", "77.238.180.0/24", "77.238.181.0/24", "77.238.182.0/24", "188.125.64.0/21", "188.125.66.0/23", "188.125.68.0/23", "188.125.72.0/22", "188.125.72.0/24", "188.125.73.0/24", "188.125.76.0/22", "188.125.80.0/21", "188.125.80.0/24", "188.125.82.0/24", "212.82.100.0/22", "212.82.100.0/24", "212.82.101.0/24", "212.82.104.0/21", "212.82.106.0/24", "212.82.108.0/24", "212.82.109.0/24", "212.82.96.0/22", "217.12.12.0/22", "217.12.15.0/24", "87.248.112.0/24", "87.248.114.0/24", "87.248.115.0/24", "87.248.113.0/24", "87.248.116.0/24", "87.248.117.0/24", } def_liquid_web = []string{ "159.135.0.0/19", "159.135.32.0/20", "207.246.240.0/21", "50.28.96.0/19", "50.56.148.0/22", "98.129.229.0/24", "67.227.186.0/24", "159.135.48.0/20", "162.212.134.0/24", "162.252.104.0/22", "162.255.68.0/23", "172.255.59.0/24", "173.199.128.0/18", "174.34.225.0/24", "184.106.55.0/24", "192.126.88.0/22", "192.138.16.0/21", "192.190.220.0/22", "192.251.32.0/24", "199.189.224.0/22", "199.195.118.0/24", "205.174.24.0/22", "207.246.248.0/21", "208.75.148.0/22", "208.79.232.0/21", "208.86.152.0/21", "209.124.89.0/24", } def_twitter = []string{ "199.59.149.0/24", "69.195.177.0/24", "104.244.40.0/24", "104.244.41.0/24", "104.244.42.0/24", } def_quantserve = []string{"95.172.94.0/24"} def_netflix = []string{ "23.246.2.0/24", "23.246.3.0/24", "23.246.4.0/24", "23.246.5.0/24", "23.246.6.0/24", "23.246.7.0/24", "23.246.8.0/24", "23.246.9.0/24", "23.246.10.0/24", "23.246.11.0/24", "23.246.12.0/24", "23.246.13.0/24", "23.246.14.0/24", "23.246.15.0/24", "23.246.16.0/24", "23.246.17.0/24", "23.246.18.0/24", "23.246.19.0/24", "23.246.20.0/24", "23.246.21.0/24", "23.246.22.0/24", "23.246.23.0/24", "23.246.24.0/24", "23.246.25.0/24", "23.246.26.0/24", "23.246.27.0/24", "23.246.28.0/24", "23.246.29.0/24", "23.246.30.0/24", "23.246.31.0/24", "23.246.32.0/24", "23.246.33.0/24", "23.246.34.0/24", "23.246.35.0/24", "23.246.36.0/24", "23.246.37.0/24", "23.246.38.0/24", "23.246.39.0/24", "23.246.40.0/24", "23.246.41.0/24", "23.246.42.0/24", "23.246.43.0/24", "23.246.44.0/24", "23.246.45.0/24", "23.246.46.0/24", "23.246.47.0/24", "23.246.48.0/24", "23.246.49.0/24", "23.246.50.0/24", "23.246.51.0/24", "23.246.52.0/24", "23.246.53.0/24", "23.246.54.0/24", "23.246.55.0/24", "23.246.56.0/24", "23.246.57.0/24", "23.246.58.0/24", "23.246.59.0/24", "23.246.60.0/24", "23.246.61.0/24", "23.246.62.0/24", "23.246.63.0/24", "45.57.90.0/24", "45.57.40.0/24", "45.57.41.0/24", "45.57.40.0/23", "45.57.40.0/24", "45.57.41.0/24", "45.57.76.0/23", "45.57.76.0/24", "45.57.8.0/23", "45.57.8.0/24", "45.57.86.0/23", "45.57.86.0/24", "45.57.87.0/24", "45.57.9.0/24", "45.57.90.0/23", "45.57.90.0/24", "45.57.91.0/24", } def_llhost = []string{ "46.148.125.0/24", "185.36.143.0/24", "45.155.120.0/24", "45.155.121.0/24", "45.85.117.0/24", "46.148.123.0/24", "46.148.124.0/24", "46.148.125.0/24", "46.148.126.0/24", "46.148.127.0/24", "5.101.44.0/24", "5.181.202.0/24", "5.181.203.0/24", "5.188.179.0/24", "5.188.201.0/24", "5.188.202.0/24", "5.189.216.0/24", "5.189.253.0/24", "5.189.255.0/24", "91.243.40.0/24", } def_marktplaats = []string{ "5.255.156.0/24", "91.211.72.0/24", "91.195.49.0/24", "195.78.85.0/24", } def_videoplazza = []string{ "185.28.136.0/24", "185.28.137.0/24", "185.28.138.0/24", "185.28.139.0/24", } def_banking = []string{ "91.135.176.0/24", "91.135.177.0/24", "91.135.178.0/24", "91.135.179.0/24", "91.135.180.0/24", "91.135.181.0/24", "91.135.182.0/24", "91.135.183.0/24", "91.135.184.0/24", "91.135.185.0/24", "91.135.186.0/24", "91.135.187.0/24", "91.135.188.0/24", "91.135.189.0/24", "91.135.190.0/24", "91.135.190.0/24", "91.135.191.0/24", "173.0.84.0/24", "185.60.56.0/22", "195.93.244.0/24", "195.93.245.0/24", "211.249.49.0/24", "103.6.174.0/24", "103.6.175.0/24", "80.70.210.0/24", "80.70.211.0/24", "80.70.212.0/24", "80.70.213.0/24", "80.70.214.0/24", "80.70.215.0/24", "80.70.216.0/24", "169.36.0.0/16", "169.37.0.0/16", "31.210.0.0/24", "185.148.122.0/24", "145.226.0.0/18", "145.226.128.0/18", "145.226.192.0/18", "145.226.64.0/18", "193.56.246.0/24", "193.57.116.0/22", "193.57.122.0/23", "193.57.124.0/23", "193.57.225.0/24", } def_cloudflare = []string{ "103.21.244.0/24", "103.22.200.0/23", "103.22.203.0/24", "103.81.228.0/24", "104.16.0.0/12", "104.16.0.0/20", "104.16.112.0/20", "104.16.128.0/20", "104.16.144.0/20", "104.16.16.0/20", "104.16.160.0/20", "104.16.176.0/20", "104.16.192.0/20", "104.16.208.0/20", "104.16.224.0/20", "104.16.240.0/20", "104.16.32.0/20", "104.16.48.0/20", "104.17.0.0/16", "104.18.0.0/16", "104.27.0.0/16", "104.31.0.0/16", "104.23.0.0/16", "104.24.0.0/16", "188.114.96.0/24", "162.159.0.0/16", "162.247.243.0/24", "172.65.0.0/16", "172.67.0.0/16", "198.41.215.0/24", "1.0.0.0/24", "188.114.97.0/24", } def_verizon = []string{ "68.232.35.0/24", "72.21.81.0/24", "194.98.0.0/16", "152.199.0.0/16", "192.229.133.0/24", "192.229.220.0/24", "192.229.221.0/24", "192.229.222.0/24", "192.229.223.0/24", "192.229.233.0/24", "192.229.182.0/24", "193.155.127.0/24", "152.195.0.0/16", } def_leaseweb = []string{ "37.48.82.0/24", "37.48.99.0/24", "46.17.0.0/24", "46.17.3.0/24", "62.212.64.0/24", "81.171.0.0/24", "81.171.1.0/24", "81.171.2.0/24", "81.171.3.0/24", "81.171.4.0/24", "81.171.5.0/24", "81.171.21.0/24", "5.79.91.0/24", "85.17.0.0/16", "95.211.0.0/16", "94.75.236.0/24", "178.162.219.0/24", "178.162.220.0/24", "178.162.221.0/24", "178.162.222.0/24", "178.162.223.0/24", "185.44.23.0/24", "84.16.253.0/24", } defs_hostach = []string{ "185.213.26.0/24", "103.167.150.0/24", "103.173.178.0/24", "103.73.64.0/23", "103.73.66.0/24", "103.73.67.0/24", "134.195.88.0/23", "134.195.90.0/24", "134.195.91.0/24", "153.92.126.0/24", "153.92.127.0/24", "176.126.70.0/24", "176.126.84.0/24", "176.126.85.0/24", "176.126.86.0/24", "185.175.56.0/24", "185.175.57.0/24", "185.175.58.0/24", "185.175.59.0/24", "185.197.30.0/24", } defs_netcup_gmbh = []string{ "185.233.107.0/24", "152.89.104.0/22", "185.158.212.0/22", "185.16.60.0/22", "185.162.248.0/22", "185.163.116.0/22", "185.170.112.0/22", "185.183.156.0/22", "185.194.140.0/22", "185.207.104.0/22", "185.211.220.0/23", "185.211.222.0/23", "185.211.223.0/24", "185.216.176.0/22", "185.228.136.0/22", "185.232.68.0/22", "185.233.104.0/22", "185.243.8.0/22", "185.244.192.0/22", "185.48.228.0/22", } def_ab_stract = []string{ "95.215.19.0/24", "185.193.126.0/23", "195.14.20.0/24", "197.231.220.0/22", "198.167.192.0/19", "45.142.140.0/22", "45.158.116.0/22", "80.78.16.0/20", "95.215.16.0/22", } def_nessus_gmbh = []string{ "146.255.56.0/24", "146.255.56.0/21", "185.176.152.0/24", "185.176.153.0/24", "185.176.154.0/24", "185.176.155.0/24", "185.188.75.0/24", "185.190.49.0/24", "185.190.50.0/24", "185.205.80.0/24", "185.205.81.0/24", "185.205.82.0/24", "185.205.83.0/24", "185.245.228.0/24", "185.245.229.0/24", "185.245.230.0/24", "185.245.231.0/24", } freie_netze_muenchen = []string{ "5.1.66.0/24", "141.98.138.0/24", "185.150.99.0/24", "46.226.127.0/24", } def_smile_gie = []string{"185.194.92.0/22"} def_netactuate = []string{ "45.54.49.0/24", "185.40.232.0/24", "104.225.32.0/24", "104.225.34.0/24", "104.225.35.0/24", "104.225.36.0/24", "104.225.37.0/24", "104.225.38.0/24", "104.225.39.0/24", "104.225.40.0/24", "104.225.41.0/24", "104.225.42.0/24", "104.225.43.0/24", "104.225.45.0/24", "104.225.46.0/24", "104.225.47.0/24", "148.163.192.0/24", "148.163.193.0/24", "148.163.194.0/24", "148.163.195.0/24", "148.163.196.0/24", "148.163.197.0/24", } def_hetzner_online = []string{ "5.9.0.0/16", "46.4.0.0/16", "136.243.0.0/16", "138.201.0.0/16", "176.9.0.0/16", "178.63.0.0/16", "85.10.192.0/18", "88.99.0.0/16", "88.198.0.0/16", "91.107.128.0/17", "94.130.0.0/16", "95.216.0.0/16", "95.217.0.0/16", "116.202.0.0/16", "116.203.0.0/16", "128.140.0.0/17", "136.243.0.0/24", "136.243.0.0/16", "138.201.0.0/24", "138.201.0.0/16", "144.76.0.0/16", "144.76.0.0/16", "148.251.0.0/24", "148.251.0.0/16", "159.69.0.0/24", "159.69.0.0/16", "162.55.0.0/16", "167.233.0.0/24", "167.233.0.0/16", "176.9.0.0/24", "176.9.0.0/16", "178.63.0.0/24", "178.63.0.0/16", "185.12.64.0/22", "185.36.144.0/22", "185.50.120.0/23", "195.201.0.0/16", "78.46.0.0/16", "78.47.0.0/16", "88.99.0.0/16", "88.198.0.0/16", "94.130.0.0/16", "213.239.192.0/24", } def_yandex = []string{ "77.88.0.0/24", "77.88.1.0/24", "77.88.2.0/24", "77.88.3.0/24", "77.88.4.0/24", "77.88.5.0/24", "77.88.6.0/24", "77.88.7.0/24", "77.88.8.0/24", "77.88.9.0/24", "77.88.10.0/24", "77.88.11.0/24", "77.88.12.0/24", "77.88.13.0/24", "77.88.14.0/24", "77.88.15.0/24", "77.88.16.0/24", "77.88.17.0/24", "77.88.18.0/24", "77.88.19.0/24", "77.88.20.0/24", "77.88.21.0/24", "77.88.22.0/24", "77.88.23.0/24", "77.88.24.0/24", "77.88.25.0/24", "77.88.26.0/24", "77.88.27.0/24", "77.88.28.0/24", "77.88.29.0/24", "77.88.30.0/24", "77.88.31.0/24", "77.88.32.0/24", "77.88.33.0/24", "77.88.34.0/24", "77.88.35.0/24", "77.88.36.0/24", "77.88.37.0/24", "77.88.38.0/24", "77.88.39.0/24", "77.88.40.0/24", "77.88.41.0/24", "77.88.42.0/24", "77.88.43.0/24", "77.88.44.0/24", "77.88.45.0/24", "77.88.46.0/24", "77.88.47.0/24", "77.88.48.0/24", "77.88.49.0/24", "77.88.50.0/24", "77.88.51.0/24", "77.88.52.0/24", "77.88.53.0/24", "77.88.54.0/24", "77.88.55.0/24", "77.88.56.0/24", "77.88.57.0/24", "77.88.58.0/24", "77.88.59.0/24", "77.88.60.0/24", "77.88.61.0/24", "77.88.62.0/24", "178.154.131.0/24", "93.158.134.0/24", "213.180.193.0/24", "100.43.64.0/19", "141.8.128.0/18", "178.154.128.0/19", "178.154.131.0/24", "178.154.160.0/19", "185.32.187.0/24", "199.21.96.0/22", "199.36.240.0/22", "213.180.192.0/19", "213.180.199.0/24", "37.140.128.0/18", "37.9.112.0/24", "37.9.64.0/18", "37.9.64.0/24", "37.9.95.0/24", "45.87.132.0/22", "5.255.192.0/18", "5.255.197.0/24", "5.255.255.0/24", "5.45.192.0/18", } def_citic_telecom = []string{"62.128.100.0/24"} def_cogent_communication = []string{"130.117.0.0/16", "102.129.145.0/24"} def_nvidia = []string{"185.136.68.0/24"} def_vmware = []string{"208.91.0.0/24"} def_nutannix = []string{"192.146.155.0/24"} def_xtom = []string{"185.222.222.0/24"} def_constant_company = []string{ "45.63.110.0/24", "207.148.120.0/24", "104.156.236.0/23", "104.156.234.0/23", "104.156.232.0/23", "104.156.228.0/22", "103.113.40.0/22", "144.202.69.0/24", "144.202.69.0/24", "45.76.0.0/16", "136.244.65.0/24", "136.244.97.0/24", "104.156.240.0/21", "104.156.228.0/22", } def_nextdns = []string{ "45.90.28.0/24", "9.9.9.0/24", "149.112.112.0/24", "149.112.149.0/24", "199.249.255.0/24", } def_node4 = []string{ "109.203.101.0/24", "109.203.102.0/24", "109.203.107.0/24", "109.203.118.0/24", "109.203.120.0/24", "109.203.123.0/24", "109.203.124.0/23", "109.203.96.0/24", "109.234.192.0/21", "109.234.200.0/21", "109.75.172.0/24", "148.253.128.0/19", "148.253.139.0/24", } def_nitronet_sp = []string{"79.98.145.0/24"} def_cloud_nextgen = []string{"185.253.154.0/24"} def_datacamp = []string{"138.199.36.0/24"} def_kaspersky = []string{ "185.85.12.0/24", "185.85.14.0/24", "185.85.15.0/24", "77.74.176.0/24", "77.74.177.0/24", "77.74.178.0/23", "77.74.180.0/24", "77.74.181.0/24", "77.74.183.0/24", "82.202.184.0/24", "82.202.185.0/24", "93.159.226.0/24", "93.159.228.0/23", "93.159.230.0/23", } def_eset = []string{ "185.94.156.0/24", "185.94.157.0/24", "185.94.158.0/24", "185.94.159.0/24", "38.90.226.0/24", "38.90.227.0/24", "91.228.164.0/24", "91.228.165.0/24", "91.228.166.0/24", "91.228.167.0/24", } def_dell = []string{ "143.166.28.0/24", "132.237.128.0/23", "132.237.130.0/23", "132.237.16.0/22", "132.237.16.0/23", "132.237.170.0/24", "132.237.171.0/24", "132.237.18.0/23", "132.237.180.0/24", "132.237.181.0/24", "132.237.184.0/24", "143.166.0.0/16", "143.166.200.0/21", "143.166.208.0/21", "148.9.20.0/23", "163.244.0.0/16", "163.244.185.0/24", "163.244.60.0/24", "168.159.218.0/24", "168.159.224.0/24", } def_quantil_network = []string{ "101.79.165.0/24", "101.79.166.0/24", "101.79.167.0/24", "103.75.147.0/24", "110.164.35.0/24", "118.107.170.0/24", "118.107.171.0/24", "118.107.172.0/24", "118.107.173.0/24", "119.31.251.0/24", "163.171.158.0/24", } def_blizzard = []string{ "24.105.29.024", "117.52.6.0/24", "121.254.137.0/24", "121.254.206.0/23", "121.254.218.0/24", "137.221.100.0/22", "137.221.104.0/22", "137.221.108.0/24", "137.221.109.0/24", "137.221.110.0/24", "137.221.64.0/19", "137.221.64.0/24", "137.221.68.0/24", "103.198.32.0/24", "103.198.33.0/24", "110.45.208.0/24", "117.52.26.0/23", } def_linode_lcc = []string{ "172.104.0.0/16", "172.105.0.0/16", "45.79.0.0/16", "104.237.152.0/24", "104.237.153.0/24", "104.237.154.0/24", "104.237.155.0/24", "104.237.156.0/24", "104.237.157.0/24", "104.237.158.0/24", "104.237.159.0/24", "104.200.24.0/24", "104.200.25.0/24", "104.200.26.0/24", "104.200.27.0/24", "45.33.0.0/24", "45.33.1.0/24", "45.56.116.0/24", "45.79.0.0/16", "139.162.0.0/16", "69.164.192.0/24", "96.126.109.0/24", "178.79.180.0/24", "192.46.236.0/24", "192.155.88.0/24", "192.53.175.0/24", "212.71.236.0/24", "213.52.128.0/24", "45.33.2.0/24", "45.33.3.0/24", "45.33.4.0/24", "45.33.5.0/24", "45.33.6.0/24", "45.33.7.0/24", "45.33.8.0/24", "45.33.9.0/24", "45.33.10.0/24", "45.33.11.0/24", "45.33.12.0/24", "45.33.13.0/24", "45.33.14.0/24", "45.33.15.0/24", "45.33.16.0/24", "45.33.17.0/24", "45.33.18.0/24", "45.33.19.0/24", "45.33.20.0/24", "45.33.21.0/24", "45.33.22.0/24", "45.33.23.0/24", "45.33.24.0/24", "45.33.25.0/24", "45.33.26.0/24", "45.33.27.0/24", "45.33.28.0/24", "45.33.29.0/24", "45.33.30.0/24", "45.33.31.0/24", "45.33.32.0/24", "45.33.33.0/24", "45.33.34.0/24", "45.33.35.0/24", "45.33.36.0/24", "45.33.37.0/24", "45.33.38.0/24", "45.33.39.0/24", "45.33.40.0/24", "45.33.41.0/24", "45.33.42.0/24", "45.33.43.0/24", "45.33.44.0/24", "45.33.45.0/24", "45.33.46.0/24", "45.33.47.0/24", "45.33.48.0/24", "45.33.49.0/24", "45.33.50.0/24", "45.33.51.0/24", "45.33.52.0/24", "45.33.53.0/24", "45.33.54.0/24", "45.33.55.0/24", "45.33.56.0/24", "45.33.57.0/24", "45.33.58.0/24", "45.33.59.0/24", "45.33.60.0/24", "45.33.61.0/24", "45.33.62.0/24", "45.33.63.0/24", "45.33.64.0/24", "45.33.65.0/24", "45.33.66.0/24", "45.33.67.0/24", "45.33.68.0/24", "45.33.69.0/24", "45.33.70.0/24", "45.33.71.0/24", "45.33.72.0/24", "45.33.73.0/24", "45.33.74.0/24", "45.33.75.0/24", "45.33.76.0/24", "45.33.77.0/24", "45.33.78.0/24", "45.33.79.0/24", "45.33.80.0/24", "45.33.81.0/24", "45.33.82.0/24", "45.33.83.0/24", "45.33.84.0/24", "45.33.85.0/24", "45.33.86.0/24", "45.33.87.0/24", "45.33.88.0/24", "45.33.89.0/24", "45.33.90.0/24", "45.33.91.0/24", "45.33.92.0/24", "45.33.93.0/24", "45.33.94.0/24", "45.33.95.0/24", "45.33.96.0/24", "45.33.97.0/24", "45.33.98.0/24", "45.33.99.0/24", "45.33.100.0/24", "45.33.101.0/24", "45.33.102.0/24", "45.33.103.0/24", "45.33.104.0/24", "45.33.105.0/24", "45.33.106.0/24", "45.33.107.0/24", "45.33.108.0/24", "45.33.109.0/24", "45.33.110.0/24", "45.33.111.0/24", "45.33.112.0/24", "45.33.113.0/24", "45.33.114.0/24", "45.33.115.0/24", "45.33.116.0/24", "45.33.117.0/24", "45.33.118.0/24", "45.33.119.0/24", "45.33.120.0/24", "45.33.121.0/24", "45.33.122.0/24", "45.33.123.0/24", "45.33.124.0/24", "45.33.125.0/24", "45.33.126.0/24", "45.33.127.0/24", "66.228.61.0/24", } def_daniel_cid = []string{ "185.228.168.0/24", "185.228.169.0/24", "185.228.170.0/24", } def_hurricane_electric = []string{ "103.100.138.0/24", "103.150.253.0/24", "103.176.58.0/24", "103.176.59.0/24", "103.253.24.0/24", "103.253.25.0/24", "103.253.26.0/24", "103.253.27.0/24", "103.6.216.0/22", "103.96.214.0/24", "184.105.148.0/24", "104.194.4.0/24", "104.255.240.0/21", "104.36.120.0/22", "134.195.36.0/24", "134.195.37.0/24", "134.195.38.0/24", } def_exion_network = []string{ "31.3.128.0/23", "31.3.129.0/24", "31.3.130.0/23", "31.3.131.0/24", "31.3.132.0/23", "31.3.134.0/23", "31.3.134.0/24", "31.3.135.0/24", } def_cachenetworks = []string{ "205.234.175.0/24", "103.211.254.0/24", "204.93.142.0/24", "204.93.143.0/24", "204.93.146.0/24", "204.93.150.0/24", "204.93.230.0/24", "204.93.231.0/24", "205.234.175.0/24", "205.234.216.0/24", "216.246.100.0/24", "216.246.104.0/24", "216.246.118.0/24", "216.246.119.0/24", } def_alibaba = []string{"47.253.0.0/16"} def_new_relic = []string{ "162.240.241.0/24", "162.247.241.0/24", "162.247.242.0/24", } def_mci_communication = []string{"68.232.34.0/24"} def_wanagain = []string{"62.244.106.0/24", "62.244.103.0/24"} def_haproxy_technologies = []string{"209.126.36.0/24"} def_alphalink_sasu = []string{"217.147.199.0/24"} def_aptum_technologies = []string{"66.155.71.0/24"} def_shenzhen_tencent = []string{"129.226.0.0/16"} def_communityrack_org = []string{ "185.104.19.0/24", "185.95.216.0/23", "185.95.218.0/24", "91.199.218.0/24", } def_webnx = []string{ "100.42.208.0/20", "100.42.220.0/22", "104.224.14.0/24", "104.237.48.0/20", "104.237.48.0/23", "104.237.55.0/24", "107.182.160.0/20", "107.182.160.0/24", "107.182.162.0/23", "108.171.192.0/19", "108.171.198.0/23", "108.171.202.0/24", "108.171.206.0/24", "108.171.210.0/23", "108.171.210.0/24", "108.171.213.0/24", "108.171.214.0/23", "108.171.216.0/23", "114.31.209.0/24", "136.144.33.0/24", } def_index_education = []string{ "185.173.124.0/22", "195.191.172.0/23", "195.191.172.0/24", "212.114.0.0/20", "212.114.0.0/21", "212.114.7.0/24", "212.114.8.0/21", "46.33.160.0/19", "46.33.160.0/24", "46.33.161.0/24", "46.33.162.0/24", "46.33.163.0/24", "46.33.164.0/24", "46.33.165.0/24", "46.33.166.0/24", "46.33.167.0/24", "46.33.168.0/24", "46.33.169.0/24", "46.33.170.0/24", "46.33.171.0/24", } def_outscale_sasu = []string{ "148.253.97.0/24", "148.253.64.0/18", "148.253.96.0/24", "148.253.97.0/24", "171.33.64.0/18", "185.21.192.0/22", "185.21.194.0/25", "185.21.194.128/25", "185.23.188.0/24", "217.75.160.0/20", "46.231.144.0/21", "5.104.96.0/21", "80.247.0.0/20", } def_serveroid = []string{ "185.22.60.0/22", "176.112.192.0/19", "176.103.133.0/24", "176.103.132.0/24", "176.103.128.0/19", "176.103.130.0/24", } def_andrews_arnold = []string{ "217.169.20.0/24", "178.238.144.0/20", "188.191.132.0/22", "194.4.172.0/22", "194.60.203.0/24", "194.70.3.0/24", } def_cz_nic_zspo = []string{"185.43.135.0/24"} def_mpvs_ltd = []string{"45.153.187.0/24"} def_taiwan_network_information = []string{"101.102.103.0/24", "101.102.101.0/24"} def_switch = []string{ "138.131.0.0/16", "134.21.0.0/16", "131.152.0.0/16", "130.92.0.0/16", "130.82.0.0/16", "130.59.0.0/16", "128.178.0.0/15", "129.129.0.0/16", "129.194.0.0/15", "130.125.0.0/16", "130.223.0.0/16", } def_infrastructure_Group_bv = []string{ "5.2.75.0/24", "103.251.164.0/22", "150.129.8.0/22", "185.255.114.0/24", "185.31.172.0/22", "185.31.173.107/32", "185.31.173.229/32", "185.31.173.23/32", "185.31.173.230/32", "185.31.173.231/32", "185.31.173.233/32", "185.31.173.236/32", "185.31.173.25/32", "185.31.173.253/32", "185.31.173.27/32", "185.31.173.70/32", "185.31.173.93/32", "192.76.150.0/24", "192.76.153.0/24", "192.76.160.0/24", "192.76.163.0/24", } def_planethoster = []string{ "146.19.134.0/24", "146.88.232.0/21", "185.22.108.0/22", "185.22.111.0/24", "185.221.180.0/22", "199.16.128.0/24", "199.16.129.0/24", "199.16.130.0/24", "199.16.131.0/24", "199.188.220.0/24", "199.188.221.0/24", "199.188.222.0/24", "199.188.223.0/24", "199.59.244.0/24", "199.59.245.0/24", "199.59.246.0/24", "199.59.247.0/24", "209.16.158.0/24", "85.236.152.0/21", "85.236.159.0/24", } def_amobee_emeea = []string{ "46.228.164.0/24", "192.208.200.0/22", "46.228.160.0/20", } def_mediamath = []string{ "103.229.204.0/24", "103.229.205.0/24", "103.229.206.0/24", "103.229.207.0/24", "185.29.132.0/24", "185.29.133.0/24", "185.29.134.0/23", "216.200.232.0/24", "216.200.233.0/24", "64.125.96.0/24", "74.121.136.0/24", "74.121.137.0/24", "74.121.139.0/24", "74.121.140.0/24", "74.121.141.0/24", "74.121.142.0/24", "74.121.143.0/24", } def_tata_communications = []string{ "80.231.0.0/16", "195.219.0.0/16", "80.231.0.0/16", "103.16.252.0/22", "103.21.80.0/24", "104.105.224.0/20", "104.105.240.0/20", "104.106.0.0/22", "115.108.48.0/20", "115.112.168.0/23", "116.0.64.0/19", "116.0.70.0/24", "116.0.76.0/24", "116.0.82.0/24", "116.0.93.0/24", "120.29.219.0/24", "121.244.82.0/24", "138.104.226.0/24", "138.104.227.0/24", "138.104.233.0/24", "138.104.236.0/24", "157.189.0.0/16", "116.0.82.0/24", "116.0.93.0/24", } def_hosthatch = []string{ "45.91.92.0/24", "103.167.150.0/24", "103.167.151.0/24", "103.173.178.0/24", "103.73.64.0/23", "103.73.66.0/24", "103.73.67.0/24", "134.195.88.0/23", "134.195.90.0/24", "134.195.91.0/24", "153.92.126.0/24", "153.92.127.0/24", "176.126.70.0/24", "176.126.84.0/24", "176.126.85.0/24", "176.126.86.0/24", "185.175.56.0/24", "185.175.57.0/24", "185.175.58.0/24", "185.175.59.0/24", "185.197.30.0/24", } def_github = []string{ "140.82.112.0/20", "140.82.112.0/24", "140.82.113.0/24", "140.82.114.0/24", "140.82.115.0/24", "140.82.116.0/24", "140.82.117.0/24", "140.82.120.0/23", "140.82.120.0/24", "140.82.121.0/24", "140.82.122.0/24", "140.82.123.0/24", "140.82.124.0/24", "140.82.125.0/24", "140.82.126.0/24", "143.55.64.0/20", "143.55.64.0/24", "143.55.65.0/24", "192.30.252.0/22", "192.30.252.0/23", } def_freewheel = []string{"154.54.250.0/24"} def_online_sas = []string{"51.158.0.0/16", "51.15.0.0/16", "51.159.0.0/16"} def_criteo_sa = []string{ "178.250.2.0/24", "178.250.3.0/24", "178.250.2.0/24", "178.250.4.0/24", "178.250.5.0/24", "178.250.6.0/24", "178.250.7.0/24", "178.250.8.0/24", } def_canonical_group = []string{"91.189.92.0/24"} def_iweb_technologies = []string{ "64.15.159.0/24", "107.161.64.0/20", "108.163.128.0/18", "174.141.228.0/22", "174.141.232.0/23", "174.142.0.0/16", "184.107.0.0/16", "192.175.96.0/19", "192.196.223.0/24", "198.50.96.0/19", "198.72.96.0/19", "203.167.7.0/24", "204.19.134.0/24", } def_level3_communication = []string{ "195.122.177.0/24", "62.67.0.0/16", "8.250.157.0/24", "8.253.93.0/24", "8.241.0.0/16", "8.242.0.0/16", "8.243.0.0/16", "8.244.0.0/16", "8.245.0.0/16", "8.246.0.0/16", "8.247.0.0/16", "8.248.0.0/16", "8.249.0.0/16", "8.250.0.0/16", "8.251.0.0/16", "8.252.0.0/16", "8.253.93.0/24", "8.254.93.0/24", "8.255.93.0/24", "212.162.49.0/24", "212.73.221.0/24", "176.116.117.0/24", "195.122.177.0/24", "195.122.169.0/24", } def_telia_company = []string{ "89.233.43.0/24", "193.45.0.0/16", "62.115.0.0/16", "80.239.197.0/24", "80.239.169.0/24", "80.239.170.0/24", "80.239.174.0/24", "213.155.156.0/24", } def_orange = []string{ "197.29.0.0/16", "217.108.0.0/16", "193.251.0.0/16", "193.252.0.0/16", "194.2.0.0/16", "194.250.0.0/16", "195.25.0.0/16", "94.124.132.0/24", "94.124.134.0/24", "80.10.186.0/24", "145.242.11.0/24", "185.63.192.0/24", "212.234.0.0/16", "217.109.0.0/16", "62.161.0.0/16", "81.252.0.0/16", "81.255.44.0/24", "81.52.0.0/16", "90.82.0.0/16", "90.83.0.0/16", "90.84.0.0/16", "90.85.0.0/16", "90.86.0.0/16", "90.87.0.0/16", "90.88.0.0/16", "90.89.0.0/16", "90.90.0.0/16", "90.91.0.0/16", "90.92.0.0/16", "90.93.0.0/16", "90.94.0.0/16", "90.95.0.0/16", "90.96.0.0/16", "90.97.0.0/16", "90.98.0.0/16", "90.99.0.0/16", "90.100.0.0/16", "90.101.0.0/16", "90.102.0.0/16", "90.103.0.0/16", "90.104.0.0/16", "90.105.0.0/16", "90.106.0.0/16", "90.107.0.0/16", "90.108.0.0/16", "90.109.0.0/16", "90.110.0.0/16", "90.111.0.0/16", "90.112.0.0/16", "90.113.0.0/16", "90.114.0.0/16", "90.115.0.0/16", "90.116.0.0/16", "90.117.0.0/16", "90.118.0.0/16", "90.119.0.0/16", "90.120.0.0/16", "90.121.0.0/16", "90.122.0.0/16", "102.219.164.0/22", "160.156.0.0/14", "160.156.0.0/15", "160.156.0.0/16", "160.156.0.0/17", "160.156.128.0/17", "160.157.0.0/16", "160.157.0.0/17", "160.157.128.0/17", "160.158.0.0/15", "160.158.0.0/16", "160.158.0.0/17", "160.158.128.0/17", "160.159.0.0/16", "160.159.0.0/17", "160.159.128.0/17", "165.50.0.0/15", "165.50.0.0/16", "165.50.0.0/17", "165.50.0.0/18", } def_thomas_steen_rasmussen = []string{"91.239.100.0/24"} def_ntt = []string{"81.19.104.0/24"} def_box_com = []string{ "185.235.236.0/24", "103.116.4.0/24", "107.152.16.0/20", "107.152.18.0/24", "107.152.24.0/23", "107.152.24.0/24", "107.152.25.0/24", "107.152.26.0/23", "107.152.26.0/24", "107.152.27.0/24", "107.152.29.0/24", "185.235.236.0/22", "185.235.236.0/24", "209.249.140.0/24", "67.218.117.0/24", "74.112.187.0/24", } def_renater = []string{ "195.83.0.0/16", "193.54.136.0/24", "194.199.12.0/24", "194.199.74.0/24", "194.199.95.0/24", "194.199.97.0/24", "194.199.98.0/24", "194.254.97.0/24", "194.57.170.0/24", "195.83.190.0/24", "195.83.214.0/24", "195.83.254.0/24", "195.83.255.0/24", } def_etf1 = []string{ "193.169.66.0/24", "185.22.116.0/22", "193.169.66.0/23", } def_g_core_labs = []string{ "103.22.194.0/24", "103.22.195.0/24", "146.185.220.0/23", "146.185.220.0/24", "146.185.248.0/24", "150.107.125.0/24", "150.107.126.0/24", "162.213.60.0/24", "162.213.61.0/24", "162.213.62.0/24", "162.213.63.0/24", "162.216.228.0/22", "162.216.228.0/24", "162.216.229.0/24", "162.216.230.0/24", "162.216.231.0/24", "92.38.169.0/24", } def_total_uptime = []string{ "208.95.112.0/24", "104.153.196.0/24", "104.153.197.0/24", "104.153.198.0/24", "104.153.199.0/24", "162.252.212.0/24", "162.252.213.0/24", "162.252.214.0/24", "162.252.214.70/32", "162.252.215.0/24", "172.98.36.0/24", "172.98.37.0/24", "172.98.38.0/24", "172.98.39.0/24", "199.38.148.0/24", "199.38.148.160/28", "199.38.148.32/27", "199.38.148.64/27", "199.38.148.96/27", "206.166.193.0/24", "208.95.112.0/24", } ) func InitCategorization(debug bool) { //log.SetFlags(log.LstdFlags | log.Lshortfile) //if _slog, err := syslog.New(syslog.LOG_DEBUG, "go-shield-connector-categorization"); err == nil { // log.SetOutput(_slog) //} SelfKSRNCategoryWhite = internal.GetSocketInfoInt("SelfKSRNCategoryWhite") SelfCacheTime = internal.GetSocketInfoInt("TheShieldCacheTime") SelfDns1 = internal.GetSocketInfoString("Go_Shield_Server_Dns1") SelfDns2 = internal.GetSocketInfoString("Go_Shield_Server_Dns2") SelfKsrnDisableGoogleAdServices = internal.GetSocketInfoBool("SelfKsrnDisableGoogleAdServices") if SelfDns1 != "" { SelfDns1 = strings.TrimSpace(SelfDns1) } if SelfDns2 != "" { SelfDns2 = strings.TrimSpace(SelfDns2) } if SelfCacheTime == 0 { SelfCacheTime = 86400 } isDebugCategorization = debug if isDebugCategorization { log.Printf("Loading databases") } reloadDBS() } func reloadDBS() { SelfTrackersDst = readListFromPath("/usr/share/artica-postfix/ressources/databases/trackers.txt") SelfWhitelistDst = readListFromPath("/etc/squid3/acls_whitelist.dstdomain.conf") SelfWhitelistDstrx = readListFromPath("/etc/squid3/acls_whitelist.dstdom_regex.conf") SelfWhitelistSrc = readListFromPath("/etc/squid3/acls_whitelist.src.conf") SelfWhitelistArp = readListFromPath("/etc/squid3/acls_whitelist.arp.conf") SelfSrnWhite = readListFromPath("/etc/squid3/acl_dstdomain_tempwhite.conf") SelfAdvertBase = readListFromPath("/usr/share/artica-postfix/ressources/databases/advertising.txt") SelfBlacklistDst = readListFromPath("/etc/squid3/DomainsBlackLists.acl") } func readListFromPath(path string) []string { var list []string if isDebugCategorization { log.Printf("Reading %s list", path) } f, err := os.Open(path) if err != nil { if isDebugCategorization { log.Printf("error reading %s %s: ", path, err) } return list } defer f.Close() scanner := bufio.NewScanner(f) for scanner.Scan() { list = append(list, scanner.Text()) } if err := scanner.Err(); err != nil { if isDebugCategorization { log.Printf("error scanning %s %s: ", path, err) } return list } return list } func GetCategories(w string) (int, string) { start := time.Now() if isDebugCategorization { log.Printf("searching categorie for %s", w) } _catID := 0 _catName := "Unknown" if strings.HasSuffix(w, ".") { re := regexp.MustCompile("^(.+?)\\.$") matches := re.MatchString(w) if matches { rs := re.FindStringSubmatch(w) w = rs[1] } } matches, _ := regexp.MatchString("^[0-9]+\\.[0-9]+$", w) if matches { _catID = 0 _catName = CategoryIntToString(_catID) return _catID, _catName } if strings.Index(w, ".") < 1 { _catID = 82 _catName = CategoryIntToString(_catID) return _catID, _catName } if strings.Index(w, "*") > 0 { _catID = 82 _catName = CategoryIntToString(_catID) return _catID, _catName } if w == "192.in-addr.arpa" { _catID = 82 _catName = CategoryIntToString(_catID) return _catID, _catName } if w == "10.in-addr.arpa" { _catID = 82 _catName = CategoryIntToString(_catID) return _catID, _catName } if w == "172.in-addr.arpa" { _catID = 82 _catName = CategoryIntToString(_catID) return _catID, _catName } if w == "176.in-addr.arpa" { _catID = 82 _catName = CategoryIntToString(_catID) return _catID, _catName } if IsArpa(w) { w = SelfStripaddr if value, _ := internal.Fetch(w); value != nil { lparts := strings.Split(*value, ":") _catID, _ = strconv.Atoi(string(lparts[0])) _catName = string(lparts[1]) if len(_catName) == 0 { if isDebugCategorization { log.Printf("Gating Categorie Name from category_int_to_string() -> IsArpa") } _catName = CategoryIntToString(_catID) } if isDebugCategorization { log.Printf("%s founded in InMemory Cache with category %s (%d) - %s -> IsArpa", w, _catName, _catID, internal.TimeTrack(start)) } return _catID, _catName } _catID = get_category_by_ip(w) _catName = CategoryIntToString(_catID) if _catID > 0 { internal.Append(w, strconv.Itoa(_catID)+":"+_catName) } return _catID, _catName } //1º Check on InMememory Cache if isDebugCategorization { log.Printf("Checking InMemory Cache") } if value, _ := internal.Fetch(w); value != nil { lparts := strings.Split(*value, ":") _catID, _ = strconv.Atoi(lparts[0]) _catName = lparts[1] if len(_catName) == 0 { if isDebugCategorization { log.Printf("Gating Categorie Name from category_int_to_string()") } _catName = CategoryIntToString(_catID) } if isDebugCategorization { log.Printf("%s founded in InMemory Cache with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } return _catID, _catName } //2º Check on Personal Categories if _catID == 0 { if isDebugCategorization { log.Printf("Checking Personal Categories") } if _, err := os.Stat("/etc/squid3/compiled-categorys.db"); errors.Is(err, os.ErrNotExist) { if isDebugCategorization { log.Printf("/etc/squid3/compiled-categorys.db not exit: ", err) } _catID = 0 _catName = "Unknown" } dat, err := os.ReadFile("/etc/squid3/compiled-categorys.db") if err != nil { if isDebugCategorization { log.Printf("error reading /etc/squid3/compiled-categorys.db: ", err) } _catID = 0 _catName = "Unknown" } out, err := gophp.Unserialize([]byte(dat)) if err != nil { if isDebugCategorization { log.Printf("error Unserialize /etc/squid3/compiled-categorys.db: ", err) } _catID = 0 _catName = "Unknown" } if mout, ok := out.(map[string]interface{}); ok { if category, ok := mout[w].(map[string]interface{}); ok { cat_name := strings.Replace(category["category_name"].(string), " ", "_", -1) cat_name = strings.Replace(cat_name, "/", "_", -1) _catID, _ = strconv.Atoi(category["category_id"].(string)) _catName = cat_name //internal.AppendWithTTL(w, _catID+":"+_catName,1,24*time.Hour) //internal.Append(w, string(_catID)+":"+_catName, cache.NoExpiration) internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in Personal Categories with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } return _catID, _catName //return category["category_id"],category["category_name"] } _catID = 0 _catName = "Unknown" } } // 3ª Check IP Address if _catID == 0 { if checkIPAddressType(w) { id := get_category_by_ip(w) if id > 1 { _catID = id _catName = CategoryIntToString(_catID) internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in get_category_by_ip with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } } else { if isDebugCategorization { log.Printf("%s don't return any categorie", w) } _catID = 0 _catName = "Unknown" } } else { if isDebugCategorization { log.Printf("%s is not a valid IP", w) } _catID = 0 _catName = "Unknown" } } //4º Check on MemCached or Redis goShieldServerUseLocalCategories := internal.GetSocketInfoInt("TheShieldsUseLocalCats") if goShieldServerUseLocalCategories == 1 { if _catID == 0 { if isDebugCategorization { log.Printf("Checking Redis") } enableCategoriesCache := internal.GetSocketInfoInt("enableCategoriesCache") categoriesCacheRemote := internal.GetSocketInfoInt("categoriesCacheRemote") redis_socket := "/var/run/categories-cache/categories-cache.sock" if categoriesCacheRemote == 1 { enableCategoriesCache = 1 } if enableCategoriesCache == 1 { categoriesCacheRemoteAddr := strings.TrimSpace(internal.GetSocketInfoString("categoriesCacheRemoteAddr")) categoriesCacheRemotePort := internal.GetSocketInfoInt("categoriesCacheRemotePort") if categoriesCacheRemotePort == 0 { categoriesCacheRemotePort = 2214 } if categoriesCacheRemote == 1 { rdb := redis.NewClient(&redis.Options{ Addr: categoriesCacheRemoteAddr + ":" + strconv.Itoa(categoriesCacheRemotePort), Password: "", // no password set DB: 0, // use default DB }) h := md5.New() io.WriteString(h, w) hasher := hex.EncodeToString(h.Sum(nil)) val, err := rdb.Get(ctx, hasher).Result() if err == redis.Nil { log.Printf("%s (%s) does not exist in Remote Redis server: ", w, hasher) } else if err != nil { if isDebugCategorization { log.Printf("Error getting data from Remote Redis server: ", err) } } else { _catID, _ = strconv.Atoi(val) _catName = CategoryIntToString(_catID) internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in Remote Redis server with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } return _catID, _catName } } else { rdb := redis.NewClient(&redis.Options{ Network: "unix", Addr: redis_socket, Password: "", DB: 0, }) h := md5.New() io.WriteString(h, w) hasher := hex.EncodeToString(h.Sum(nil)) val, err := rdb.Get(ctx, hasher).Result() if err == redis.Nil { log.Printf("%s (%s) does not exist in Local Redis server: ", w, hasher) } else if err != nil { if isDebugCategorization { log.Printf("Error getting dat from Local Redis server: ", err) } } else { _catID, _ = strconv.Atoi(val) _catName = CategoryIntToString(_catID) internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in Local Redis server with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } return _catID, _catName } } } } } //5º Check on Array //5.1ª Custom DB if _catID == 0 { if isDebugCategorization { log.Printf("Checking Inside Custom DB") } f, err := os.Open("/usr/share/artica-postfix/ressources/databases/categories.txt") if err != nil { if isDebugCategorization { log.Printf("error reading /usr/share/artica-postfix/ressources/databases/categories.txt: ", err) } _catID = 0 _catName = "Unknown" } defer f.Close() scanner := bufio.NewScanner(f) for scanner.Scan() { data := strings.Split(scanner.Text(), "/") if data[0] == "regex" { match, _ := regexp.MatchString(``+data[1]+``, w) if match { _catID, _ = strconv.Atoi(data[2]) _catName = CategoryIntToString(_catID) internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in Custom DB (REGEX) with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } break return _catID, _catName } } else { if data[1] == w { _catID, _ = strconv.Atoi(data[2]) _catName = CategoryIntToString(_catID) internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in Custom DB (FIXED) with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } break return _catID, _catName } } } if err := scanner.Err(); err != nil { if isDebugCategorization { log.Printf("error scanning /usr/share/artica-postfix/ressources/databases/categories.txt: ", err) } _catID = 0 _catName = "Unknown" } } //5.2ª Tracker DB if _catID == 0 { if isDebugCategorization { log.Printf("Checking Inside Trackers DB") } trackerFound := false //Try Cache for _, val := range SelfTrackersDst { // Loop if val == w { _catID = 143 _catName = "Trackers" trackerFound = true internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in Trackers Cache with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } break return _catID, _catName } } if !trackerFound { //Try File f, err := os.Open("/usr/share/artica-postfix/ressources/databases/trackers.txt") if err != nil { if isDebugCategorization { log.Printf("error reading /usr/share/artica-postfix/ressources/databases/trackers.txt: ", err) } _catID = 0 _catName = "Unknown" } defer f.Close() scanner := bufio.NewScanner(f) for scanner.Scan() { if scanner.Text() == w { _catID = 143 _catName = "Trackers" internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in Trackers DB with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } break return _catID, _catName } } if err := scanner.Err(); err != nil { if isDebugCategorization { log.Printf("error scanning /usr/share/artica-postfix/ressources/databases/trackers.txt: ", err) } _catID = 0 _catName = "Unknown" } } } //5.3ª Advertising DB if _catID == 0 { if isDebugCategorization { log.Printf("Checking Inside Advertising DB") } advertisingFound := false //Try Cache for _, val := range SelfAdvertBase { // Loop if val == w { _catID = 5 _catName = "Advertising" advertisingFound = true internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in Advertising Cache with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } break return _catID, _catName } } if !advertisingFound { //Try File f, err := os.Open("/usr/share/artica-postfix/ressources/databases/advertising.txt") if err != nil { if isDebugCategorization { log.Printf("error reading /usr/share/artica-postfix/ressources/databases/advertising.txt: ", err) } _catID = 0 _catName = "Unknown" } defer f.Close() scanner := bufio.NewScanner(f) for scanner.Scan() { if scanner.Text() == w { _catID = 5 _catName = "Advertising" internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in Advertising DB with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } break return _catID, _catName } } if err := scanner.Err(); err != nil { if isDebugCategorization { log.Printf("error scanning /usr/share/artica-postfix/ressources/databases/advertising.txt: ", err) } _catID = 0 _catName = "Unknown" } } } //6º Check on DNS Cloud Servers if _catID == 0 { if isDebugCategorization { log.Printf("Artica License is %t", internal.GetArticaLicense()) } if internal.GetArticaLicense() { if isDebugCategorization { log.Printf("Checking DNS Cloud Servers") } //TODO Change DNS System resolvers := []string{ SelfDns1, SelfDns2, } url := strings.TrimSuffix(w, "\n") domains := []string{ url + ".filter.artica.center", } client := resolvermt.New(resolvers, 3, 1000, 50) defer client.Close() results := client.Resolve(domains, resolvermt.TypeTXT) for _, record := range results { s := strings.Split(record.Answer, ":") cat_name := strings.Replace(s[01], " ", "_", -1) cat_name = strings.Replace(cat_name, "/", "_", -1) _catID, _ = strconv.Atoi(s[0]) _catName = cat_name internal.Append(w, strconv.Itoa(_catID)+":"+_catName) if isDebugCategorization { log.Printf("%s founded in DNS Cloud Servers with category %s (%d) - %s", w, _catName, _catID, internal.TimeTrack(start)) } return _catID, _catName } } } return _catID, _catName } func IsArpa(sitename string) bool { re := regexp.MustCompile("^([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.([0-9]+)\\.in-addr\\.arpa$") matches := re.MatchString(sitename) if matches { rs := re.FindStringSubmatch(sitename) SelfStripaddr = fmt.Sprintf("%s.%s.%s.%s", rs[4], rs[3], rs[2], rs[1]) return true } return false } func AdminWhitelist(pattern string, gethit bool) bool { pattern = strings.ToLower(pattern) pattern = strings.TrimSpace(pattern) if len(pattern) < 3 { return true } skey := fmt.Sprint("isWhite:%s", pattern) if _, ok := SelfLocalWhiteBlack[skey]; ok { return SelfLocalWhiteBlack[skey] } //TODO confirm get_cached func from python if val, _ := internal.Fetch(skey); val != nil { SelfLocalWhiteBlack[skey] = true return true } if gethit { if val, _ := internal.Fetch(skey); val != nil { SelfLocalWhiteBlack[skey] = true internal.Append(skey, "1") return true } } if SelfKSRNCategoryWhite > 0 { catID, _ := GetCategories(pattern) if catID == SelfKSRNCategoryWhite { return true } } if len(SelfWhitelistDst) == 0 { if parseWhistelistDstrx(pattern) { internal.Append(skey, "1") SelfLocalWhiteBlack[skey] = true return true } } patternPoint := fmt.Sprintf(".%s", pattern) sort.Strings(SelfWhitelistDst) i := sort.Search(len(SelfWhitelistDst), func(i int) bool { return SelfWhitelistDst[i] >= patternPoint }) if i < len(SelfWhitelistDst) && SelfWhitelistDst[i] == patternPoint { internal.Append(skey, "1") SelfLocalWhiteBlack[skey] = true return true } sort.Strings(SelfWhitelistDst) x := sort.Search(len(SelfWhitelistDst), func(x int) bool { return SelfWhitelistDst[x] >= pattern }) if x < len(SelfWhitelistDst) && SelfWhitelistDst[x] == pattern { internal.Append(skey, "1") SelfLocalWhiteBlack[skey] = true return true } for _, srcdom := range SelfWhitelistDst { srcdom = domainToRegex(srcdom) if len(srcdom) < 3 { continue } match, _ := regexp.MatchString(fmt.Sprintf("%s$", srcdom), pattern) if match { internal.Append(skey, "1") SelfLocalWhiteBlack[skey] = true return true } } if parseWhistelistDstrx(pattern) { internal.Append(skey, "1") SelfLocalWhiteBlack[skey] = true return true } SelfLocalWhiteBlack[skey] = false if len(SelfLocalWhiteBlack) > 2500 { SelfLocalWhiteBlack = map[string]bool{} } return false } func AdminBlacklist(pattern string, gethit bool) bool { pattern = strings.ToLower(pattern) pattern = strings.TrimSpace(pattern) if len(pattern) < 3 { return true } skey := fmt.Sprint("isBlack:%s", pattern) if _, ok := SelfLocalWhiteBlack[skey]; ok { return SelfLocalWhiteBlack[skey] } if val, _ := internal.Fetch(skey); val != nil { SelfLocalWhiteBlack[skey] = true return true } if gethit { if val, _ := internal.Fetch(skey); val != nil { SelfLocalWhiteBlack[skey] = true internal.Append(skey, "1") return true } } if len(SelfBlacklistDst) == 0 { return false } patternPoint := fmt.Sprintf(".%s", pattern) sort.Strings(SelfBlacklistDst) i := sort.Search(len(SelfBlacklistDst), func(i int) bool { return SelfBlacklistDst[i] >= patternPoint }) if i < len(SelfBlacklistDst) && SelfBlacklistDst[i] == patternPoint { internal.Append(skey, "1") SelfLocalWhiteBlack[skey] = true return true } for _, srcdom := range SelfBlacklistDst { srcdom = domainToRegex(srcdom) if len(srcdom) < 3 { continue } match, _ := regexp.MatchString(fmt.Sprintf("%s$", srcdom), pattern) if match { internal.Append(skey, "1") SelfLocalWhiteBlack[skey] = true return true } } SelfLocalWhiteBlack[skey] = false if len(SelfLocalWhiteBlack) > 2500 { SelfLocalWhiteBlack = map[string]bool{} } return false } func AdminWhitelistMac(mac string) bool { SelfMac = mac SelfMac = strings.TrimSpace(SelfMac) if len(SelfMac) < 3 { return false } if len(SelfWhitelistArp) == 0 { return false } sort.Strings(SelfWhitelistArp) i := sort.Search(len(SelfWhitelistArp), func(i int) bool { return SelfWhitelistArp[i] >= SelfMac }) if i < len(SelfWhitelistArp) && SelfWhitelistArp[i] == SelfMac { return true } return false } func AdminWhitelistSrc(pattern string) bool { if len(SelfWhitelistSrc) == 0 { return false } pattern = strings.TrimSpace(pattern) if len(pattern) < 3 { return false } skey := fmt.Sprintf("WHITEDOM:%s", pattern) //if val, _ := internal.Fetch(skey); val != nil { // return true //} if _, err := internal.Get(skey); err == nil { return true } sort.Strings(SelfWhitelistSrc) i := sort.Search(len(SelfWhitelistSrc), func(i int) bool { return SelfWhitelistSrc[i] >= pattern }) if i < len(SelfWhitelistSrc) && SelfWhitelistSrc[i] == pattern { return true } for _, cdir := range SelfWhitelistSrc { cdir = strings.TrimSpace(cdir) if len(cdir) < 3 { continue } network, err := netip.ParsePrefix(cdir) if err != nil { panic(err) } ip, err := netip.ParseAddr(pattern) if err != nil { panic(err) } if network.Contains(ip) { return true } } return false } func domainToRegex(srcdomain string) string { srcdomain = strings.TrimSpace(srcdomain) matches := []string{".*", "(", ")", "[", "]", ".+", "?", "\\", "|"} sort.Strings(matches) i := sort.Search(len(matches), func(i int) bool { return matches[i] >= srcdomain }) if i < len(matches) && matches[i] == srcdomain { return srcdomain } if len(srcdomain) < 3 { return "" } srcdomain = strings.TrimLeft("^", srcdomain) srcdomain = strings.TrimLeft(".", srcdomain) srcdomain = strings.ReplaceAll(srcdomain, ".", "\\.") srcdomain = strings.ReplaceAll(srcdomain, ";", ".") srcdomain = strings.ReplaceAll(srcdomain, "*", ".*?") return fmt.Sprintf("%s$", srcdomain) } func parseWhistelistDstrx(pattern string) bool { if len(SelfWhitelistDstrx) == 0 { return false } pattern = strings.TrimSpace(pattern) if len(pattern) < 3 { return false } pattern = strings.ToLower(pattern) for _, srcdom := range SelfWhitelistDst { srcdom = strings.TrimSpace(srcdom) if len(srcdom) < 3 { continue } match, _ := regexp.MatchString(srcdom, pattern) if match { return true } } return false } func CategoryIntToString(category_int int) string { translate_catz := map[int]string{} if category_int == 0 { if isDebugCategorization { log.Printf("category_int is 0 func category_int_to_string -> if category_int == nil") } return "Unknown" } translate_catz[0] = "Unknown" translate_catz[1] = "Facebook" translate_catz[2] = "Microsoft" translate_catz[3] = "Society" translate_catz[5] = "Advertising" translate_catz[6] = "Phishtank" translate_catz[7] = "Ransomwares" translate_catz[8] = "Shopping" translate_catz[9] = "Abortion" translate_catz[10] = "Agressive" translate_catz[11] = "Alcohol" translate_catz[12] = "Animals" translate_catz[13] = "Associations" translate_catz[14] = "Astrology" translate_catz[15] = "Audio-video" translate_catz[16] = "Youtube" translate_catz[17] = "Google" translate_catz[18] = "Apple" translate_catz[19] = "Amazonaws" translate_catz[20] = "Akamai" translate_catz[21] = "Yahoo" translate_catz[22] = "Skype" translate_catz[23] = "Citrix" translate_catz[24] = "Bikes" translate_catz[25] = "Boats" translate_catz[26] = "Carpool" translate_catz[27] = "Cars" translate_catz[28] = "Planes" translate_catz[29] = "Bicycles" translate_catz[30] = "Blogs" translate_catz[31] = "Books" translate_catz[32] = "Browsers plugins" translate_catz[33] = "Celebrities" translate_catz[34] = "Chat" translate_catz[35] = "Children" translate_catz[36] = "Cleaning" translate_catz[37] = "Clothing" translate_catz[38] = "Converters" translate_catz[39] = "Cosmetics" translate_catz[40] = "Culture" translate_catz[41] = "Dangerous materials" translate_catz[42] = "Dating" translate_catz[43] = "Dictionaries" translate_catz[44] = "Downloads" translate_catz[45] = "Drugs" translate_catz[46] = "Dynamic DHCP ISP" translate_catz[47] = "Electrical appliances" translate_catz[48] = "Electronic house" translate_catz[49] = "Filehosting" translate_catz[50] = "Banking" translate_catz[51] = "Insurances" translate_catz[52] = "Moneylending" translate_catz[53] = "Finance/other" translate_catz[54] = "Realestate" translate_catz[55] = "Financial" translate_catz[56] = "Forums" translate_catz[57] = "Gambling" translate_catz[58] = "Games" translate_catz[59] = "Genealogy" translate_catz[60] = "Gifts" translate_catz[62] = "Governments" translate_catz[63] = "Green" translate_catz[64] = "Hacking" translate_catz[65] = "Handicap" translate_catz[66] = "Health" translate_catz[67] = "Arts" translate_catz[68] = "Cooking" translate_catz[69] = "Hobby Other" translate_catz[70] = "Pets" translate_catz[71] = "Paytosurf" translate_catz[72] = "Terrorism" translate_catz[73] = "Fishing" translate_catz[74] = "Hospitals" translate_catz[75] = "Houseads" translate_catz[76] = "Housing accessories" translate_catz[77] = "Housing doityourself" translate_catz[78] = "Housing builders" translate_catz[79] = "Humanitarian" translate_catz[80] = "Images hosting" translate_catz[81] = "Industry" translate_catz[82] = "Internal" translate_catz[83] = "Internet Providers" translate_catz[85] = "Jobsearch" translate_catz[86] = "Jobtraining" translate_catz[87] = "Justice" translate_catz[88] = "Learning" translate_catz[89] = "Global White List" translate_catz[90] = "Luxury" translate_catz[91] = "Mailing" translate_catz[92] = "Malwares" translate_catz[93] = "Mangas" translate_catz[94] = "Maps" translate_catz[95] = "Marketingware" translate_catz[96] = "Medical" translate_catz[97] = "Mixed adult" translate_catz[98] = "Smartphones" translate_catz[99] = "Models" translate_catz[100] = "Movie and Streaming" translate_catz[101] = "Music" translate_catz[102] = "Nature" translate_catz[103] = "News and press" translate_catz[104] = "Passwords" translate_catz[105] = "Phishing" translate_catz[106] = "Photo" translate_catz[107] = "Pictures libraries" translate_catz[108] = "Politic" translate_catz[109] = "Porn" translate_catz[111] = "Proxies" translate_catz[112] = "Reaffected" translate_catz[113] = "Humor" translate_catz[114] = "Nightout" translate_catz[115] = "Schools Educational" translate_catz[116] = "Sports" translate_catz[117] = "Get Married" translate_catz[118] = "Police" translate_catz[119] = "Travel" translate_catz[120] = "Wellness" translate_catz[121] = "Redirector" translate_catz[122] = "Religion" translate_catz[123] = "Remote-control" translate_catz[124] = "Sciences" translate_catz[125] = "Astronomy" translate_catz[126] = "Science computing" translate_catz[127] = "Weather" translate_catz[128] = "Chemistry" translate_catz[129] = "Searchengines" translate_catz[130] = "Sect" translate_catz[131] = "Sexual Education" translate_catz[132] = "Lingerie (sex)" translate_catz[133] = "Smallads" translate_catz[134] = "Social Networks" translate_catz[135] = "Spywares" translate_catz[136] = "SSL certificates" translate_catz[137] = "Stockexchange" translate_catz[139] = "Redirector" translate_catz[140] = "Suspicious" translate_catz[141] = "Teens" translate_catz[142] = "Tobacco" translate_catz[143] = "Trackers" translate_catz[144] = "Translators" translate_catz[145] = "Transport" translate_catz[146] = "Cheater" translate_catz[147] = "Updatesites" translate_catz[148] = "Violence" translate_catz[149] = "Warez" translate_catz[150] = "Weapons" translate_catz[151] = "Web applications" translate_catz[152] = "Webmails" translate_catz[153] = "Web phones" translate_catz[154] = "Web plugins" translate_catz[155] = "Web radio" translate_catz[156] = "Web TV" translate_catz[157] = "Wine" translate_catz[158] = "Womanbrand" translate_catz[159] = "Horses" translate_catz[160] = "Meetings" translate_catz[161] = "Tattooing" translate_catz[163] = "Literature" translate_catz[166] = "Advertising" translate_catz[167] = "Porn" translate_catz[168] = "Agressive" translate_catz[169] = "Arjel" translate_catz[170] = "Religion" translate_catz[171] = "Astrology" translate_catz[172] = "Audio-video" translate_catz[173] = "Banking" translate_catz[174] = "Bitcoin" translate_catz[175] = "Blogs" translate_catz[176] = "Celebrities" translate_catz[177] = "Chat" translate_catz[178] = "Children" translate_catz[179] = "Cleaning" translate_catz[180] = "Cooking" translate_catz[181] = "Cryptojacking" translate_catz[182] = "Dangerous materials" translate_catz[183] = "Dating" translate_catz[184] = "D-DOS" translate_catz[185] = "Dialers" translate_catz[186] = "Downloads" translate_catz[187] = "Drugs" translate_catz[188] = "Schools Educational" translate_catz[189] = "filehosting" translate_catz[190] = "Financial" translate_catz[191] = "Forums" translate_catz[192] = "Gambling" translate_catz[193] = "Games" translate_catz[194] = "Proxies" translate_catz[195] = "Hacking" translate_catz[196] = "Jobsearch" translate_catz[197] = "Sex Lingerie" translate_catz[198] = "White list" translate_catz[199] = "Educational White list" translate_catz[200] = "Malwares" translate_catz[201] = "Manga" translate_catz[202] = "Marketingware" translate_catz[203] = "Mixed Adult" translate_catz[204] = "Smartphones" translate_catz[205] = "Phishing" translate_catz[207] = "Press" translate_catz[208] = "Redirector" translate_catz[209] = "Advertising" translate_catz[210] = "Radio" translate_catz[211] = "Reaffected" translate_catz[212] = "Redirector" translate_catz[213] = "Remote-control" translate_catz[214] = "Sect" translate_catz[215] = "Sexual Education" translate_catz[216] = "Shopping" translate_catz[217] = "Shorteners" translate_catz[218] = "Social Networks" translate_catz[219] = "Special" translate_catz[220] = "Sports" translate_catz[221] = "Redirector" translate_catz[222] = "Redirector" translate_catz[223] = "Translation" translate_catz[224] = "Cheater" translate_catz[225] = "Update" translate_catz[226] = "Warez" translate_catz[227] = "Webmail" translate_catz[228] = "Poneytelecom" translate_catz[229] = "OVH" translate_catz[230] = "DigitalOcean" translate_catz[231] = "Orange SA" translate_catz[232] = "SoftLayer Technologies" translate_catz[233] = "Linode" translate_catz[234] = "Cloudflare" translate_catz[235] = "cryptomining" translate_catz[236] = "Hetzner Online" translate_catz[237] = "DOH DNS" translate_catz[249] = "DNS Black Listing" translate_catz[5001] = "lem.adult.porn" translate_catz[5002] = "lem.notlegal.appz" translate_catz[5003] = "lem.notlegal.hardware" translate_catz[5004] = "lem.games.online" translate_catz[5005] = "lem.notlegal.generic" translate_catz[5006] = "lem.health.prevention.drugs" translate_catz[5007] = "lem.gov.justice" translate_catz[5008] = "lem.gov.health" translate_catz[5009] = "lem.dating" translate_catz[5010] = "lem.scam" translate_catz[5011] = "x.cd06.wl" translate_catz[5012] = "lem.games.app.apple" translate_catz[5013] = "lem.games.news" translate_catz[5014] = "lem.health.prevention.accident" translate_catz[5015] = "lem.finance.banks" translate_catz[5016] = "lem.hobby.manga" translate_catz[5017] = "lem.gamble" translate_catz[5018] = "lem.games.app.pc" translate_catz[5019] = "lem.health.risk.drugs" translate_catz[5020] = "lem.companies.insurance" translate_catz[5021] = "lem.games.app.android" translate_catz[5022] = "lem.health.prevention.riskypractice" translate_catz[5023] = "lem.gov.country.fr" translate_catz[5024] = "lem.infected" translate_catz[5025] = "lem.chat" translate_catz[5026] = "lem.tracker" translate_catz[5027] = "lem.malware" translate_catz[5028] = "lem.gov.edu" translate_catz[5029] = "lem.notlegal.moviez" translate_catz[5030] = "lem.notlegal.p2p" translate_catz[5031] = "lem.certificate" translate_catz[5032] = "lem.search.safe-engines" translate_catz[5033] = "lem.fake.news" translate_catz[5034] = "lem.fake.joke" translate_catz[5035] = "lem.fake.health" translate_catz[5036] = "lem.notlegal.downloadz" translate_catz[5037] = "lem.gov.rescue" translate_catz[5038] = "lem.gov.towns" translate_catz[5039] = "lem.gov.regions" translate_catz[5040] = "lem.gov.country" translate_catz[5041] = "lem.health.prevention.sects" translate_catz[5042] = "lem.notlegal.extractor" translate_catz[5043] = "lem.health.risk.sects" translate_catz[5044] = "lem.gov.police" translate_catz[5045] = "lem.finance.fr.notlegal" translate_catz[5046] = "lem.gov.generic" translate_catz[5047] = "lem.companies.industries" translate_catz[5048] = "lem.adult.underwears" translate_catz[5049] = "lem.health.products" translate_catz[5050] = "lem.network.monitoring" translate_catz[5051] = "lem.hobby.sport" translate_catz[5052] = "x.cd06.bl" translate_catz[5053] = "lem.computing" translate_catz[5054] = "lem.shop" translate_catz[5055] = "lem.companies.itservices" translate_catz[5056] = "lem.computing.pentesting" translate_catz[5057] = "lem.computing.freedns" translate_catz[5058] = "lem.adult.sexshop" translate_catz[5059] = "lem.learning" translate_catz[5060] = "lem.computing.update" translate_catz[5061] = "lem.hobby.art" translate_catz[5062] = "lem.cooking" translate_catz[5063] = "lem.companies.buildings" translate_catz[5064] = "lem.hobby.genealogy" translate_catz[5065] = "lem.hobby.astrology" translate_catz[5066] = "lem.ads" translate_catz[5067] = "lem.news.tv" translate_catz[5068] = "lem.news.mag" translate_catz[5069] = "lem.computing.webdesign" translate_catz[5070] = "lem.learning.schools" translate_catz[5071] = "lem.health.hospitals" translate_catz[5072] = "lem.hobby.travel" translate_catz[5073] = "lem.learning.manuals" translate_catz[5074] = "lem.learning.languages" translate_catz[5075] = "lem.learning.tools" translate_catz[5076] = "lem.hobby.animals" translate_catz[5077] = "lem.hobby.music" translate_catz[5078] = "lem.hobby.vehicles" translate_catz[5079] = "lem.health.disease" translate_catz[5080] = "lem.app.productivity" translate_catz[5081] = "lem.hobby.books" translate_catz[5082] = "lem.hobby.photo" translate_catz[5083] = "lem.sciences" translate_catz[5084] = "lem.companies.realestate" translate_catz[5085] = "lem.blogs.design" translate_catz[5086] = "lem.blogs.geek" translate_catz[5087] = "lem.socialnet" translate_catz[5088] = "lem.blogs.persdev" translate_catz[5089] = "lem.companies.models" translate_catz[5090] = "lem.politics" translate_catz[5091] = "lem.blogs" translate_catz[5092] = "lem.ecology" translate_catz[5093] = "lem.proxy" translate_catz[5094] = "lem.phishing" translate_catz[5095] = "lem.finance.cryptocoins" translate_catz[5096] = "lem.health.risk" translate_catz[5097] = "lem.pictures" translate_catz[5098] = "lem.blogs.celebrity" translate_catz[5099] = "lem.blogs.fashion" translate_catz[5100] = "lem.blogs.diy" translate_catz[5101] = "lem.violence" translate_catz[5102] = "lem.blogs.history" translate_catz[5103] = "lem.hobby.nature" translate_catz[5104] = "lem.notmoderated" translate_catz[5105] = "lem.blogs.lifestyle" translate_catz[5106] = "lem.videos" translate_catz[5107] = "lem.pwned" translate_catz[5108] = "lem.religious" translate_catz[5109] = "lem.tattouing" translate_catz[5110] = "lem.companies.events" translate_catz[5111] = "lem.anonymous" translate_catz[5112] = "lem.visio" translate_catz[5113] = "lem.adult.generic" translate_catz[5114] = "lem.weapons" translate_catz[5115] = "lem.job" translate_catz[5116] = "lem.blogs.lgbt" translate_catz[5117] = "lem.apple" translate_catz[5118] = "lem.timeloose" translate_catz[5119] = "lem.learning.cheat" translate_catz[5120] = "lem.health.prevention" translate_catz[5121] = "lem.computing.antivirus" translate_catz[5122] = "lem.videos.youtube" translate_catz[5123] = "lem.videos.tv" translate_catz[5124] = "lem.notused" translate_catz[5125] = "lem.search.nosafe-engines" translate_catz[5126] = "lem.meteo" translate_catz[5127] = "lem.finance.loan" translate_catz[5128] = "lem.companies.printing" if value, ok := translate_catz[category_int]; ok { cat_name := strings.Replace(value, " ", "_", -1) cat_name = strings.Replace(cat_name, "/", "_", -1) return cat_name } else { return "Unknown" } } func checkIPAddressType(ip string) bool { if net.ParseIP(ip) == nil { if isDebugCategorization { log.Printf("Invalid IP Address: %s\n", ip) } return false } for i := 0; i < len(ip); i++ { switch ip[i] { case '.': if isDebugCategorization { log.Printf("Given IP Address %s is IPV4 type\n", ip) } return true case ':': if isDebugCategorization { log.Printf("Given IP Address %s is IPV6 type\n", ip) } return true } } return false } func IsPrivateIp(ip string) bool { if checkIPAddressType(ip) { ipaddr := net.ParseIP(ip) return ipaddr.IsPrivate() } return false } func get_category_by_ip(ip string) int { if categorizeIPChecks(ip, defs_google) { return 17 } if categorizeIPChecks(ip, defs_amazon) { return 19 } if categorizeIPChecks(ip, def_facebook) { return 1 } if categorizeIPChecks(ip, defs_internal) { return 82 } if categorizeIPChecks(ip, defs_ovh) { return 229 } if categorizeIPChecks(ip, defs_microsoft) { return 2 } if categorizeIPChecks(ip, def_apple) { return 18 } if categorizeIPChecks(ip, def_akamai) { return 20 } if categorizeIPChecks(ip, def_freewheel) { return 156 } if categorizeIPChecks(ip, def_yandex) { return 129 } if categorizeIPChecks(ip, defs_smartadservers) { return 5 } if categorizeIPChecks(ip, defs_adjust) { return 5 } if categorizeIPChecks(ip, defs_adify_corporation) { return 5 } if categorizeIPChecks(ip, defs_indexExchange) { return 5 } if categorizeIPChecks(ip, def_marktplaats) { return 5 } if categorizeIPChecks(ip, def_videoplazza) { return 5 } if categorizeIPChecks(ip, def_amobee_emeea) { return 5 } if categorizeIPChecks(ip, def_mediamath) { return 5 } if categorizeIPChecks(ip, defs_appnexus) { return 5 } if categorizeIPChecks(ip, def_rubicon_project) { return 5 } if categorizeIPChecks(ip, defs_eulerian) { return 5 } if categorizeIPChecks(ip, defs_internet_archive) { return 31 } if categorizeIPChecks(ip, def_banking) { return 50 } if categorizeIPChecks(ip, def_roblox) { return 58 } if categorizeIPChecks(ip, def_blizzard) { return 58 } if categorizeIPChecks(ip, defs_digitalocean) { return 230 } if categorizeIPChecks(ip, def_orange) { return 231 } if categorizeIPChecks(ip, def_linode_lcc) { return 233 } if categorizeIPChecks(ip, def_cloudflare) { return 234 } if categorizeIPChecks(ip, defs_controld) { return 237 } if categorizeIPChecks(ip, def_yahoo) { return 21 } if categorizeIPChecks(ip, defs_kaspersky) { return 36 } if categorizeIPChecks(ip, defs_avast) { return 36 } if categorizeIPChecks(ip, defs_trendmicro) { return 36 } if categorizeIPChecks(ip, def_daniel_cid) { return 36 } if categorizeIPChecks(ip, def_box_com) { return 49 } if categorizeIPChecks(ip, defs_linkdein) { return 134 } if categorizeIPChecks(ip, defs_telegram_messgenger) { return 153 } if categorizeIPChecks(ip, def_etf1) { return 156 } if categorizeIPChecks(ip, def_canalplus) { return 156 } if categorizeIPChecks(ip, defs_remote_control) { return 123 } if categorizeIPChecks(ip, def_total_uptime) { return 83 } if categorizeIPChecks(ip, def_cachenetworks) { return 83 } if categorizeIPChecks(ip, def_exion_network) { return 83 } if categorizeIPChecks(ip, def_g_core_labs) { return 83 } if categorizeIPChecks(ip, def_hurricane_electric) { return 83 } if categorizeIPChecks(ip, def_netactuate) { return 83 } if categorizeIPChecks(ip, freie_netze_muenchen) { return 83 } if categorizeIPChecks(ip, def_nessus_gmbh) { return 83 } if categorizeIPChecks(ip, def_ab_stract) { return 83 } if categorizeIPChecks(ip, defs_netcup_gmbh) { return 83 } if categorizeIPChecks(ip, defs_hostach) { return 83 } if categorizeIPChecks(ip, defs_inmotion) { return 83 } if categorizeIPChecks(ip, def_node4) { return 83 } if categorizeIPChecks(ip, defs_limelight_networks) { return 83 } if categorizeIPChecks(ip, def_vodaphone) { return 83 } if categorizeIPChecks(ip, def_webnx) { return 83 } if categorizeIPChecks(ip, def_fastly) { return 83 } if categorizeIPChecks(ip, def_liquid_web) { return 83 } if categorizeIPChecks(ip, def_bouygues_telecom) { return 83 } if categorizeIPChecks(ip, def_verizon) { return 83 } if categorizeIPChecks(ip, def_citic_telecom) { return 83 } if categorizeIPChecks(ip, def_online_sas) { return 83 } if categorizeIPChecks(ip, def_cogent_communication) { return 83 } if categorizeIPChecks(ip, def_xtom) { return 83 } if categorizeIPChecks(ip, def_constant_company) { return 83 } if categorizeIPChecks(ip, def_nitronet_sp) { return 83 } if categorizeIPChecks(ip, def_cloud_nextgen) { return 83 } if categorizeIPChecks(ip, def_quantil_network) { return 83 } if categorizeIPChecks(ip, def_mach_dilemma) { return 83 } if categorizeIPChecks(ip, def_mci_communication) { return 83 } if categorizeIPChecks(ip, def_level3_communication) { return 83 } if categorizeIPChecks(ip, def_iweb_technologies) { return 83 } if categorizeIPChecks(ip, def_telia_company) { return 83 } if categorizeIPChecks(ip, def_tata_communications) { return 83 } if categorizeIPChecks(ip, def_infrastructure_Group_bv) { return 83 } if categorizeIPChecks(ip, def_mpvs_ltd) { return 83 } if categorizeIPChecks(ip, def_taiwan_network_information) { return 83 } if categorizeIPChecks(ip, def_serveroid) { return 83 } if categorizeIPChecks(ip, def_hosthatch) { return 83 } if categorizeIPChecks(ip, def_cz_nic_zspo) { return 83 } if categorizeIPChecks(ip, def_switch) { return 83 } if categorizeIPChecks(ip, def_datacamp) { return 83 } if categorizeIPChecks(ip, def_alphalink_sasu) { return 83 } if categorizeIPChecks(ip, def_aptum_technologies) { return 83 } if categorizeIPChecks(ip, def_andrews_arnold) { return 83 } if categorizeIPChecks(ip, def_highwinds_network_group) { return 83 } if categorizeIPChecks(ip, def_m247) { return 83 } if categorizeIPChecks(ip, def_outscale_sasu) { return 83 } if categorizeIPChecks(ip, def_llhost) { return 83 } if categorizeIPChecks(ip, defs_sdv_plurimedia) { return 83 } if categorizeIPChecks(ip, defs_automattic) { return 83 } if categorizeIPChecks(ip, def_alibaba) { return 83 } if categorizeIPChecks(ip, def_fly_io) { return 83 } if categorizeIPChecks(ip, def_shenzhen_tencent) { return 83 } if categorizeIPChecks(ip, defs_monaco_telecom) { return 83 } if categorizeIPChecks(ip, def_communityrack_org) { return 83 } if categorizeIPChecks(ip, def_wanagain) { return 83 } if categorizeIPChecks(ip, def_planethoster) { return 83 } if categorizeIPChecks(ip, def_ionos) { return 83 } if categorizeIPChecks(ip, defs_internap_holding) { return 83 } if categorizeIPChecks(ip, def_leaseweb) { return 83 } if categorizeIPChecks(ip, def_ntt) { return 83 } if categorizeIPChecks(ip, def_network_of_data_centers) { return 83 } if categorizeIPChecks(ip, def_criteo_sa) { return 143 } if categorizeIPChecks(ip, def_quantserve) { return 143 } if categorizeIPChecks(ip, def_new_relic) { return 143 } if categorizeIPChecks(ip, def_hetzner_online) { return 236 } if categorizeIPChecks(ip, def_nextdns) { return 237 } if categorizeIPChecks(ip, defs_conviva) { return 100 } if categorizeIPChecks(ip, def_netflix) { return 100 } if categorizeIPChecks(ip, defs_convia_inc) { return 100 } if categorizeIPChecks(ip, def_github) { return 126 } if categorizeIPChecks(ip, def_smile_gie) { return 126 } if categorizeIPChecks(ip, def_thomas_steen_rasmussen) { return 126 } if categorizeIPChecks(ip, defs_adobe) { return 126 } if categorizeIPChecks(ip, def_canonical_group) { return 126 } if categorizeIPChecks(ip, def_nvidia) { return 126 } if categorizeIPChecks(ip, def_dell) { return 126 } if categorizeIPChecks(ip, def_nutannix) { return 126 } if categorizeIPChecks(ip, def_vmware) { return 126 } if categorizeIPChecks(ip, def_haproxy_technologies) { return 126 } if categorizeIPChecks(ip, def_twitter) { return 134 } if categorizeIPChecks(ip, defs_salesforce) { return 151 } if categorizeIPChecks(ip, def_unversity) { return 115 } if categorizeIPChecks(ip, def_renater) { return 115 } if categorizeIPChecks(ip, def_index_education) { return 115 } if categorizeIPChecks(ip, def_kaspersky) { return 147 } if categorizeIPChecks(ip, def_eset) { return 147 } return 0 } func categorizeIPChecks(ip string, categories []string) bool { for _, v := range categories { _, ipnetA, err := net.ParseCIDR(v) ipB := net.ParseIP(ip) if err != nil { log.Printf("Bad cidr. Got %v", err) return false } if ipnetA.Contains(ipB) { return true break } else { log.Printf("Given IP Address %s not found in catz\n", ip) } } return false } func FixedWhitelist(url string) bool { matches := false if SelfKsrnDisableGoogleAdServices { if url == "www.googleadservices.com" { return true } if url == "googleadservices.com" { return true } if url == "adservice.google.com" { return true } if url == "www.adservice.google.com" { return true } if url == "www.googletagmanager.com" { return true } if url == "pagead2.googlesyndication.com" { return true } if url == "partner.googleadservices.com" { return true } if url == "tpc.googlesyndication.com" { return true } if url == "www.googletagservices.com" { return true } } skey := fmt.Sprintf("isWhite:%s", url) if val, _ := internal.Fetch(skey); val != nil { return true } if url == "suggestqueries.google.com" { return true } if url == "fonts.gstatic.com" { return true } if url == "ip.42.pl" { return true } if url == "discordservers.me" { return true } if url == "disboard.org" { return true } if url == "www.appleiphonecell.com" { return true } if url == "syndication.twitter.com" { return true } if url == "api.eu.amazonalexa.com" { return true } if url == "calendar.google.com" { return true } if url == "www.google.com" { return true } if url == "doh.this.web.id" { return true } if url == "plex.tv" { return true } if url == "jsonip.com" { return true } if url == "detectportal.firefox.com" { return true } if url == "www.thinkdifferent.us" { return true } if url == "www.airport.us" { return true } if url == "www.itools.info" { return true } if url == "www.ibook.info" { return true } if url == "packages.sury.org" { return true } if url == "www.netflix.com" { return true } if url == "connectivity-check.ubuntu.com" { return true } if url == "ocsp2.apple.com" { return true } if url == "mesu.apple.com" { return true } if url == "audiocontentdownload.apple.com" { return true } if url == "gateway.icloud.com" { return true } if url == "inappcheck.itunes.apple.com" { return true } if url == "ws.school.apple.com" { return true } if url == "ocws.officeapps.live.com" { return true } if url == "login.microsoftonline.com" { return true } if url == "go.microsoft.com" { return true } if url == "static-asm.secure.skypeassets.com" { return true } if url == "fpc.msedge.net" { return true } if url == "b-ring.msedge.net" { return true } if url == "outlook.live.com" { return true } if url == "client.wns.windows.com" { return true } if url == "activity.windows.com" { return true } if url == "bing.com" { return true } if url == "www.bing.com" { return true } if url == "api.aps.skype.com" { return true } if url == "config.edge.skype.com" { return true } if url == "people.skype.com" { return true } if url == "consumer.entitlement.skype.com" { return true } if url == "static.asm.skype.com" { return true } if url == "pear.php.net" { return true } if url == "targetemsecure.blob.core.windows.net" { return true } if url == "arcus-uswest.amazon.com" { return true } if url == "pollserver.lastpass.com" { return true } if url == "media1.giphy.com" { return true } if url == "media2.giphy.com" { return true } if url == "media3.giphy.com" { return true } if url == "am3pap006.storage.live.com" { return true } if url == "www.login.live.com" { return true } if url == "skyapi.policies.live.net" { return true } if url == "login.live.com" { return true } if url == "config.teams.microsoft.com" { return true } if url == "outlook.office365.com" { return true } if url == "login.microsoftonline.com" { return true } //Wordpress... if url == "i0.wp.com" { return true } //Microsoft if url == "c.s-microsoft.com" { return true } if url == "www.linkedin.com" { return true } if url == "realtime.www.linkedin.com" { return true } if url == "firefox.settings.services.mozilla.com" { return true } if url == "www.bookmyname.com" { return true } if url == "www.paypal.com" { return true } if url == "www.paypalobjects.com" { return true } if url == "checkout.paypal.com" { return true } if url == "b.stats.paypal.com" { return true } if url == "dub.stats.paypal.com" { return true } if url == "c6.paypal.com" { return true } if url == "events.gfe.nvidia.com" { return true } if url == "services.gfe.nvidia.com" { return true } if url == "alive.github.com" { return true } if url == "api.github.com" { return true } if url == "cdnjs.cloudflare.com" { return true } if url == "www.reddit.com" { return true } if url == "api.pinterest.com" { return true } if url == "share.yandex.ru" { return true } if url == "domainbigdata.com" { return true } if url == "speeddials.opera.com" { return true } if url == "s1.dmcdn.net" { return true } if url == "nmcheck.gnome.org" { return true } if url == "update.nai.com" { return true } if url == "update.veritas.com" { return true } if url == "accounts.youtube.com" { return true } if url == "cros-omahaproxy.appspot.com" { return true } if url == "gweb-gettingstartedguide.appspot.com" { return true } if url == "omahaproxy.appspot.com" { return true } if url == "doh.post-factum.tk" { return true } if url == "doh.bortzmeyer.fr" { return true } if url == "doh.crypto.sx" { return true } if url == "a-ring-fallback.msedge.net" { return true } if url == "ocsp.globalsign.com" { return true } matches, _ = regexp.MatchString("(\\.|^)(drupal|articatech|artica)\\.(org|center|net|com)$", url) if matches { return true } matches, _ = regexp.MatchString("[a-z][0-9]+\\.dualstack\\.[a-z\\-]+-[0-9]+\\.amazonaws\\.com$", url) if matches { return true } if SelfKsrnDisableGoogleAdServices { matches, _ = regexp.MatchString("(\\.|^)(adservice\\.google|googleadservices)\\.[a-z]+$'", url) if matches { if isDebugCategorization { log.Printf("[DEBUG]: %s = Forced to PASS", url) } return true } } matches, _ = regexp.MatchString("(\\.|^)(1e100\\.net|topsante|codegena|manga-news|googlevideo|netflix|narkive)\\.com$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)client[0-9]+\\.google\\.com$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(fbcdn)\\.net$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(nflxvideo|msedge|cguardprotect|office)\\.net$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(phishtank|drupal)\\.org$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(amazon|jetbrains|oracle|ssl-images-amazon)\\.(co\\.jp|com|net|fr|es|pt|pl|uk|com\\.br)$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(appdynamics|opendns|bitdefender|service-now|bechtle|gstatic|sharepoint|thinkdifferent|appleiphonecell|seagate|msftncsi|epicgames|)\\.(fr|com|info|us|net)", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)ac-(aix-marseille|am|amiens|besancon|bordeaux|caen|clermont|coaching|corse|creteil|dijon|grenoble|guadeloupe|guyane|lille|limoges|lyon|martinique|montpellier|nancy-metz|nantes|nice|normandie|orleans-tours|paris|poitiers|reims|rennes|reunion|rouen|spm|strasbourg|toulouse|versailles)\\.fr$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(ibook\\.info|thinkdifferent\\.us|mozilla\\.net|airport\\.us|playstation\\.net|banquepopulaire\\.fr)$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(office365|bing|gr-assets|microsoft|icloud-content|msftconnecttest|kaspersky|firefox|appleiphonecell|samsungcloudsolution|live|apple|icloud|facebook)\\.com$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(sectigo|deepl|stackoverflow|vimeocdn|wordpress|ytimg|teamviewer|mozilla|brave|youtube|facebook|msftncsi|gravatar|messenger\\.live|googlebot)\\.com$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(narkive|vorwerk-digital|msn|qwant|starleaf|ipdeny|xboxlive|github|githubapp|kaspersky-labs|githubassets|a2z)\\.com$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(squarespace|jimstatic|parastorage|squarespace-cdn|website-files|webflow|jimcdn|wixstatic)\\.com$", url) if matches { return true } matches, _ = regexp.MatchString("(\\.|^)(ecosia|qwant|qwantjunior|edupole)\\.[a-z]+$", url) if matches { return true } matches, _ = regexp.MatchString("\\.(corp|home|mail|tld)$", url) if matches { return true } sort.Strings(SelfSrnWhite) i := sort.Search(len(SelfSrnWhite), func(i int) bool { return SelfSrnWhite[i] >= url }) if i < len(SelfSrnWhite) && SelfSrnWhite[i] == url { return true } return false } func GetCategoriesCguard(sitename string) int { var matches bool var rs []string var re *regexp.Regexp if strings.Index(sitename, ".") < 1 { return 82 } if strings.Index(sitename, "*") > 0 { return 82 } squery := fmt.Sprintf("%s.cloud.cguardprotect.net", sitename) if value, _ := internal.Fetch(squery); value != nil { data, _ := strconv.Atoi(*value) SelfCategorieName = CategoryIntToString(data) if isDebugCategorization { log.Printf("%s %s [%d] %s", sitename, "CGUARD HIT", data, SelfCategorieName) } return data } if isDebugCategorization { log.Printf("Checking Cguard Cloud Servers") } //TODO Change DNS System resolvers := []string{ SelfDns1, SelfDns2, } url := strings.TrimSuffix(squery, "\n") domains := []string{ url, } client := resolvermt.New(resolvers, 3, 1000, 50) defer client.Close() results := client.Resolve(domains, resolvermt.TypeTXT) for _, record := range results { re = regexp.MustCompile("([0-9]+):(.+?):([0-9]+)") matches = re.MatchString(record.Answer) if matches { rs = re.FindStringSubmatch(record.Answer) categoryID, _ := strconv.Atoi(rs[1]) return categoryID } sdata := decryptTxt("2FdJpHFckXau8226fKFyTts3y6Nd7wsa", record.Answer) if isDebugCategorization { log.Printf("DECODED TXT [%s]", sdata) } re = regexp.MustCompile("([0-9]+):(.+?):([0-9]+)") matches = re.MatchString(string(sdata)) if matches { rs = re.FindStringSubmatch(string(sdata)) categoryID, _ := strconv.Atoi(rs[1]) return categoryID } else { return 0 } } return 0 } func decryptTxt(k, enc string) string { sDec, _ := b64.StdEncoding.DecodeString(enc) ciphertext := []byte(sDec) key := []byte(k) if plaintext, err := decryptCBC(key, ciphertext); err != nil { panic(err) } else { return string(plaintext) } } func decryptCBC(key, ciphertext []byte) (plaintext []byte, err error) { var block cipher.Block if block, err = aes.NewCipher(key); err != nil { return } if len(ciphertext) < aes.BlockSize { log.Printf("ciphertext too short") return } iv := ciphertext[:aes.BlockSize] ciphertext = ciphertext[aes.BlockSize:] cbc := cipher.NewCBCDecrypter(block, iv) cbc.CryptBlocks(ciphertext, ciphertext) plaintext = ciphertext return }