cloudcheck 8.1.3__tar.gz → 8.2.0__tar.gz
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-8.1.3 → cloudcheck-8.2.0}/Cargo.lock +3 -3
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/Cargo.toml +2 -2
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/PKG-INFO +1 -1
- cloudcheck-8.2.0/dist/cloudcheck-8.2.0-cp314-cp314-manylinux_2_38_x86_64.whl +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/pyproject.toml +1 -1
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/src/lib.rs +26 -5
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/uv.lock +1 -1
- cloudcheck-8.1.3/dist/cloudcheck-8.1.3-cp314-cp314-manylinux_2_38_x86_64.whl +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/.github/dependabot.yml +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/.github/workflows/pipeline-tests.yml +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/.github/workflows/python-tests.yml +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/.github/workflows/rust-tests.yml +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/.gitignore +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/README.md +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloud_providers.json +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloud_providers_v2.json +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck/__init__.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/__init__.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/cli.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/helpers.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/akamai.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/alibaba.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/amazon.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/arvancloud.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/azure.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/backblaze.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/base.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/cisco.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/cloudflare.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/cloudfront.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/dell.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/digitalocean.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/fastly.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/github.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/google.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/heroku.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/hetzner.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/hpe.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/huawei.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/ibm.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/imperva.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/kamatera.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/oracle.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/ovh.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/rackspace.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/salesforce.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/scaleway.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/tencent.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/wasabi.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/zoho.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/test_cloudcheck_update.py +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/pytest.ini +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/src/main.rs +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/src/python.rs +0 -0
- {cloudcheck-8.1.3 → cloudcheck-8.2.0}/test_cloudcheck.py +0 -0
|
@@ -56,7 +56,7 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
|
56
56
|
|
|
57
57
|
[[package]]
|
|
58
58
|
name = "cloudcheck"
|
|
59
|
-
version = "8.
|
|
59
|
+
version = "8.2.0"
|
|
60
60
|
dependencies = [
|
|
61
61
|
"openssl",
|
|
62
62
|
"pyo3",
|
|
@@ -881,9 +881,9 @@ checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
|
|
881
881
|
|
|
882
882
|
[[package]]
|
|
883
883
|
name = "radixtarget"
|
|
884
|
-
version = "4.
|
|
884
|
+
version = "4.2.0"
|
|
885
885
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
886
|
-
checksum = "
|
|
886
|
+
checksum = "bbc64e3d7f89cd81c5b90bebc4fc719b215d894d4e664ec2d06c5ebf7a58fa1a"
|
|
887
887
|
dependencies = [
|
|
888
888
|
"idna",
|
|
889
889
|
"ipnet",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "cloudcheck"
|
|
3
|
-
version = "8.
|
|
3
|
+
version = "8.2.0"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
description = "CloudCheck is a simple Rust tool to check whether an IP address or hostname belongs to a cloud provider."
|
|
6
6
|
license = "GPL-3.0"
|
|
@@ -14,7 +14,7 @@ reqwest = { version = "0.12", features = ["json"] }
|
|
|
14
14
|
openssl = { version = "0.10", features = ["vendored"] }
|
|
15
15
|
pyo3 = { version = "0.27", optional = true }
|
|
16
16
|
pyo3-async-runtimes = { version = "0.27", features = ["tokio-runtime"], optional = true }
|
|
17
|
-
radixtarget = "4.
|
|
17
|
+
radixtarget = "4.2"
|
|
18
18
|
|
|
19
19
|
[features]
|
|
20
20
|
default = []
|
|
@@ -9,7 +9,7 @@ use tokio::sync::OnceCell;
|
|
|
9
9
|
#[cfg(feature = "py")]
|
|
10
10
|
mod python;
|
|
11
11
|
|
|
12
|
-
const CLOUDCHECK_SIGNATURE_URL: &str = "https://raw.githubusercontent.com/blacklanternsecurity/cloudcheck/refs/heads/
|
|
12
|
+
const CLOUDCHECK_SIGNATURE_URL: &str = "https://raw.githubusercontent.com/blacklanternsecurity/cloudcheck/refs/heads/stable/cloud_providers_v2.json";
|
|
13
13
|
|
|
14
14
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
15
15
|
pub struct CloudProvider {
|
|
@@ -104,7 +104,7 @@ impl CloudCheck {
|
|
|
104
104
|
let providers_data: HashMap<String, ProviderData> =
|
|
105
105
|
serde_json::from_str(&json_data)?;
|
|
106
106
|
|
|
107
|
-
let mut radix = RadixTarget::new(&[], ScopeMode::Normal)
|
|
107
|
+
let mut radix = RadixTarget::new(&[], ScopeMode::Normal)?;
|
|
108
108
|
let mut providers_map: HashMap<String, Vec<CloudProvider>> = HashMap::new();
|
|
109
109
|
|
|
110
110
|
for (_, provider) in providers_data {
|
|
@@ -116,7 +116,14 @@ impl CloudCheck {
|
|
|
116
116
|
for cidr in provider.cidrs {
|
|
117
117
|
let normalized = match radix.get(&cidr) {
|
|
118
118
|
Some(n) => n,
|
|
119
|
-
None => radix.insert(&cidr)
|
|
119
|
+
None => match radix.insert(&cidr) {
|
|
120
|
+
Ok(Some(n)) => n,
|
|
121
|
+
Ok(None) => continue,
|
|
122
|
+
Err(e) => {
|
|
123
|
+
eprintln!("Error inserting CIDR '{}': {}", cidr, e);
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
},
|
|
120
127
|
};
|
|
121
128
|
providers_map
|
|
122
129
|
.entry(normalized.clone())
|
|
@@ -125,9 +132,23 @@ impl CloudCheck {
|
|
|
125
132
|
}
|
|
126
133
|
|
|
127
134
|
for domain in provider.domains {
|
|
128
|
-
|
|
135
|
+
// Clean domain: strip comments (everything after #) and trim whitespace
|
|
136
|
+
let cleaned_domain = domain.split('#').next().unwrap_or(&domain).trim();
|
|
137
|
+
|
|
138
|
+
if cleaned_domain.is_empty() {
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
let normalized = match radix.get(cleaned_domain) {
|
|
129
143
|
Some(n) => n,
|
|
130
|
-
None => radix.insert(
|
|
144
|
+
None => match radix.insert(cleaned_domain) {
|
|
145
|
+
Ok(Some(n)) => n,
|
|
146
|
+
Ok(None) => continue,
|
|
147
|
+
Err(e) => {
|
|
148
|
+
eprintln!("Error inserting domain '{}': {}", cleaned_domain, e);
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
},
|
|
131
152
|
};
|
|
132
153
|
providers_map
|
|
133
154
|
.entry(normalized.clone())
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|