Skip to main content

seer_core/
lib.rs

1/// Declares lazily compiled `static` regexes, one `NAME = r"pattern";` per
2/// entry (doc comments and a visibility may precede each). Patterns are
3/// literals, so an invalid one panics on first use — which every parser's
4/// tests exercise.
5macro_rules! static_regex {
6    ($($(#[$meta:meta])* $vis:vis $name:ident = $re:literal;)+) => {
7        $(
8            $(#[$meta])*
9            $vis static $name: std::sync::LazyLock<regex::Regex> = std::sync::LazyLock::new(|| {
10                regex::Regex::new($re).expect(concat!("invalid regex ", stringify!($name)))
11            });
12        )+
13    };
14}
15
16pub mod audit;
17pub mod availability;
18pub mod bulk;
19pub mod caa;
20pub mod cache;
21#[cfg(feature = "cli")]
22pub mod colors;
23pub mod config;
24pub mod confusables;
25mod dates;
26pub mod diff;
27pub mod dkim;
28pub mod dns;
29#[cfg(feature = "cli")]
30pub mod doctor;
31pub mod domain_info;
32#[cfg(feature = "cli")]
33pub mod drift;
34pub mod error;
35#[cfg(feature = "cli")]
36mod fsutil;
37pub mod grade;
38pub mod headers;
39#[cfg(feature = "cli")]
40pub mod history;
41mod http;
42pub mod https_upgrade;
43#[cfg(feature = "cli")]
44pub mod logging;
45pub mod lookup;
46pub mod net;
47#[cfg(feature = "cli")]
48pub mod output;
49pub mod posture;
50mod psl;
51pub mod rdap;
52pub mod retry;
53pub mod security_txt;
54pub mod ssl;
55pub mod status;
56pub mod subdomains;
57pub mod takeover;
58pub mod tld;
59mod tls;
60pub mod validation;
61#[cfg(feature = "cli")]
62pub mod watchlist;
63#[cfg(feature = "cli")]
64pub mod webhook;
65pub mod whois;
66
67pub use audit::{AuditOptions, AuditReport, Auditor};
68pub use availability::{AvailabilityChecker, AvailabilityResult};
69pub use cache::TtlCache;
70pub use config::SeerConfig;
71pub use error::{Result, SeerError};
72pub use retry::{is_retryable, RetryExecutor, RetryPolicy};
73pub use validation::normalize_domain;
74
75pub use dns::{
76    AuthenticationTier, DnsComparator, DnsComparison, DnsFollower, DnsNameservers, DnsQueryResult,
77    DnsRecord, DnsResolver, DnsStatus, DnsTrace, DnsTracer, DnssecChecker, DnssecReport,
78    FailedType, FollowConfig, FollowIteration, FollowResult, PropagationResult, RecordType,
79    TraceHop, WildcardProbe, MAX_FOLLOW_INTERVAL_SECS, MAX_FOLLOW_ITERATIONS,
80};
81pub use lookup::{LookupProgressCallback, LookupResult, SmartLookup};
82pub use rdap::{RdapClient, RdapResponse};
83pub use status::{CertificateInfo, DnsResolution, DomainExpiration, StatusClient, StatusResponse};
84pub use tld::{all_tlds, lookup_tld, lookup_tld_with, TldInfo};
85pub use whois::{WhoisClient, WhoisResponse};
86
87pub use bulk::{BulkExecutor, BulkOperation, BulkResult};
88pub use caa::{CaaPolicy, CaaRecord, IssuerCaaMatch};
89pub use confusables::{
90    find_confusables, generate_candidates, ConfusableCandidate, ConfusableReport,
91    RegisteredLookalike,
92};
93pub use diff::{DomainDiff, DomainDiffer};
94pub use domain_info::{
95    describe_epp_status, DomainInfo, DomainInfoSource, ExpiryStatus, StatusDescription,
96};
97#[cfg(feature = "cli")]
98pub use drift::{DriftReport, FieldChange};
99pub use headers::{
100    audit_headers, CookieFinding, Disclosure, HeaderFinding, HeaderReport, HeaderVerdict,
101    DEFAULT_HEADER_TIMEOUT,
102};
103#[cfg(feature = "cli")]
104pub use history::{HistoryEntry, LookupHistory};
105#[cfg(feature = "cli")]
106pub use output::{OutputFormat, OutputFormatter};
107pub use posture::{
108    lookup_email_posture, BimiPolicy, DanePolicy, DmarcPolicy, EmailPosture, MailExchangers,
109    MtaStsPolicy, PostureVerdict, SpfPermerror, SpfPolicy,
110};
111pub use ssl::{
112    CertDetail, CertWarning, CertWarningKind, CertWarningSeverity, SslChecker, SslReport,
113};
114pub use subdomains::{
115    classify_subdomains, ClassifiedSubdomain, SubdomainClassification, SubdomainEnumerator,
116    SubdomainResult, SubdomainStatus,
117};
118#[cfg(feature = "cli")]
119pub use subdomains::{SubdomainBaseline, SubdomainBaselineDiff, SubdomainBaselines};
120pub use takeover::{
121    scan_takeover, TakeoverFinding, TakeoverReport, TakeoverVerdict, DEFAULT_TAKEOVER_TIMEOUT,
122};
123#[cfg(feature = "cli")]
124pub use watchlist::{
125    check_watchlist_with, check_watchlist_with_config, WatchReport, WatchResult, Watchlist,
126};