1#![cfg_attr(docsrs, feature(doc_cfg))]
61
62pub mod error;
64
65use serde::{Deserialize, Serialize};
66#[cfg(not(target_os = "android"))]
67use std::sync::Once;
68
69#[derive(Debug, Clone, Serialize, Deserialize)]
71pub struct ScanProgress {
72 pub module: String,
73 pub percentage: f32,
74 pub message: String,
75 pub status: String,
76}
77
78#[cfg(not(target_os = "android"))]
79static CRYPTO_PROVIDER_INIT: Once = Once::new();
80
81pub fn http_client_builder() -> reqwest::ClientBuilder {
83 #[cfg(not(target_os = "android"))]
84 {
85 CRYPTO_PROVIDER_INIT.call_once(|| {
86 let _ = rustls::crypto::ring::default_provider().install_default();
87 });
88 }
89
90 reqwest::Client::builder()
91}
92
93pub mod payloads;
95
96#[cfg(feature = "domain-info")]
99#[cfg_attr(docsrs, doc(cfg(feature = "domain-info")))]
100pub mod domain_info;
101
102#[cfg(feature = "domain-info-mobile")]
103#[cfg_attr(docsrs, doc(cfg(feature = "domain-info-mobile")))]
104pub mod domain_info_mobile;
105
106#[cfg(feature = "domain-dns")]
107#[cfg_attr(docsrs, doc(cfg(feature = "domain-dns")))]
108pub mod domain_dns;
109
110#[cfg(feature = "domain-dns-mobile")]
111#[cfg_attr(docsrs, doc(cfg(feature = "domain-dns-mobile")))]
112pub mod domain_dns_mobile;
113
114#[cfg(feature = "seo-analysis")]
115#[cfg_attr(docsrs, doc(cfg(feature = "seo-analysis")))]
116pub mod seo_analysis;
117
118#[cfg(feature = "web-technologies")]
119#[cfg_attr(docsrs, doc(cfg(feature = "web-technologies")))]
120pub mod web_technologies;
121
122#[cfg(feature = "domain-validator")]
123#[cfg_attr(docsrs, doc(cfg(feature = "domain-validator")))]
124pub mod domain_validator;
125
126#[cfg(feature = "domain-validator-mobile")]
127#[cfg_attr(docsrs, doc(cfg(feature = "domain-validator-mobile")))]
128pub mod domain_validator_mobile;
129
130#[cfg(all(
133 feature = "subdomain-discovery",
134 not(any(target_os = "android", target_os = "ios"))
135))]
136#[cfg_attr(docsrs, doc(cfg(feature = "subdomain-discovery")))]
137pub mod subdomain_discovery;
138
139#[cfg(all(
140 feature = "subdomain-discovery",
141 any(target_os = "android", target_os = "ios")
142))]
143#[cfg_attr(docsrs, doc(cfg(feature = "subdomain-discovery-mobile")))]
144pub mod subdomain_discovery_mobile;
145#[cfg(all(
146 feature = "subdomain-discovery",
147 any(target_os = "android", target_os = "ios")
148))]
149pub use subdomain_discovery_mobile as subdomain_discovery;
150
151#[cfg(feature = "contact-spy")]
152#[cfg_attr(docsrs, doc(cfg(feature = "contact-spy")))]
153pub mod contact_spy;
154
155#[cfg(feature = "advanced-content-scanner")]
156#[cfg_attr(docsrs, doc(cfg(feature = "advanced-content-scanner")))]
157pub mod advanced_content_scanner;
158
159#[cfg(feature = "security-analysis")]
162#[cfg_attr(docsrs, doc(cfg(feature = "security-analysis")))]
163pub mod security_analysis;
164
165#[cfg(feature = "security-analysis-mobile")]
166#[cfg_attr(docsrs, doc(cfg(feature = "security-analysis-mobile")))]
167pub mod security_analysis_mobile;
168
169#[cfg(feature = "subdomain-takeover")]
170#[cfg_attr(docsrs, doc(cfg(feature = "subdomain-takeover")))]
171pub mod subdomain_takeover;
172
173#[cfg(feature = "subdomain-takeover-mobile")]
174#[cfg_attr(docsrs, doc(cfg(feature = "subdomain-takeover-mobile")))]
175pub mod subdomain_takeover_mobile;
176
177#[cfg(feature = "cloudflare-bypass")]
178#[cfg_attr(docsrs, doc(cfg(feature = "cloudflare-bypass")))]
179pub mod cloudflare_bypass;
180
181#[cfg(all(
182 feature = "nmap-zero-day",
183 not(any(target_os = "android", target_os = "ios"))
184))]
185#[cfg_attr(docsrs, doc(cfg(feature = "nmap-zero-day")))]
186pub mod nmap_zero_day;
187
188#[cfg(all(
189 feature = "nmap-zero-day",
190 any(target_os = "android", target_os = "ios")
191))]
192#[cfg_attr(docsrs, doc(cfg(feature = "nmap-zero-day-mobile")))]
193pub mod nmap_zero_day_mobile;
194#[cfg(all(
195 feature = "nmap-zero-day",
196 any(target_os = "android", target_os = "ios")
197))]
198pub use nmap_zero_day_mobile as nmap_zero_day;
199
200#[cfg(feature = "api-security-scanner")]
201#[cfg_attr(docsrs, doc(cfg(feature = "api-security-scanner")))]
202pub mod api_security_scanner;
203
204#[cfg(feature = "geo-analysis")]
205#[cfg_attr(docsrs, doc(cfg(feature = "geo-analysis")))]
206pub mod geo_analysis;
207
208#[cfg(feature = "react2shell")]
209#[cfg_attr(docsrs, doc(cfg(feature = "react2shell")))]
210pub mod react;
211
212#[cfg(feature = "react-honeypot")]
213#[cfg_attr(docsrs, doc(cfg(feature = "react-honeypot")))]
214pub mod react_honeypot;