cloudcheck 8.7.2__cp313-cp313-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cloudcheck/__init__.py +3 -0
- cloudcheck/cloudcheck.cpython-313-darwin.so +0 -0
- cloudcheck/helpers.py +251 -0
- cloudcheck/providers/__init__.py +51 -0
- cloudcheck/providers/akamai.py +35 -0
- cloudcheck/providers/alibaba.py +13 -0
- cloudcheck/providers/amazon.py +39 -0
- cloudcheck/providers/arvancloud.py +22 -0
- cloudcheck/providers/backblaze.py +13 -0
- cloudcheck/providers/baidu.py +17 -0
- cloudcheck/providers/base.py +317 -0
- cloudcheck/providers/cachefly.py +26 -0
- cloudcheck/providers/cdnetworks.py +14 -0
- cloudcheck/providers/cisco.py +41 -0
- cloudcheck/providers/cloudflare.py +42 -0
- cloudcheck/providers/cloudfront.py +20 -0
- cloudcheck/providers/ddosguard.py +14 -0
- cloudcheck/providers/dell.py +13 -0
- cloudcheck/providers/digitalocean.py +32 -0
- cloudcheck/providers/dod.py +31 -0
- cloudcheck/providers/fastly.py +24 -0
- cloudcheck/providers/fbi.py +18 -0
- cloudcheck/providers/gabia.py +12 -0
- cloudcheck/providers/gcore.py +27 -0
- cloudcheck/providers/github.py +30 -0
- cloudcheck/providers/gocache.py +17 -0
- cloudcheck/providers/google.py +63 -0
- cloudcheck/providers/heroku.py +9 -0
- cloudcheck/providers/hetzner.py +20 -0
- cloudcheck/providers/hostway.py +13 -0
- cloudcheck/providers/hpe.py +14 -0
- cloudcheck/providers/huawei.py +19 -0
- cloudcheck/providers/ibm.py +59 -0
- cloudcheck/providers/imperva.py +27 -0
- cloudcheck/providers/kamatera.py +19 -0
- cloudcheck/providers/kinx.py +14 -0
- cloudcheck/providers/ktcloud.py +14 -0
- cloudcheck/providers/leaseweb.py +32 -0
- cloudcheck/providers/lgtelecom.py +13 -0
- cloudcheck/providers/microsoft.py +39 -0
- cloudcheck/providers/microsoft365.py +33 -0
- cloudcheck/providers/navercloud.py +15 -0
- cloudcheck/providers/nhncloud.py +15 -0
- cloudcheck/providers/oracle.py +33 -0
- cloudcheck/providers/ovh.py +17 -0
- cloudcheck/providers/qrator.py +16 -0
- cloudcheck/providers/quiccloud.py +38 -0
- cloudcheck/providers/rackspace.py +23 -0
- cloudcheck/providers/ru_fso.py +13 -0
- cloudcheck/providers/salesforce.py +17 -0
- cloudcheck/providers/scaleway.py +17 -0
- cloudcheck/providers/skbroadband.py +13 -0
- cloudcheck/providers/stormwall.py +14 -0
- cloudcheck/providers/sucuri.py +14 -0
- cloudcheck/providers/tencent.py +17 -0
- cloudcheck/providers/uk_mod.py +16 -0
- cloudcheck/providers/wasabi.py +17 -0
- cloudcheck/providers/x4b.py +14 -0
- cloudcheck/providers/yandex.py +107 -0
- cloudcheck/providers/zoho.py +27 -0
- cloudcheck/providers/zscaler.py +25 -0
- cloudcheck-8.7.2.dist-info/METADATA +252 -0
- cloudcheck-8.7.2.dist-info/RECORD +64 -0
- cloudcheck-8.7.2.dist-info/WHEEL +4 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import ipaddress
|
|
2
|
+
from cloudcheck.providers.base import BaseProvider
|
|
3
|
+
from typing import List
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class GitHub(BaseProvider):
|
|
7
|
+
v2fly_company: str = "github"
|
|
8
|
+
tags: List[str] = ["cdn"]
|
|
9
|
+
short_description: str = "GitHub"
|
|
10
|
+
long_description: str = "A web-based platform for version control and collaboration using Git, providing hosting for software development and code repositories."
|
|
11
|
+
# {"org_id": "GITHU-ARIN", "org_name": "GitHub, Inc.", "country": "US", "asns": [36459]}
|
|
12
|
+
org_ids: List[str] = [
|
|
13
|
+
"GITHU-ARIN",
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
_ips_url = "https://api.github.com/meta"
|
|
17
|
+
|
|
18
|
+
def fetch_cidrs(self):
|
|
19
|
+
response = self.request(self._ips_url)
|
|
20
|
+
ranges = set()
|
|
21
|
+
response_json = response.json()
|
|
22
|
+
for k, v in response_json.items():
|
|
23
|
+
if isinstance(v, list):
|
|
24
|
+
for n in v:
|
|
25
|
+
try:
|
|
26
|
+
ipaddress.ip_network(n)
|
|
27
|
+
ranges.add(n)
|
|
28
|
+
except ValueError:
|
|
29
|
+
pass
|
|
30
|
+
return list(ranges)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Gocache(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cdn"]
|
|
7
|
+
short_description: str = "GoCache"
|
|
8
|
+
long_description: str = "A Brazilian content delivery network provider offering CDN services."
|
|
9
|
+
|
|
10
|
+
_ips_url = "https://gocache.com.br/ips"
|
|
11
|
+
|
|
12
|
+
def fetch_cidrs(self):
|
|
13
|
+
response = self.request(self._ips_url)
|
|
14
|
+
ranges = set()
|
|
15
|
+
if getattr(response, "status_code", 0) == 200:
|
|
16
|
+
ranges.update(response.text.splitlines())
|
|
17
|
+
return list(ranges)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List, Dict
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Google(BaseProvider):
|
|
6
|
+
v2fly_company: str = "google"
|
|
7
|
+
# domains = ["googleapis.cn", "googleapis.com", "cloud.google.com", "gcp.gvt2.com", "appspot.com", "firebaseio.com", "google"]
|
|
8
|
+
tags: List[str] = ["cloud"]
|
|
9
|
+
short_description: str = "Google Cloud"
|
|
10
|
+
long_description: str = "A suite of cloud computing services provided by Google, including infrastructure, platform, and software services for businesses and developers."
|
|
11
|
+
# {"org_id": "GAL-53-ARIN", "org_name": "Google Access LLC", "country": "US", "asns": [32381]}
|
|
12
|
+
# {"org_id": "GF-ARIN", "org_name": "Google Fiber Inc.", "country": "US", "asns": [6432,16591,19448]}
|
|
13
|
+
# {"org_id": "GL-946-ARIN", "org_name": "Google LLC", "country": "US", "asns": [33715]}
|
|
14
|
+
# {"org_id": "GOGL-ARIN", "org_name": "Google LLC", "country": "US", "asns": [13949,15169,19425,22577,22859,26684,36039,36040,40873]}
|
|
15
|
+
# {"org_id": "GOOGL-1-ARIN", "org_name": "Google LLC", "country": "US", "asns": [36383,36384,36385,36411,36520]}
|
|
16
|
+
# {"org_id": "GOOGL-2-ARIN", "org_name": "Google LLC", "country": "US", "asns": [16550,19527,26910,36561,55023,394089,395973,396178,396982]}
|
|
17
|
+
# {"org_id": "GOOGL-5-ARIN", "org_name": "Google LLC", "country": "US", "asns": [394639]}
|
|
18
|
+
# {"org_id": "GOOGL-9-ARIN", "org_name": "Google LLC", "country": "US", "asns": [394507]}
|
|
19
|
+
# {"org_id": "GOOGL-ARIN", "org_name": "Google, LLC", "country": "US", "asns": [36492]}
|
|
20
|
+
# {"org_id": "ORG-GAPP2-AP-APNIC", "org_name": "Google Asia Pacific Pte. Ltd.", "country": "SG", "asns": [139070,139190]}
|
|
21
|
+
# {"org_id": "ORG-GCEL1-RIPE", "org_name": "Google Cloud EMEA Ltd", "country": "IE", "asns": [209504,209519,209539,214609,214611]}
|
|
22
|
+
# {"org_id": "ORG-GIL4-RIPE", "org_name": "Google Ireland Limited", "country": "IE", "asns": [43515]}
|
|
23
|
+
# {"org_id": "ORG-GKL1-AFRINIC", "org_name": "Google Kenya Limited", "country": "KE", "asns": [36987]}
|
|
24
|
+
# {"org_id": "ORG-GSG10-RIPE", "org_name": "Google Switzerland GmbH", "country": "CH", "asns": [41264]}
|
|
25
|
+
# {"org_id": "ORG-GSPL5-AP-APNIC", "org_name": "Google Singapore Pte. Ltd.", "country": "SG", "asns": [45566]}
|
|
26
|
+
org_ids: List[str] = [
|
|
27
|
+
"GAL-53-ARIN",
|
|
28
|
+
"GF-ARIN",
|
|
29
|
+
"GL-946-ARIN",
|
|
30
|
+
"GOGL-ARIN",
|
|
31
|
+
"GOOGL-1-ARIN",
|
|
32
|
+
"GOOGL-2-ARIN",
|
|
33
|
+
"GOOGL-5-ARIN",
|
|
34
|
+
"GOOGL-9-ARIN",
|
|
35
|
+
"GOOGL-ARIN",
|
|
36
|
+
"ORG-GAPP2-AP-APNIC",
|
|
37
|
+
"ORG-GCEL1-RIPE",
|
|
38
|
+
"ORG-GIL4-RIPE",
|
|
39
|
+
"ORG-GKL1-AFRINIC",
|
|
40
|
+
"ORG-GSG10-RIPE",
|
|
41
|
+
"ORG-GSPL5-AP-APNIC",
|
|
42
|
+
]
|
|
43
|
+
_bucket_name_regex = r"[a-z0-9][a-z0-9-_\.]{1,61}[a-z0-9]"
|
|
44
|
+
_firebase_bucket_name_regex = r"[a-z0-9][a-z0-9-\.]{1,61}[a-z0-9]"
|
|
45
|
+
regexes: Dict[str, List[str]] = {
|
|
46
|
+
"STORAGE_BUCKET_NAME": [_bucket_name_regex, _firebase_bucket_name_regex],
|
|
47
|
+
"STORAGE_BUCKET_HOSTNAME": [
|
|
48
|
+
r"(" + _firebase_bucket_name_regex + r")\.(firebaseio\.com)",
|
|
49
|
+
r"(" + _bucket_name_regex + r")\.(storage\.googleapis\.com)",
|
|
50
|
+
],
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
_ips_url = "https://www.gstatic.com/ipranges/cloud.json"
|
|
54
|
+
|
|
55
|
+
def fetch_cidrs(self):
|
|
56
|
+
response = self.request(self._ips_url)
|
|
57
|
+
ranges = set()
|
|
58
|
+
for p in response.json()["prefixes"]:
|
|
59
|
+
try:
|
|
60
|
+
ranges.add(p["ipv4Prefix"])
|
|
61
|
+
except KeyError:
|
|
62
|
+
ranges.add(p["ipv6Prefix"])
|
|
63
|
+
return list(ranges)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Heroku(BaseProvider):
|
|
6
|
+
v2fly_company: str = "heroku"
|
|
7
|
+
tags: List[str] = ["cloud"]
|
|
8
|
+
short_description: str = "Heroku"
|
|
9
|
+
long_description: str = "A cloud platform as a service that enables developers to build, run, and operate applications entirely in the cloud."
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List, Dict
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Hetzner(BaseProvider):
|
|
6
|
+
v2fly_company: str = "hetzner"
|
|
7
|
+
tags: List[str] = ["cloud"]
|
|
8
|
+
short_description: str = "Hetzner"
|
|
9
|
+
long_description: str = "A German cloud hosting provider offering dedicated servers, cloud instances, and storage solutions."
|
|
10
|
+
# {"org_id": "ORG-HOA1-RIPE", "org_name": "Hetzner Online GmbH", "country": "DE", "asns": [24940,212317,213230,215859]}
|
|
11
|
+
org_ids: List[str] = [
|
|
12
|
+
"ORG-HOA1-RIPE",
|
|
13
|
+
]
|
|
14
|
+
_bucket_name_regex = r"[a-z0-9][a-z0-9-_\.]{1,61}[a-z0-9]"
|
|
15
|
+
regexes: Dict[str, List[str]] = {
|
|
16
|
+
"STORAGE_BUCKET_NAME": [_bucket_name_regex],
|
|
17
|
+
"STORAGE_BUCKET_HOSTNAME": [
|
|
18
|
+
r"(" + _bucket_name_regex + r")\.(your-objectstorage\.com)"
|
|
19
|
+
],
|
|
20
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Hostway(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cloud"]
|
|
7
|
+
short_description: str = "Hostway (호스트웨이)"
|
|
8
|
+
long_description: str = "A Korean cloud hosting and infrastructure provider."
|
|
9
|
+
# {"org_id": "@aut-9952-APNIC", "org_name": null, "country": null, "asns": [9952]}
|
|
10
|
+
# {"asn":9952,"asn_name":"HOSTWAY-AS-KR","org_id":"@aut-9952-APNIC"}
|
|
11
|
+
org_ids: List[str] = [
|
|
12
|
+
"@aut-9952-APNIC",
|
|
13
|
+
]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class HPE(BaseProvider):
|
|
6
|
+
# Hewlett Packard Enterprise Development, L.P.
|
|
7
|
+
v2fly_company: str = "hpe"
|
|
8
|
+
tags: List[str] = ["cloud"]
|
|
9
|
+
short_description: str = "Hewlett Packard Enterprise"
|
|
10
|
+
long_description: str = "A multinational enterprise information technology company that provides servers, storage, networking, and cloud services."
|
|
11
|
+
# {"org_id": "HPE-15-ARIN", "org_name": "HEWLETT PACKARD ENTERPRISE COMPANY", "country": "US", "asns": [157,1033,1034,13481,20096,22149,25867,27510,40617,395714,395992,396063,397363,397957,398199,399185,399610,400054,400624,400737,400763]}
|
|
12
|
+
org_ids: List[str] = [
|
|
13
|
+
"HPE-15-ARIN",
|
|
14
|
+
]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Huawei(BaseProvider):
|
|
6
|
+
v2fly_company: str = "huawei"
|
|
7
|
+
tags: List[str] = ["cloud"]
|
|
8
|
+
short_description: str = "Huawei"
|
|
9
|
+
long_description: str = "A Chinese multinational technology corporation that designs, develops, and sells telecommunications equipment, consumer electronics, and cloud services."
|
|
10
|
+
# {"org_id": "ORG-HIPL2-AP-APNIC", "org_name": "HUAWEI INTERNATIONAL PTE. LTD.", "country": "SG", "asns": [131444,136907,141180,149167,151610]}
|
|
11
|
+
# {"org_id": "ORG-HT57-RIPE", "org_name": "HUAWEI TECHNOLOGIES(UK)CO.,LTD", "country": "GB", "asns": [206798]}
|
|
12
|
+
# {"org_id": "ORG-HT61-RIPE", "org_name": "Huawei Tech(UAE)FZ-LLC", "country": "AE", "asns": [206204]}
|
|
13
|
+
# {"org_id": "ORG-HTB10-RIPE", "org_name": "Huawei Technologies (Netherlands) B.V.", "country": "NL", "asns": [200756]
|
|
14
|
+
org_ids: List[str] = [
|
|
15
|
+
"ORG-HIPL2-AP-APNIC",
|
|
16
|
+
"ORG-HT57-RIPE",
|
|
17
|
+
"ORG-HT61-RIPE",
|
|
18
|
+
"ORG-HTB10-RIPE",
|
|
19
|
+
]
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class IBM(BaseProvider):
|
|
6
|
+
v2fly_company: str = "ibm"
|
|
7
|
+
tags: List[str] = ["cloud"]
|
|
8
|
+
short_description: str = "IBM"
|
|
9
|
+
long_description: str = "A multinational technology corporation that provides hardware, software, cloud computing, and consulting services."
|
|
10
|
+
# {"org_id": "AWDIC-ARIN", "org_name": "Advanced Workstations Division, IBM Corporation", "country": "US", "asns": [706]}
|
|
11
|
+
# {"org_id": "IAD-7-ARIN", "org_name": "IBM AS/400 Division", "country": "US", "asns": [10337]}
|
|
12
|
+
# {"org_id": "IBM-1-ARIN", "org_name": "IBM", "country": "US", "asns": [763,10676,12237,15293,17390,18703,19152,19604,19898,22722,23145,23257,26543,27477,27530,29834,393850,395473]}
|
|
13
|
+
# {"org_id": "IBM-1-Z-ARIN", "org_name": "IBM", "country": "US", "asns": [163,547,1747,1786,1956,1997,2538,3082,3383]}
|
|
14
|
+
# {"org_id": "IBM-43-ARIN", "org_name": "IBM", "country": "US", "asns": [2560]}
|
|
15
|
+
# {"org_id": "IBMC-14-ARIN", "org_name": "IBM Corporation", "country": "US", "asns": [19765]}
|
|
16
|
+
# {"org_id": "IBMC-24-ARIN", "org_name": "IBM Cloud", "country": "US", "asns": [13749,13884,21844,30315,36351,36420,46702,46703,46704]}
|
|
17
|
+
# {"org_id": "IBML-1-ARIN", "org_name": "ibml", "country": "US", "asns": [40847]}
|
|
18
|
+
# {"org_id": "ICNS-4-ARIN", "org_name": "IBM Canada Network Services Company", "country": "CA", "asns": [3059]}
|
|
19
|
+
# {"org_id": "ORG-ACL6-AP-APNIC", "org_name": "FIBMESH IN LIMITED", "country": "IN", "asns": [133082,149779]}
|
|
20
|
+
# {"org_id": "ORG-CIF2-RIPE", "org_name": "COMPAGNIE IBM FRANCE SAS", "country": "FR", "asns": [202213]}
|
|
21
|
+
# {"org_id": "ORG-IBBC1-RIPE", "org_name": "IBM BTO Business Consulting Services Sp. z o.o.", "country": "PL", "asns": [200138]}
|
|
22
|
+
# {"org_id": "ORG-IBMC1-RIPE", "org_name": "INTERNATIONAL BUSINESS MACHINES CORPORATION", "country": "US", "asns": [204764,209394]}
|
|
23
|
+
# {"org_id": "ORG-IBMO1-RIPE", "org_name": "International Business Machines of Belgium Ltd", "country": "BE", "asns": [15776]}
|
|
24
|
+
# {"org_id": "ORG-IBSI1-AP-APNIC", "org_name": "IBM Business Services, Inc", "country": "PH", "asns": [133377]}
|
|
25
|
+
# {"org_id": "ORG-IDG12-RIPE", "org_name": "IBM Deutschland GmbH", "country": "DE", "asns": [214585]}
|
|
26
|
+
# {"org_id": "ORG-IIAT1-RIPE", "org_name": "IBM Israel-Science and technology Ltd.", "country": "IL", "asns": [50995]}
|
|
27
|
+
# {"org_id": "ORG-INZL1-AP-APNIC", "org_name": "IBM New Zealand Limited", "country": "NZ", "asns": [24189]}
|
|
28
|
+
# {"org_id": "ORG-IR9-RIPE", "org_name": "IBM Romania SRL", "country": "RO", "asns": [61179]}
|
|
29
|
+
# {"org_id": "ORG-IRS1-RIPE", "org_name": "IBM Romania S.R.L.", "country": "RO", "asns": [43283]}
|
|
30
|
+
# {"org_id": "ORG-ISPL9-AP-APNIC", "org_name": "IBM Singapore Pte Ltd", "country": "SG", "asns": [10120,134667,135291,136468,138450]}
|
|
31
|
+
# {"org_id": "ORG-IUL5-RIPE", "org_name": "IBM United Kingdom Limited", "country": "GB", "asns": [203652]}
|
|
32
|
+
# {"org_id": "ORG-LS306-RIPE", "org_name": "LTD SibMediaFon", "country": "RU", "asns": [48507]}
|
|
33
|
+
# {"org_id": "ORG-SCG6-RIPE", "org_name": "IBM Deutschland GmbH", "country": "DE", "asns": [50524]}
|
|
34
|
+
org_ids: List[str] = [
|
|
35
|
+
"AWDIC-ARIN",
|
|
36
|
+
"IAD-7-ARIN",
|
|
37
|
+
"IBM-1-ARIN",
|
|
38
|
+
"IBM-1-Z-ARIN",
|
|
39
|
+
"IBM-43-ARIN",
|
|
40
|
+
"IBMC-14-ARIN",
|
|
41
|
+
"IBMC-24-ARIN",
|
|
42
|
+
"IBML-1-ARIN",
|
|
43
|
+
"ICNS-4-ARIN",
|
|
44
|
+
"ORG-ACL6-AP-APNIC",
|
|
45
|
+
"ORG-CIF2-RIPE",
|
|
46
|
+
"ORG-IBBC1-RIPE",
|
|
47
|
+
"ORG-IBMC1-RIPE",
|
|
48
|
+
"ORG-IBMO1-RIPE",
|
|
49
|
+
"ORG-IBSI1-AP-APNIC",
|
|
50
|
+
"ORG-IDG12-RIPE",
|
|
51
|
+
"ORG-IIAT1-RIPE",
|
|
52
|
+
"ORG-INZL1-AP-APNIC",
|
|
53
|
+
"ORG-IR9-RIPE",
|
|
54
|
+
"ORG-IRS1-RIPE",
|
|
55
|
+
"ORG-ISPL9-AP-APNIC",
|
|
56
|
+
"ORG-IUL5-RIPE",
|
|
57
|
+
"ORG-LS306-RIPE",
|
|
58
|
+
"ORG-SCG6-RIPE",
|
|
59
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Imperva(BaseProvider):
|
|
6
|
+
domains: List[str] = ["imperva.com"]
|
|
7
|
+
tags: List[str] = ["waf"]
|
|
8
|
+
short_description: str = "Imperva"
|
|
9
|
+
long_description: str = "A cybersecurity company that provides web application firewall, DDoS protection, and data security solutions."
|
|
10
|
+
# {"org_id": "IMPER-62-ARIN", "org_name": "IMPERVA INC", "country": "US", "asns": [62571]}
|
|
11
|
+
# {"org_id": "INCAP-5-ARIN", "org_name": "Incapsula Inc", "country": "US", "asns": [14960,19551]}
|
|
12
|
+
org_ids: List[str] = [
|
|
13
|
+
"IMPER-62-ARIN",
|
|
14
|
+
"INCAP-5-ARIN",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
_ips_url = "https://my.imperva.com/api/integration/v1/ips"
|
|
18
|
+
|
|
19
|
+
def fetch_cidrs(self):
|
|
20
|
+
response = self.request(self._ips_url)
|
|
21
|
+
ranges = set()
|
|
22
|
+
data = response.json()
|
|
23
|
+
for ipv4 in data.get("ipRanges", []):
|
|
24
|
+
ranges.add(ipv4)
|
|
25
|
+
for ipv6 in data.get("ipv6Ranges", []):
|
|
26
|
+
ranges.add(ipv6)
|
|
27
|
+
return list(ranges)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Kamatera(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cloud"]
|
|
7
|
+
short_description: str = "Kamatera"
|
|
8
|
+
long_description: str = "A cloud infrastructure provider offering virtual private servers, cloud servers, and managed cloud services."
|
|
9
|
+
# {"org_id": "KAMAT-ARIN", "org_name": "Kamatera, Inc.", "country": "US", "asns": [36007,54913,396948,396949]}
|
|
10
|
+
# {"org_id": "ORG-KI35-RIPE", "org_name": "Kamatera Inc", "country": "US", "asns": [41436,204548,210329,215728]}
|
|
11
|
+
# {"org_id": "ORG-KI4-AP-APNIC", "org_name": "Kamatera, Inc.", "country": "US", "asns": [64022]}
|
|
12
|
+
org_ids: List[str] = [
|
|
13
|
+
"KAMAT-ARIN",
|
|
14
|
+
"ORG-KI35-RIPE",
|
|
15
|
+
"ORG-KI4-AP-APNIC",
|
|
16
|
+
]
|
|
17
|
+
domains: List[str] = [
|
|
18
|
+
"kamatera.com",
|
|
19
|
+
]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Kinx(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cdn"]
|
|
7
|
+
short_description: str = "KINX (한국인터넷인프라)"
|
|
8
|
+
long_description: str = (
|
|
9
|
+
"A Korean content delivery network and cloud infrastructure provider."
|
|
10
|
+
)
|
|
11
|
+
# {"org_id": "@aut-9286-APNIC", "org_name": null, "country": null, "asns": [9286,9957,17604]}
|
|
12
|
+
org_ids: List[str] = [
|
|
13
|
+
"@aut-9286-APNIC",
|
|
14
|
+
]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Ktcloud(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cloud"]
|
|
7
|
+
short_description: str = "KT Cloud (KT클라우드)"
|
|
8
|
+
long_description: str = (
|
|
9
|
+
"A Korean cloud computing service provided by KT Corporation."
|
|
10
|
+
)
|
|
11
|
+
# {"asn":9947,"asn_name":"KTC-AS-KR","country":null,"org":null,"org_id":"@aut-152232-APNIC","rir":null,"subnets":["61.100.71.0/24","61.100.72.0/24"]}
|
|
12
|
+
org_ids: List[str] = [
|
|
13
|
+
"@aut-152232-APNIC",
|
|
14
|
+
]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Leaseweb(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cloud"]
|
|
7
|
+
short_description: str = "Leaseweb"
|
|
8
|
+
long_description: str = "A global hosting and cloud infrastructure provider offering dedicated servers, cloud hosting, and CDN services."
|
|
9
|
+
# {"org_id": "LC-1193-ARIN", "org_name": "Leaseweb Canada Inc.", "country": "CA", "asns": [32613,32804,40699]}
|
|
10
|
+
# {"org_id": "LU-76-ARIN", "org_name": "Leaseweb USA, Inc.", "country": "US", "asns": [7203]}
|
|
11
|
+
# {"org_id": "LU-ARIN", "org_name": "Leaseweb USA, Inc.", "country": "US", "asns": [15003,19148,25847,27411,30633,393886,394380,395954,396190,396362]}
|
|
12
|
+
# {"org_id": "ORG-FB8-RIPE", "org_name": "LeaseWeb Network B.V.", "country": "NL", "asns": [16265,38930,60626,202134,203774,203928]}
|
|
13
|
+
# {"org_id": "ORG-LAPL4-AP-APNIC", "org_name": "LEASEWEB AUSTRALIA PTY LIMITED", "country": "AU", "asns": [136988]}
|
|
14
|
+
# {"org_id": "ORG-LAPP1-AP-APNIC", "org_name": "LEASEWEB SINGAPORE PTE. LTD.", "country": "SG", "asns": [59253]}
|
|
15
|
+
# {"org_id": "ORG-LHKL5-AP-APNIC", "org_name": "LEASEWEB HONG KONG LIMITED", "country": "HK", "asns": [133752]}
|
|
16
|
+
# {"org_id": "ORG-LJK1-AP-APNIC", "org_name": "Leaseweb Japan K.K.", "country": "JP", "asns": [134351]}
|
|
17
|
+
# {"org_id": "ORG-LUL9-RIPE", "org_name": "Leaseweb UK Limited", "country": "GB", "asns": [205544]}
|
|
18
|
+
# {"org_id": "ORG-NA8-RIPE", "org_name": "Leaseweb Deutschland GmbH", "country": "DE", "asns": [28753]}
|
|
19
|
+
# {"org_id": "ORG-OB3-RIPE", "org_name": "LeaseWeb Netherlands B.V.", "country": "NL", "asns": [60781]}
|
|
20
|
+
org_ids: List[str] = [
|
|
21
|
+
"LC-1193-ARIN",
|
|
22
|
+
"LU-76-ARIN",
|
|
23
|
+
"LU-ARIN",
|
|
24
|
+
"ORG-FB8-RIPE",
|
|
25
|
+
"ORG-LAPL4-AP-APNIC",
|
|
26
|
+
"ORG-LAPP1-AP-APNIC",
|
|
27
|
+
"ORG-LHKL5-AP-APNIC",
|
|
28
|
+
"ORG-LJK1-AP-APNIC",
|
|
29
|
+
"ORG-LUL9-RIPE",
|
|
30
|
+
"ORG-NA8-RIPE",
|
|
31
|
+
"ORG-OB3-RIPE",
|
|
32
|
+
]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Lgtelecom(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cdn"]
|
|
7
|
+
short_description: str = "LG U+ (LG유플러스)"
|
|
8
|
+
long_description: str = "A Korean telecommunications company offering CDN services."
|
|
9
|
+
# {"org_id": "@aut-17853-APNIC", "org_name": null, "country": null, "asns": [17853]}
|
|
10
|
+
# {"asn":17853,"asn_name":"LGTELECOM-AS-KR","org_id":"@aut-17853-APNIC"}
|
|
11
|
+
org_ids: List[str] = [
|
|
12
|
+
"@aut-17853-APNIC",
|
|
13
|
+
]
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List, Dict
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Microsoft(BaseProvider):
|
|
6
|
+
v2fly_company: str = "microsoft"
|
|
7
|
+
tags: List[str] = ["cloud"]
|
|
8
|
+
short_description: str = "Microsoft"
|
|
9
|
+
long_description: str = "A multinational technology corporation that develops, manufactures, licenses, supports and sells computer software, consumer electronics and personal computers. Known for products like Windows, Office, Azure cloud services, and Xbox."
|
|
10
|
+
# {"org_id": "MSFT-ARIN", "org_name": "Microsoft Corporation", "country": "US", "asns": [3598,5761,6182,6194,6291,6584,8068,8069,8070,8071,8072,8073,8074,8075,12076,13399,13811,14719,14783,17144,17345,20046,22692,23468,25796,26222,30135,30520,30575,31792,32476,36006,40066,46182,54396,63245,63314,395496,395524,395851,396463,397096,397466,397996,398575,398656,398657,398658,398659,398660,398661,398961,400572,400573,400574,400575,400576,400577,400578,400579,400580,400581,400582,400884]}
|
|
11
|
+
# {"org_id": "ORG-MA42-RIPE", "org_name": "Microsoft Limited", "country": "GB", "asns": [35106]}
|
|
12
|
+
# {"org_id": "ORG-MDMG3-RIPE", "org_name": "Microsoft Deutschland MCIO GmbH", "country": "DE", "asns": [200517]}
|
|
13
|
+
# {"org_id": "ORG-MOPL2-AP-APNIC", "org_name": "Microsoft Operations PTE Ltd", "country": "SG", "asns": [132348]}
|
|
14
|
+
# {"org_id": "ORG-MSPL4-AP-APNIC", "org_name": "Microsoft Singapore Pte. Ltd.", "country": "US", "asns": [45139]}
|
|
15
|
+
org_ids: List[str] = [
|
|
16
|
+
"MSFT-ARIN",
|
|
17
|
+
"ORG-MA42-RIPE",
|
|
18
|
+
"ORG-MDMG3-RIPE",
|
|
19
|
+
"ORG-MOPL2-AP-APNIC",
|
|
20
|
+
"ORG-MSPL4-AP-APNIC",
|
|
21
|
+
]
|
|
22
|
+
_bucket_name_regex = r"[a-z0-9][a-z0-9-_\.]{1,61}[a-z0-9]"
|
|
23
|
+
regexes: Dict[str, List[str]] = {
|
|
24
|
+
"STORAGE_BUCKET_NAME": [_bucket_name_regex],
|
|
25
|
+
"STORAGE_BUCKET_HOSTNAME": [
|
|
26
|
+
r"(" + _bucket_name_regex + r")\.(blob\.core\.windows\.net)"
|
|
27
|
+
],
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
_ips_url = "https://download.microsoft.com/download/0/1/8/018E208D-54F8-44CD-AA26-CD7BC9524A8C/PublicIPs_20200824.xml"
|
|
31
|
+
|
|
32
|
+
def fetch_cidrs(self):
|
|
33
|
+
response = self.request(self._ips_url)
|
|
34
|
+
ranges = set()
|
|
35
|
+
for line in response.text.splitlines():
|
|
36
|
+
if "IpRange Subnet" in line:
|
|
37
|
+
ip_range = line.split('"')[1]
|
|
38
|
+
ranges.add(ip_range)
|
|
39
|
+
return list(ranges)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Microsoft365(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cloud"]
|
|
7
|
+
short_description: str = "Microsoft 365"
|
|
8
|
+
long_description: str = "A cloud-based productivity suite provided by Microsoft, including Office applications and cloud services."
|
|
9
|
+
|
|
10
|
+
_ips_url = "https://endpoints.office.com/endpoints/worldwide?clientrequestid=b10c5ed1-bad1-445f-b386-b919946339a7"
|
|
11
|
+
|
|
12
|
+
def fetch_cidrs(self):
|
|
13
|
+
response = self.request(self._ips_url)
|
|
14
|
+
ranges = set()
|
|
15
|
+
if getattr(response, "status_code", 0) == 200:
|
|
16
|
+
response_json = response.json()
|
|
17
|
+
if isinstance(response_json, list):
|
|
18
|
+
for item in response_json:
|
|
19
|
+
if isinstance(item, dict):
|
|
20
|
+
ranges.update(item.get("ips", []))
|
|
21
|
+
return list(ranges)
|
|
22
|
+
|
|
23
|
+
def fetch_domains(self):
|
|
24
|
+
response = self.request(self._ips_url)
|
|
25
|
+
domains = set()
|
|
26
|
+
if getattr(response, "status_code", 0) == 200:
|
|
27
|
+
response_json = response.json()
|
|
28
|
+
if isinstance(response_json, list):
|
|
29
|
+
for item in response_json:
|
|
30
|
+
if isinstance(item, dict):
|
|
31
|
+
for domain in item.get("urls", []):
|
|
32
|
+
domains.add(domain.strip("*."))
|
|
33
|
+
return list(domains)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Navercloud(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cloud"]
|
|
7
|
+
short_description: str = "Naver Cloud Platform (네이버 클라우드 플랫폼)"
|
|
8
|
+
long_description: str = (
|
|
9
|
+
"A Korean cloud computing platform provided by Naver Corporation."
|
|
10
|
+
)
|
|
11
|
+
# "org_id": "@aut-23576-APNIC", "org_name": null, "country": null, "asns": [23576,23982]}
|
|
12
|
+
# {"asn":23576,"asn_name":"nhn-AS-KR","org_id":"@aut-23576-APNIC"}
|
|
13
|
+
org_ids: List[str] = [
|
|
14
|
+
"@aut-23576-APNIC",
|
|
15
|
+
]
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Nhncloud(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cloud"]
|
|
7
|
+
short_description: str = "NHN Cloud (NHN클라우드)"
|
|
8
|
+
long_description: str = (
|
|
9
|
+
"A Korean cloud computing platform provided by NHN Corporation."
|
|
10
|
+
)
|
|
11
|
+
# {"org_id": "@aut-10038-APNIC", "org_name": null, "country": null, "asns": [10038,45974,152291]}
|
|
12
|
+
# {"asn":45974,"asn_name":"NHN-AS-KR","org_id":"@aut-10038-APNIC"}
|
|
13
|
+
org_ids: List[str] = [
|
|
14
|
+
"@aut-10038-APNIC",
|
|
15
|
+
]
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Oracle(BaseProvider):
|
|
6
|
+
v2fly_company: str = "oracle"
|
|
7
|
+
tags: List[str] = ["cloud"]
|
|
8
|
+
short_description: str = "Oracle"
|
|
9
|
+
long_description: str = "A multinational technology corporation that provides database software, cloud engineering systems, and enterprise software products."
|
|
10
|
+
# {"org_id": "ORACLE-4-ARIN", "org_name": "Oracle Corporation", "country": "US", "asns": [90,1630,3457,4184,4191,4192,6142,7160,10884,11049,11479,11506,11625,11887,13832,14506,14544,14919,15135,15179,18837,18916,20037,20054,22435,29976,31898,31925,33517,36282,40921,46403,46558,54253,63295,393218,393314,393676,393773,395010,395738,399966,401341]}
|
|
11
|
+
# {"org_id": "ORACLE-4-Z-ARIN", "org_name": "Oracle Corporation", "country": "US", "asns": [792,793,794,1215,1216,1217,1218,1219]}
|
|
12
|
+
# {"org_id": "ORG-OAI2-RIPE", "org_name": "Oracle America Inc.", "country": "US", "asns": [34135]}
|
|
13
|
+
# {"org_id": "ORG-OC1-AP-APNIC", "org_name": "Oracle Corporation", "country": "US", "asns": [23885,24185,38538,136025]}
|
|
14
|
+
# {"org_id": "ORG-OCMS1-AP-APNIC", "org_name": "ORACLE CUSTOMER MANAGEMENT SOLUTIONS PTY. LTD.", "country": "AU", "asns": [138207]}
|
|
15
|
+
# {"org_id": "ORG-OSA29-RIPE", "org_name": "Oracle Svenska AB", "country": "SE", "asns": [15519,39467,43894,43898,52019,57748,60285,200705,200981,203267,206209]}
|
|
16
|
+
org_ids: List[str] = [
|
|
17
|
+
"ORACLE-4-ARIN",
|
|
18
|
+
"ORACLE-4-Z-ARIN",
|
|
19
|
+
"ORG-OAI2-RIPE",
|
|
20
|
+
"ORG-OC1-AP-APNIC",
|
|
21
|
+
"ORG-OCMS1-AP-APNIC",
|
|
22
|
+
"ORG-OSA29-RIPE",
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
_ips_url = "https://docs.oracle.com/en-us/iaas/tools/public_ip_ranges.json"
|
|
26
|
+
|
|
27
|
+
def fetch_cidrs(self):
|
|
28
|
+
response = self.request(self._ips_url)
|
|
29
|
+
ranges = set()
|
|
30
|
+
for region in response.json()["regions"]:
|
|
31
|
+
for cidr in region["cidrs"]:
|
|
32
|
+
ranges.add(cidr["cidr"])
|
|
33
|
+
return list(ranges)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class OVH(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cloud"]
|
|
7
|
+
short_description: str = "OVHcloud"
|
|
8
|
+
long_description: str = "A French cloud computing company that provides web hosting, dedicated servers, and cloud infrastructure services."
|
|
9
|
+
# {"org_id": "ORG-OS3-RIPE", "org_name": "OVH SAS", "country": "FR", "asns": [16276,35540]}
|
|
10
|
+
org_ids: List[str] = [
|
|
11
|
+
"ORG-OS3-RIPE",
|
|
12
|
+
]
|
|
13
|
+
domains: List[str] = [
|
|
14
|
+
"ovh",
|
|
15
|
+
"ovh.com",
|
|
16
|
+
"ovhcloud.com",
|
|
17
|
+
]
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Qrator(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cdn"]
|
|
7
|
+
short_description: str = "Qrator"
|
|
8
|
+
long_description: str = (
|
|
9
|
+
"A DDoS protection and content delivery network service provider."
|
|
10
|
+
)
|
|
11
|
+
# {"org_id": "ORG-QLCS1-RIPE", "org_name": "Qrator Labs CZ s.r.o.", "country": "CZ", "asns": [200449,209671]}
|
|
12
|
+
# {"org_id": "ORG-QTF1-RIPE", "org_name": "Qrator Technologies FZ-LLC", "country": "AE", "asns": [211112]}
|
|
13
|
+
org_ids: List[str] = [
|
|
14
|
+
"ORG-QLCS1-RIPE",
|
|
15
|
+
"ORG-QTF1-RIPE",
|
|
16
|
+
]
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import ipaddress
|
|
2
|
+
from cloudcheck.providers.base import BaseProvider
|
|
3
|
+
from typing import List
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Quiccloud(BaseProvider):
|
|
7
|
+
v2fly_company: str = ""
|
|
8
|
+
tags: List[str] = ["cdn"]
|
|
9
|
+
short_description: str = "Quic.cloud"
|
|
10
|
+
long_description: str = (
|
|
11
|
+
"A content delivery network and edge computing platform providing CDN services."
|
|
12
|
+
)
|
|
13
|
+
# {"org_id": "QC-329-ARIN", "org_name": "QUIC CLOUD INC.", "country": "US", "asns": [26116]}
|
|
14
|
+
org_ids: List[str] = [
|
|
15
|
+
"QC-329-ARIN",
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
_ips_url = "https://quic.cloud/ips"
|
|
19
|
+
|
|
20
|
+
def fetch_cidrs(self):
|
|
21
|
+
response = self.request(self._ips_url)
|
|
22
|
+
ranges = set()
|
|
23
|
+
if getattr(response, "status_code", 0) == 200:
|
|
24
|
+
text = response.text
|
|
25
|
+
# Strip HTML tags
|
|
26
|
+
text = (
|
|
27
|
+
text.replace("<br>", " ").replace("<br/>", " ").replace("<br />", " ")
|
|
28
|
+
)
|
|
29
|
+
# Split by whitespace
|
|
30
|
+
for token in text.split():
|
|
31
|
+
token = token.strip()
|
|
32
|
+
if token:
|
|
33
|
+
try:
|
|
34
|
+
ipaddress.ip_network(token, strict=False)
|
|
35
|
+
ranges.add(token)
|
|
36
|
+
except ValueError:
|
|
37
|
+
pass
|
|
38
|
+
return list(ranges)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from cloudcheck.providers.base import BaseProvider
|
|
2
|
+
from typing import List
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class Rackspace(BaseProvider):
|
|
6
|
+
tags: List[str] = ["cloud"]
|
|
7
|
+
short_description: str = "Rackspace"
|
|
8
|
+
long_description: str = "A managed cloud computing company that provides hosting, cloud services, and managed infrastructure solutions."
|
|
9
|
+
# {"org_id": "ORG-BEN1-RIPE", "org_name": "D-hosting die Rackspace & Connectivity GmbH", "country": "DE", "asns": [44716]}
|
|
10
|
+
# {"org_id": "ORG-RA33-RIPE", "org_name": "Rackspace Ltd.", "country": "GB", "asns": [15395,39921,44009]}
|
|
11
|
+
# {"org_id": "ORG-RGG2-RIPE", "org_name": "Rackspace Germany GmbH", "country": "DE", "asns": [213735,213740]}
|
|
12
|
+
# {"org_id": "ORG-RHKL1-AP-APNIC", "org_name": "Rackspace.com Hong Kong Limited", "country": "HK", "asns": [45187,58683]}
|
|
13
|
+
# {"org_id": "RACKS-8-ARIN", "org_name": "Rackspace Hosting", "country": "US", "asns": [10532,12200,19994,22720,27357,33070,33439,36248,54636,397485]}
|
|
14
|
+
org_ids: List[str] = [
|
|
15
|
+
"ORG-BEN1-RIPE",
|
|
16
|
+
"ORG-RA33-RIPE",
|
|
17
|
+
"ORG-RGG2-RIPE",
|
|
18
|
+
"ORG-RHKL1-AP-APNIC",
|
|
19
|
+
"RACKS-8-ARIN",
|
|
20
|
+
]
|
|
21
|
+
domains: List[str] = [
|
|
22
|
+
"rackspace.com",
|
|
23
|
+
]
|