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.
Files changed (55) hide show
  1. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/Cargo.lock +3 -3
  2. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/Cargo.toml +2 -2
  3. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/PKG-INFO +1 -1
  4. cloudcheck-8.2.0/dist/cloudcheck-8.2.0-cp314-cp314-manylinux_2_38_x86_64.whl +0 -0
  5. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/pyproject.toml +1 -1
  6. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/src/lib.rs +26 -5
  7. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/uv.lock +1 -1
  8. cloudcheck-8.1.3/dist/cloudcheck-8.1.3-cp314-cp314-manylinux_2_38_x86_64.whl +0 -0
  9. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/.github/dependabot.yml +0 -0
  10. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/.github/workflows/pipeline-tests.yml +0 -0
  11. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/.github/workflows/python-tests.yml +0 -0
  12. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/.github/workflows/rust-tests.yml +0 -0
  13. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/.gitignore +0 -0
  14. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/README.md +0 -0
  15. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloud_providers.json +0 -0
  16. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloud_providers_v2.json +0 -0
  17. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck/__init__.py +0 -0
  18. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/__init__.py +0 -0
  19. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/cli.py +0 -0
  20. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/helpers.py +0 -0
  21. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/akamai.py +0 -0
  22. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/alibaba.py +0 -0
  23. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/amazon.py +0 -0
  24. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/arvancloud.py +0 -0
  25. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/azure.py +0 -0
  26. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/backblaze.py +0 -0
  27. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/base.py +0 -0
  28. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/cisco.py +0 -0
  29. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/cloudflare.py +0 -0
  30. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/cloudfront.py +0 -0
  31. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/dell.py +0 -0
  32. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/digitalocean.py +0 -0
  33. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/fastly.py +0 -0
  34. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/github.py +0 -0
  35. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/google.py +0 -0
  36. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/heroku.py +0 -0
  37. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/hetzner.py +0 -0
  38. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/hpe.py +0 -0
  39. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/huawei.py +0 -0
  40. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/ibm.py +0 -0
  41. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/imperva.py +0 -0
  42. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/kamatera.py +0 -0
  43. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/oracle.py +0 -0
  44. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/ovh.py +0 -0
  45. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/rackspace.py +0 -0
  46. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/salesforce.py +0 -0
  47. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/scaleway.py +0 -0
  48. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/tencent.py +0 -0
  49. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/wasabi.py +0 -0
  50. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/providers/zoho.py +0 -0
  51. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/cloudcheck_update/test_cloudcheck_update.py +0 -0
  52. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/pytest.ini +0 -0
  53. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/src/main.rs +0 -0
  54. {cloudcheck-8.1.3 → cloudcheck-8.2.0}/src/python.rs +0 -0
  55. {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.1.3"
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.1.2"
884
+ version = "4.2.0"
885
885
  source = "registry+https://github.com/rust-lang/crates.io-index"
886
- checksum = "80958c58de95970f17dcfef05f5f731ea82899e4f977be1b84b2f3fd18560521"
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.1.3"
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.1"
17
+ radixtarget = "4.2"
18
18
 
19
19
  [features]
20
20
  default = []
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cloudcheck
3
- Version: 8.1.3
3
+ Version: 8.2.0
4
4
  Summary: Detailed database of cloud providers. Instantly look up a domain or IP address
5
5
  Requires-Python: >=3.9
6
6
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "cloudcheck"
7
- version = "8.1.3"
7
+ version = "8.2.0"
8
8
  description = "Detailed database of cloud providers. Instantly look up a domain or IP address"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -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/cloudcheck-v8/cloud_providers_v2.json";
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).unwrap(),
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
- let normalized = match radix.get(&domain) {
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(&domain).unwrap(),
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())
@@ -140,7 +140,7 @@ wheels = [
140
140
 
141
141
  [[package]]
142
142
  name = "cloudcheck"
143
- version = "8.1.3"
143
+ version = "8.2.0"
144
144
  source = { editable = "." }
145
145
 
146
146
  [package.dev-dependencies]
File without changes
File without changes
File without changes
File without changes
File without changes