mirror of
https://github.com/chatmail/core.git
synced 2026-05-22 16:26:31 +03:00
feat: add wildcard pattern support to provider database
This commit is contained in:
@@ -220,9 +220,9 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
process_dir(Path(sys.argv[1]))
|
process_dir(Path(sys.argv[1]))
|
||||||
|
|
||||||
out_all += "pub(crate) static PROVIDER_DATA: Lazy<HashMap<&'static str, &'static Provider>> = Lazy::new(|| HashMap::from([\n"
|
out_all += "pub(crate) static PROVIDER_DATA: [(&str, &Provider); " + str(len(domains_set)) + "] = [\n";
|
||||||
out_all += out_domains
|
out_all += out_domains
|
||||||
out_all += "]));\n\n"
|
out_all += "];\n\n"
|
||||||
|
|
||||||
out_all += "pub(crate) static PROVIDER_IDS: Lazy<HashMap<&'static str, &'static Provider>> = Lazy::new(|| HashMap::from([\n"
|
out_all += "pub(crate) static PROVIDER_IDS: Lazy<HashMap<&'static str, &'static Provider>> = Lazy::new(|| HashMap::from([\n"
|
||||||
out_all += out_ids
|
out_all += out_ids
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ set -euo pipefail
|
|||||||
export TZ=UTC
|
export TZ=UTC
|
||||||
|
|
||||||
# Provider database revision.
|
# Provider database revision.
|
||||||
REV=18f714cf73d0bdfb8b013fa344494ab80c92b477
|
REV=2f3db24107e4802c2df0aa0a40f0e144006c0a9b
|
||||||
|
|
||||||
CORE_ROOT="$PWD"
|
CORE_ROOT="$PWD"
|
||||||
TMP="$(mktemp -d)"
|
TMP="$(mktemp -d)"
|
||||||
|
|||||||
@@ -215,8 +215,18 @@ pub async fn get_provider_info(
|
|||||||
|
|
||||||
/// Finds a provider in offline database based on domain.
|
/// Finds a provider in offline database based on domain.
|
||||||
pub fn get_provider_by_domain(domain: &str) -> Option<&'static Provider> {
|
pub fn get_provider_by_domain(domain: &str) -> Option<&'static Provider> {
|
||||||
if let Some(provider) = PROVIDER_DATA.get(domain.to_lowercase().as_str()) {
|
let domain = domain.to_lowercase();
|
||||||
return Some(*provider);
|
for (pattern, provider) in PROVIDER_DATA {
|
||||||
|
if let Some(suffix) = pattern.strip_prefix('*') {
|
||||||
|
// Wildcard domain pattern.
|
||||||
|
//
|
||||||
|
// For example, `suffix` is ".hermes.radio" for "*.hermes.radio" pattern.
|
||||||
|
if domain.ends_with(suffix) {
|
||||||
|
return Some(provider);
|
||||||
|
}
|
||||||
|
} else if pattern == domain {
|
||||||
|
return Some(provider);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
None
|
None
|
||||||
@@ -226,33 +236,42 @@ pub fn get_provider_by_domain(domain: &str) -> Option<&'static Provider> {
|
|||||||
///
|
///
|
||||||
/// For security reasons, only Gmail can be configured this way.
|
/// For security reasons, only Gmail can be configured this way.
|
||||||
pub async fn get_provider_by_mx(context: &Context, domain: &str) -> Option<&'static Provider> {
|
pub async fn get_provider_by_mx(context: &Context, domain: &str) -> Option<&'static Provider> {
|
||||||
if let Ok(resolver) = get_resolver() {
|
let Ok(resolver) = get_resolver() else {
|
||||||
let mut fqdn: String = domain.to_string();
|
warn!(context, "Cannot get a resolver to check MX records.");
|
||||||
if !fqdn.ends_with('.') {
|
return None;
|
||||||
fqdn.push('.');
|
};
|
||||||
|
|
||||||
|
let mut fqdn: String = domain.to_string();
|
||||||
|
if !fqdn.ends_with('.') {
|
||||||
|
fqdn.push('.');
|
||||||
|
}
|
||||||
|
|
||||||
|
let Ok(mx_domains) = resolver.mx_lookup(fqdn).await else {
|
||||||
|
warn!(context, "Cannot resolve MX records for {domain:?}.");
|
||||||
|
return None;
|
||||||
|
};
|
||||||
|
|
||||||
|
for (provider_domain_pattern, provider) in PROVIDER_DATA {
|
||||||
|
if provider.id != "gmail" {
|
||||||
|
// MX lookup is limited to Gmail for security reasons
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Ok(mx_domains) = resolver.mx_lookup(fqdn).await {
|
if provider_domain_pattern.starts_with('*') {
|
||||||
for (provider_domain, provider) in &*PROVIDER_DATA {
|
// Skip wildcard patterns.
|
||||||
if provider.id != "gmail" {
|
continue;
|
||||||
// MX lookup is limited to Gmail for security reasons
|
}
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
let provider_fqdn = provider_domain.to_string() + ".";
|
let provider_fqdn = provider_domain_pattern.to_string() + ".";
|
||||||
let provider_fqdn_dot = ".".to_string() + &provider_fqdn;
|
let provider_fqdn_dot = ".".to_string() + &provider_fqdn;
|
||||||
|
|
||||||
for mx_domain in mx_domains.iter() {
|
for mx_domain in mx_domains.iter() {
|
||||||
let mx_domain = mx_domain.exchange().to_lowercase().to_utf8();
|
let mx_domain = mx_domain.exchange().to_lowercase().to_utf8();
|
||||||
|
|
||||||
if mx_domain == provider_fqdn || mx_domain.ends_with(&provider_fqdn_dot) {
|
if mx_domain == provider_fqdn || mx_domain.ends_with(&provider_fqdn_dot) {
|
||||||
return Some(provider);
|
return Some(provider);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
warn!(context, "cannot get a resolver to check MX records.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
None
|
None
|
||||||
|
|||||||
@@ -593,7 +593,7 @@ static P_GMX_NET: Provider = Provider {
|
|||||||
oauth2_authorizer: None,
|
oauth2_authorizer: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
// hermes.radio.md: ac.hermes.radio, ac1.hermes.radio, ac2.hermes.radio, ac3.hermes.radio, ac4.hermes.radio, ac5.hermes.radio, ac6.hermes.radio, ac7.hermes.radio, ac8.hermes.radio, ac9.hermes.radio, ac10.hermes.radio, ac11.hermes.radio, ac12.hermes.radio, ac13.hermes.radio, ac14.hermes.radio, ac15.hermes.radio, ka.hermes.radio, ka1.hermes.radio, ka2.hermes.radio, ka3.hermes.radio, ka4.hermes.radio, ka5.hermes.radio, ka6.hermes.radio, ka7.hermes.radio, ka8.hermes.radio, ka9.hermes.radio, ka10.hermes.radio, ka11.hermes.radio, ka12.hermes.radio, ka13.hermes.radio, ka14.hermes.radio, ka15.hermes.radio, ec.hermes.radio, ec1.hermes.radio, ec2.hermes.radio, ec3.hermes.radio, ec4.hermes.radio, ec5.hermes.radio, ec6.hermes.radio, ec7.hermes.radio, ec8.hermes.radio, ec9.hermes.radio, ec10.hermes.radio, ec11.hermes.radio, ec12.hermes.radio, ec13.hermes.radio, ec14.hermes.radio, ec15.hermes.radio, hermes.radio
|
// hermes.radio.md: *.hermes.radio, *.aco-connexion.org
|
||||||
static P_HERMES_RADIO: Provider = Provider {
|
static P_HERMES_RADIO: Provider = Provider {
|
||||||
id: "hermes.radio",
|
id: "hermes.radio",
|
||||||
status: Status::Ok,
|
status: Status::Ok,
|
||||||
@@ -1608,375 +1608,326 @@ static P_ZOHO: Provider = Provider {
|
|||||||
oauth2_authorizer: None,
|
oauth2_authorizer: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub(crate) static PROVIDER_DATA: Lazy<HashMap<&'static str, &'static Provider>> = Lazy::new(|| {
|
pub(crate) static PROVIDER_DATA: [(&str, &Provider); 318] = [
|
||||||
HashMap::from([
|
("163.com", &P_163),
|
||||||
("163.com", &P_163),
|
("aktivix.org", &P_AKTIVIX_ORG),
|
||||||
("aktivix.org", &P_AKTIVIX_ORG),
|
("aol.com", &P_AOL),
|
||||||
("aol.com", &P_AOL),
|
("arcor.de", &P_ARCOR_DE),
|
||||||
("arcor.de", &P_ARCOR_DE),
|
("autistici.org", &P_AUTISTICI_ORG),
|
||||||
("autistici.org", &P_AUTISTICI_ORG),
|
("delta.blinzeln.de", &P_BLINDZELN_ORG),
|
||||||
("delta.blinzeln.de", &P_BLINDZELN_ORG),
|
("delta.blindzeln.org", &P_BLINDZELN_ORG),
|
||||||
("delta.blindzeln.org", &P_BLINDZELN_ORG),
|
("bluewin.ch", &P_BLUEWIN_CH),
|
||||||
("bluewin.ch", &P_BLUEWIN_CH),
|
("buzon.uy", &P_BUZON_UY),
|
||||||
("buzon.uy", &P_BUZON_UY),
|
("c1.testrun.org", &P_C1_TESTRUN_ORG),
|
||||||
("c1.testrun.org", &P_C1_TESTRUN_ORG),
|
("c2.testrun.org", &P_C2_TESTRUN_ORG),
|
||||||
("c2.testrun.org", &P_C2_TESTRUN_ORG),
|
("c3.testrun.org", &P_C3_TESTRUN_ORG),
|
||||||
("c3.testrun.org", &P_C3_TESTRUN_ORG),
|
("chello.at", &P_CHELLO_AT),
|
||||||
("chello.at", &P_CHELLO_AT),
|
("xfinity.com", &P_COMCAST),
|
||||||
("xfinity.com", &P_COMCAST),
|
("comcast.net", &P_COMCAST),
|
||||||
("comcast.net", &P_COMCAST),
|
("dismail.de", &P_DISMAIL_DE),
|
||||||
("dismail.de", &P_DISMAIL_DE),
|
("disroot.org", &P_DISROOT),
|
||||||
("disroot.org", &P_DISROOT),
|
("e.email", &P_E_EMAIL),
|
||||||
("e.email", &P_E_EMAIL),
|
("espiv.net", &P_ESPIV_NET),
|
||||||
("espiv.net", &P_ESPIV_NET),
|
("example.com", &P_EXAMPLE_COM),
|
||||||
("example.com", &P_EXAMPLE_COM),
|
("example.org", &P_EXAMPLE_COM),
|
||||||
("example.org", &P_EXAMPLE_COM),
|
("example.net", &P_EXAMPLE_COM),
|
||||||
("example.net", &P_EXAMPLE_COM),
|
("123mail.org", &P_FASTMAIL),
|
||||||
("123mail.org", &P_FASTMAIL),
|
("150mail.com", &P_FASTMAIL),
|
||||||
("150mail.com", &P_FASTMAIL),
|
("150ml.com", &P_FASTMAIL),
|
||||||
("150ml.com", &P_FASTMAIL),
|
("16mail.com", &P_FASTMAIL),
|
||||||
("16mail.com", &P_FASTMAIL),
|
("2-mail.com", &P_FASTMAIL),
|
||||||
("2-mail.com", &P_FASTMAIL),
|
("4email.net", &P_FASTMAIL),
|
||||||
("4email.net", &P_FASTMAIL),
|
("50mail.com", &P_FASTMAIL),
|
||||||
("50mail.com", &P_FASTMAIL),
|
("airpost.net", &P_FASTMAIL),
|
||||||
("airpost.net", &P_FASTMAIL),
|
("allmail.net", &P_FASTMAIL),
|
||||||
("allmail.net", &P_FASTMAIL),
|
("bestmail.us", &P_FASTMAIL),
|
||||||
("bestmail.us", &P_FASTMAIL),
|
("cluemail.com", &P_FASTMAIL),
|
||||||
("cluemail.com", &P_FASTMAIL),
|
("elitemail.org", &P_FASTMAIL),
|
||||||
("elitemail.org", &P_FASTMAIL),
|
("emailcorner.net", &P_FASTMAIL),
|
||||||
("emailcorner.net", &P_FASTMAIL),
|
("emailengine.net", &P_FASTMAIL),
|
||||||
("emailengine.net", &P_FASTMAIL),
|
("emailengine.org", &P_FASTMAIL),
|
||||||
("emailengine.org", &P_FASTMAIL),
|
("emailgroups.net", &P_FASTMAIL),
|
||||||
("emailgroups.net", &P_FASTMAIL),
|
("emailplus.org", &P_FASTMAIL),
|
||||||
("emailplus.org", &P_FASTMAIL),
|
("emailuser.net", &P_FASTMAIL),
|
||||||
("emailuser.net", &P_FASTMAIL),
|
("eml.cc", &P_FASTMAIL),
|
||||||
("eml.cc", &P_FASTMAIL),
|
("f-m.fm", &P_FASTMAIL),
|
||||||
("f-m.fm", &P_FASTMAIL),
|
("fast-email.com", &P_FASTMAIL),
|
||||||
("fast-email.com", &P_FASTMAIL),
|
("fast-mail.org", &P_FASTMAIL),
|
||||||
("fast-mail.org", &P_FASTMAIL),
|
("fastem.com", &P_FASTMAIL),
|
||||||
("fastem.com", &P_FASTMAIL),
|
("fastemail.us", &P_FASTMAIL),
|
||||||
("fastemail.us", &P_FASTMAIL),
|
("fastemailer.com", &P_FASTMAIL),
|
||||||
("fastemailer.com", &P_FASTMAIL),
|
("fastest.cc", &P_FASTMAIL),
|
||||||
("fastest.cc", &P_FASTMAIL),
|
("fastimap.com", &P_FASTMAIL),
|
||||||
("fastimap.com", &P_FASTMAIL),
|
("fastmail.cn", &P_FASTMAIL),
|
||||||
("fastmail.cn", &P_FASTMAIL),
|
("fastmail.co.uk", &P_FASTMAIL),
|
||||||
("fastmail.co.uk", &P_FASTMAIL),
|
("fastmail.com", &P_FASTMAIL),
|
||||||
("fastmail.com", &P_FASTMAIL),
|
("fastmail.com.au", &P_FASTMAIL),
|
||||||
("fastmail.com.au", &P_FASTMAIL),
|
("fastmail.de", &P_FASTMAIL),
|
||||||
("fastmail.de", &P_FASTMAIL),
|
("fastmail.es", &P_FASTMAIL),
|
||||||
("fastmail.es", &P_FASTMAIL),
|
("fastmail.fm", &P_FASTMAIL),
|
||||||
("fastmail.fm", &P_FASTMAIL),
|
("fastmail.fr", &P_FASTMAIL),
|
||||||
("fastmail.fr", &P_FASTMAIL),
|
("fastmail.im", &P_FASTMAIL),
|
||||||
("fastmail.im", &P_FASTMAIL),
|
("fastmail.in", &P_FASTMAIL),
|
||||||
("fastmail.in", &P_FASTMAIL),
|
("fastmail.jp", &P_FASTMAIL),
|
||||||
("fastmail.jp", &P_FASTMAIL),
|
("fastmail.mx", &P_FASTMAIL),
|
||||||
("fastmail.mx", &P_FASTMAIL),
|
("fastmail.net", &P_FASTMAIL),
|
||||||
("fastmail.net", &P_FASTMAIL),
|
("fastmail.nl", &P_FASTMAIL),
|
||||||
("fastmail.nl", &P_FASTMAIL),
|
("fastmail.org", &P_FASTMAIL),
|
||||||
("fastmail.org", &P_FASTMAIL),
|
("fastmail.se", &P_FASTMAIL),
|
||||||
("fastmail.se", &P_FASTMAIL),
|
("fastmail.to", &P_FASTMAIL),
|
||||||
("fastmail.to", &P_FASTMAIL),
|
("fastmail.tw", &P_FASTMAIL),
|
||||||
("fastmail.tw", &P_FASTMAIL),
|
("fastmail.uk", &P_FASTMAIL),
|
||||||
("fastmail.uk", &P_FASTMAIL),
|
("fastmail.us", &P_FASTMAIL),
|
||||||
("fastmail.us", &P_FASTMAIL),
|
("fastmailbox.net", &P_FASTMAIL),
|
||||||
("fastmailbox.net", &P_FASTMAIL),
|
("fastmessaging.com", &P_FASTMAIL),
|
||||||
("fastmessaging.com", &P_FASTMAIL),
|
("fea.st", &P_FASTMAIL),
|
||||||
("fea.st", &P_FASTMAIL),
|
("fmail.co.uk", &P_FASTMAIL),
|
||||||
("fmail.co.uk", &P_FASTMAIL),
|
("fmailbox.com", &P_FASTMAIL),
|
||||||
("fmailbox.com", &P_FASTMAIL),
|
("fmgirl.com", &P_FASTMAIL),
|
||||||
("fmgirl.com", &P_FASTMAIL),
|
("fmguy.com", &P_FASTMAIL),
|
||||||
("fmguy.com", &P_FASTMAIL),
|
("ftml.net", &P_FASTMAIL),
|
||||||
("ftml.net", &P_FASTMAIL),
|
("h-mail.us", &P_FASTMAIL),
|
||||||
("h-mail.us", &P_FASTMAIL),
|
("hailmail.net", &P_FASTMAIL),
|
||||||
("hailmail.net", &P_FASTMAIL),
|
("imap-mail.com", &P_FASTMAIL),
|
||||||
("imap-mail.com", &P_FASTMAIL),
|
("imap.cc", &P_FASTMAIL),
|
||||||
("imap.cc", &P_FASTMAIL),
|
("imapmail.org", &P_FASTMAIL),
|
||||||
("imapmail.org", &P_FASTMAIL),
|
("inoutbox.com", &P_FASTMAIL),
|
||||||
("inoutbox.com", &P_FASTMAIL),
|
("internet-e-mail.com", &P_FASTMAIL),
|
||||||
("internet-e-mail.com", &P_FASTMAIL),
|
("internet-mail.org", &P_FASTMAIL),
|
||||||
("internet-mail.org", &P_FASTMAIL),
|
("internetemails.net", &P_FASTMAIL),
|
||||||
("internetemails.net", &P_FASTMAIL),
|
("internetmailing.net", &P_FASTMAIL),
|
||||||
("internetmailing.net", &P_FASTMAIL),
|
("jetemail.net", &P_FASTMAIL),
|
||||||
("jetemail.net", &P_FASTMAIL),
|
("justemail.net", &P_FASTMAIL),
|
||||||
("justemail.net", &P_FASTMAIL),
|
("letterboxes.org", &P_FASTMAIL),
|
||||||
("letterboxes.org", &P_FASTMAIL),
|
("mail-central.com", &P_FASTMAIL),
|
||||||
("mail-central.com", &P_FASTMAIL),
|
("mail-page.com", &P_FASTMAIL),
|
||||||
("mail-page.com", &P_FASTMAIL),
|
("mailandftp.com", &P_FASTMAIL),
|
||||||
("mailandftp.com", &P_FASTMAIL),
|
("mailas.com", &P_FASTMAIL),
|
||||||
("mailas.com", &P_FASTMAIL),
|
("mailbolt.com", &P_FASTMAIL),
|
||||||
("mailbolt.com", &P_FASTMAIL),
|
("mailc.net", &P_FASTMAIL),
|
||||||
("mailc.net", &P_FASTMAIL),
|
("mailcan.com", &P_FASTMAIL),
|
||||||
("mailcan.com", &P_FASTMAIL),
|
("mailforce.net", &P_FASTMAIL),
|
||||||
("mailforce.net", &P_FASTMAIL),
|
("mailftp.com", &P_FASTMAIL),
|
||||||
("mailftp.com", &P_FASTMAIL),
|
("mailhaven.com", &P_FASTMAIL),
|
||||||
("mailhaven.com", &P_FASTMAIL),
|
("mailingaddress.org", &P_FASTMAIL),
|
||||||
("mailingaddress.org", &P_FASTMAIL),
|
("mailite.com", &P_FASTMAIL),
|
||||||
("mailite.com", &P_FASTMAIL),
|
("mailmight.com", &P_FASTMAIL),
|
||||||
("mailmight.com", &P_FASTMAIL),
|
("mailnew.com", &P_FASTMAIL),
|
||||||
("mailnew.com", &P_FASTMAIL),
|
("mailsent.net", &P_FASTMAIL),
|
||||||
("mailsent.net", &P_FASTMAIL),
|
("mailservice.ms", &P_FASTMAIL),
|
||||||
("mailservice.ms", &P_FASTMAIL),
|
("mailup.net", &P_FASTMAIL),
|
||||||
("mailup.net", &P_FASTMAIL),
|
("mailworks.org", &P_FASTMAIL),
|
||||||
("mailworks.org", &P_FASTMAIL),
|
("ml1.net", &P_FASTMAIL),
|
||||||
("ml1.net", &P_FASTMAIL),
|
("mm.st", &P_FASTMAIL),
|
||||||
("mm.st", &P_FASTMAIL),
|
("myfastmail.com", &P_FASTMAIL),
|
||||||
("myfastmail.com", &P_FASTMAIL),
|
("mymacmail.com", &P_FASTMAIL),
|
||||||
("mymacmail.com", &P_FASTMAIL),
|
("nospammail.net", &P_FASTMAIL),
|
||||||
("nospammail.net", &P_FASTMAIL),
|
("ownmail.net", &P_FASTMAIL),
|
||||||
("ownmail.net", &P_FASTMAIL),
|
("petml.com", &P_FASTMAIL),
|
||||||
("petml.com", &P_FASTMAIL),
|
("postinbox.com", &P_FASTMAIL),
|
||||||
("postinbox.com", &P_FASTMAIL),
|
("postpro.net", &P_FASTMAIL),
|
||||||
("postpro.net", &P_FASTMAIL),
|
("proinbox.com", &P_FASTMAIL),
|
||||||
("proinbox.com", &P_FASTMAIL),
|
("promessage.com", &P_FASTMAIL),
|
||||||
("promessage.com", &P_FASTMAIL),
|
("realemail.net", &P_FASTMAIL),
|
||||||
("realemail.net", &P_FASTMAIL),
|
("reallyfast.biz", &P_FASTMAIL),
|
||||||
("reallyfast.biz", &P_FASTMAIL),
|
("reallyfast.info", &P_FASTMAIL),
|
||||||
("reallyfast.info", &P_FASTMAIL),
|
("rushpost.com", &P_FASTMAIL),
|
||||||
("rushpost.com", &P_FASTMAIL),
|
("sent.as", &P_FASTMAIL),
|
||||||
("sent.as", &P_FASTMAIL),
|
("sent.at", &P_FASTMAIL),
|
||||||
("sent.at", &P_FASTMAIL),
|
("sent.com", &P_FASTMAIL),
|
||||||
("sent.com", &P_FASTMAIL),
|
("speedpost.net", &P_FASTMAIL),
|
||||||
("speedpost.net", &P_FASTMAIL),
|
("speedymail.org", &P_FASTMAIL),
|
||||||
("speedymail.org", &P_FASTMAIL),
|
("ssl-mail.com", &P_FASTMAIL),
|
||||||
("ssl-mail.com", &P_FASTMAIL),
|
("swift-mail.com", &P_FASTMAIL),
|
||||||
("swift-mail.com", &P_FASTMAIL),
|
("the-fastest.net", &P_FASTMAIL),
|
||||||
("the-fastest.net", &P_FASTMAIL),
|
("the-quickest.com", &P_FASTMAIL),
|
||||||
("the-quickest.com", &P_FASTMAIL),
|
("theinternetemail.com", &P_FASTMAIL),
|
||||||
("theinternetemail.com", &P_FASTMAIL),
|
("veryfast.biz", &P_FASTMAIL),
|
||||||
("veryfast.biz", &P_FASTMAIL),
|
("veryspeedy.net", &P_FASTMAIL),
|
||||||
("veryspeedy.net", &P_FASTMAIL),
|
("warpmail.net", &P_FASTMAIL),
|
||||||
("warpmail.net", &P_FASTMAIL),
|
("xsmail.com", &P_FASTMAIL),
|
||||||
("xsmail.com", &P_FASTMAIL),
|
("yepmail.net", &P_FASTMAIL),
|
||||||
("yepmail.net", &P_FASTMAIL),
|
("your-mail.com", &P_FASTMAIL),
|
||||||
("your-mail.com", &P_FASTMAIL),
|
("firemail.at", &P_FIREMAIL_DE),
|
||||||
("firemail.at", &P_FIREMAIL_DE),
|
("firemail.de", &P_FIREMAIL_DE),
|
||||||
("firemail.de", &P_FIREMAIL_DE),
|
("five.chat", &P_FIVE_CHAT),
|
||||||
("five.chat", &P_FIVE_CHAT),
|
("freenet.de", &P_FREENET_DE),
|
||||||
("freenet.de", &P_FREENET_DE),
|
("gmail.com", &P_GMAIL),
|
||||||
("gmail.com", &P_GMAIL),
|
("googlemail.com", &P_GMAIL),
|
||||||
("googlemail.com", &P_GMAIL),
|
("google.com", &P_GMAIL),
|
||||||
("google.com", &P_GMAIL),
|
("gmx.net", &P_GMX_NET),
|
||||||
("gmx.net", &P_GMX_NET),
|
("gmx.de", &P_GMX_NET),
|
||||||
("gmx.de", &P_GMX_NET),
|
("gmx.at", &P_GMX_NET),
|
||||||
("gmx.at", &P_GMX_NET),
|
("gmx.ch", &P_GMX_NET),
|
||||||
("gmx.ch", &P_GMX_NET),
|
("gmx.org", &P_GMX_NET),
|
||||||
("gmx.org", &P_GMX_NET),
|
("gmx.eu", &P_GMX_NET),
|
||||||
("gmx.eu", &P_GMX_NET),
|
("gmx.info", &P_GMX_NET),
|
||||||
("gmx.info", &P_GMX_NET),
|
("gmx.biz", &P_GMX_NET),
|
||||||
("gmx.biz", &P_GMX_NET),
|
("gmx.com", &P_GMX_NET),
|
||||||
("gmx.com", &P_GMX_NET),
|
("*.hermes.radio", &P_HERMES_RADIO),
|
||||||
("ac.hermes.radio", &P_HERMES_RADIO),
|
("*.aco-connexion.org", &P_HERMES_RADIO),
|
||||||
("ac1.hermes.radio", &P_HERMES_RADIO),
|
("hey.com", &P_HEY_COM),
|
||||||
("ac2.hermes.radio", &P_HERMES_RADIO),
|
("i.ua", &P_I_UA),
|
||||||
("ac3.hermes.radio", &P_HERMES_RADIO),
|
("i3.net", &P_I3_NET),
|
||||||
("ac4.hermes.radio", &P_HERMES_RADIO),
|
("icloud.com", &P_ICLOUD),
|
||||||
("ac5.hermes.radio", &P_HERMES_RADIO),
|
("me.com", &P_ICLOUD),
|
||||||
("ac6.hermes.radio", &P_HERMES_RADIO),
|
("mac.com", &P_ICLOUD),
|
||||||
("ac7.hermes.radio", &P_HERMES_RADIO),
|
("ik.me", &P_INFOMANIAK_COM),
|
||||||
("ac8.hermes.radio", &P_HERMES_RADIO),
|
("kolst.com", &P_KOLST_COM),
|
||||||
("ac9.hermes.radio", &P_HERMES_RADIO),
|
("kontent.com", &P_KONTENT_COM),
|
||||||
("ac10.hermes.radio", &P_HERMES_RADIO),
|
("mail.de", &P_MAIL_DE),
|
||||||
("ac11.hermes.radio", &P_HERMES_RADIO),
|
("mail.ru", &P_MAIL_RU),
|
||||||
("ac12.hermes.radio", &P_HERMES_RADIO),
|
("inbox.ru", &P_MAIL_RU),
|
||||||
("ac13.hermes.radio", &P_HERMES_RADIO),
|
("internet.ru", &P_MAIL_RU),
|
||||||
("ac14.hermes.radio", &P_HERMES_RADIO),
|
("bk.ru", &P_MAIL_RU),
|
||||||
("ac15.hermes.radio", &P_HERMES_RADIO),
|
("list.ru", &P_MAIL_RU),
|
||||||
("ka.hermes.radio", &P_HERMES_RADIO),
|
("mail2tor.com", &P_MAIL2TOR),
|
||||||
("ka1.hermes.radio", &P_HERMES_RADIO),
|
("mailbox.org", &P_MAILBOX_ORG),
|
||||||
("ka2.hermes.radio", &P_HERMES_RADIO),
|
("secure.mailbox.org", &P_MAILBOX_ORG),
|
||||||
("ka3.hermes.radio", &P_HERMES_RADIO),
|
("mailo.com", &P_MAILO_COM),
|
||||||
("ka4.hermes.radio", &P_HERMES_RADIO),
|
("nauta.cu", &P_NAUTA_CU),
|
||||||
("ka5.hermes.radio", &P_HERMES_RADIO),
|
("naver.com", &P_NAVER),
|
||||||
("ka6.hermes.radio", &P_HERMES_RADIO),
|
("nine.testrun.org", &P_NINE_TESTRUN_ORG),
|
||||||
("ka7.hermes.radio", &P_HERMES_RADIO),
|
("nubo.coop", &P_NUBO_COOP),
|
||||||
("ka8.hermes.radio", &P_HERMES_RADIO),
|
("hotmail.com", &P_OUTLOOK_COM),
|
||||||
("ka9.hermes.radio", &P_HERMES_RADIO),
|
("outlook.com", &P_OUTLOOK_COM),
|
||||||
("ka10.hermes.radio", &P_HERMES_RADIO),
|
("office365.com", &P_OUTLOOK_COM),
|
||||||
("ka11.hermes.radio", &P_HERMES_RADIO),
|
("outlook.com.tr", &P_OUTLOOK_COM),
|
||||||
("ka12.hermes.radio", &P_HERMES_RADIO),
|
("live.com", &P_OUTLOOK_COM),
|
||||||
("ka13.hermes.radio", &P_HERMES_RADIO),
|
("outlook.de", &P_OUTLOOK_COM),
|
||||||
("ka14.hermes.radio", &P_HERMES_RADIO),
|
("ouvaton.org", &P_OUVATON_COOP),
|
||||||
("ka15.hermes.radio", &P_HERMES_RADIO),
|
("posteo.de", &P_POSTEO),
|
||||||
("ec.hermes.radio", &P_HERMES_RADIO),
|
("posteo.af", &P_POSTEO),
|
||||||
("ec1.hermes.radio", &P_HERMES_RADIO),
|
("posteo.at", &P_POSTEO),
|
||||||
("ec2.hermes.radio", &P_HERMES_RADIO),
|
("posteo.be", &P_POSTEO),
|
||||||
("ec3.hermes.radio", &P_HERMES_RADIO),
|
("posteo.ca", &P_POSTEO),
|
||||||
("ec4.hermes.radio", &P_HERMES_RADIO),
|
("posteo.ch", &P_POSTEO),
|
||||||
("ec5.hermes.radio", &P_HERMES_RADIO),
|
("posteo.cl", &P_POSTEO),
|
||||||
("ec6.hermes.radio", &P_HERMES_RADIO),
|
("posteo.co", &P_POSTEO),
|
||||||
("ec7.hermes.radio", &P_HERMES_RADIO),
|
("posteo.co.uk", &P_POSTEO),
|
||||||
("ec8.hermes.radio", &P_HERMES_RADIO),
|
("posteo.com.br", &P_POSTEO),
|
||||||
("ec9.hermes.radio", &P_HERMES_RADIO),
|
("posteo.cr", &P_POSTEO),
|
||||||
("ec10.hermes.radio", &P_HERMES_RADIO),
|
("posteo.cz", &P_POSTEO),
|
||||||
("ec11.hermes.radio", &P_HERMES_RADIO),
|
("posteo.dk", &P_POSTEO),
|
||||||
("ec12.hermes.radio", &P_HERMES_RADIO),
|
("posteo.ee", &P_POSTEO),
|
||||||
("ec13.hermes.radio", &P_HERMES_RADIO),
|
("posteo.es", &P_POSTEO),
|
||||||
("ec14.hermes.radio", &P_HERMES_RADIO),
|
("posteo.eu", &P_POSTEO),
|
||||||
("ec15.hermes.radio", &P_HERMES_RADIO),
|
("posteo.fi", &P_POSTEO),
|
||||||
("hermes.radio", &P_HERMES_RADIO),
|
("posteo.gl", &P_POSTEO),
|
||||||
("hey.com", &P_HEY_COM),
|
("posteo.gr", &P_POSTEO),
|
||||||
("i.ua", &P_I_UA),
|
("posteo.hn", &P_POSTEO),
|
||||||
("i3.net", &P_I3_NET),
|
("posteo.hr", &P_POSTEO),
|
||||||
("icloud.com", &P_ICLOUD),
|
("posteo.hu", &P_POSTEO),
|
||||||
("me.com", &P_ICLOUD),
|
("posteo.ie", &P_POSTEO),
|
||||||
("mac.com", &P_ICLOUD),
|
("posteo.in", &P_POSTEO),
|
||||||
("ik.me", &P_INFOMANIAK_COM),
|
("posteo.is", &P_POSTEO),
|
||||||
("kolst.com", &P_KOLST_COM),
|
("posteo.it", &P_POSTEO),
|
||||||
("kontent.com", &P_KONTENT_COM),
|
("posteo.jp", &P_POSTEO),
|
||||||
("mail.de", &P_MAIL_DE),
|
("posteo.la", &P_POSTEO),
|
||||||
("mail.ru", &P_MAIL_RU),
|
("posteo.li", &P_POSTEO),
|
||||||
("inbox.ru", &P_MAIL_RU),
|
("posteo.lt", &P_POSTEO),
|
||||||
("internet.ru", &P_MAIL_RU),
|
("posteo.lu", &P_POSTEO),
|
||||||
("bk.ru", &P_MAIL_RU),
|
("posteo.me", &P_POSTEO),
|
||||||
("list.ru", &P_MAIL_RU),
|
("posteo.mx", &P_POSTEO),
|
||||||
("mail2tor.com", &P_MAIL2TOR),
|
("posteo.my", &P_POSTEO),
|
||||||
("mailbox.org", &P_MAILBOX_ORG),
|
("posteo.net", &P_POSTEO),
|
||||||
("secure.mailbox.org", &P_MAILBOX_ORG),
|
("posteo.nl", &P_POSTEO),
|
||||||
("mailo.com", &P_MAILO_COM),
|
("posteo.no", &P_POSTEO),
|
||||||
("nauta.cu", &P_NAUTA_CU),
|
("posteo.nz", &P_POSTEO),
|
||||||
("naver.com", &P_NAVER),
|
("posteo.org", &P_POSTEO),
|
||||||
("nine.testrun.org", &P_NINE_TESTRUN_ORG),
|
("posteo.pe", &P_POSTEO),
|
||||||
("nubo.coop", &P_NUBO_COOP),
|
("posteo.pl", &P_POSTEO),
|
||||||
("hotmail.com", &P_OUTLOOK_COM),
|
("posteo.pm", &P_POSTEO),
|
||||||
("outlook.com", &P_OUTLOOK_COM),
|
("posteo.pt", &P_POSTEO),
|
||||||
("office365.com", &P_OUTLOOK_COM),
|
("posteo.ro", &P_POSTEO),
|
||||||
("outlook.com.tr", &P_OUTLOOK_COM),
|
("posteo.ru", &P_POSTEO),
|
||||||
("live.com", &P_OUTLOOK_COM),
|
("posteo.se", &P_POSTEO),
|
||||||
("outlook.de", &P_OUTLOOK_COM),
|
("posteo.sg", &P_POSTEO),
|
||||||
("ouvaton.org", &P_OUVATON_COOP),
|
("posteo.si", &P_POSTEO),
|
||||||
("posteo.de", &P_POSTEO),
|
("posteo.tn", &P_POSTEO),
|
||||||
("posteo.af", &P_POSTEO),
|
("posteo.uk", &P_POSTEO),
|
||||||
("posteo.at", &P_POSTEO),
|
("posteo.us", &P_POSTEO),
|
||||||
("posteo.be", &P_POSTEO),
|
("protonmail.com", &P_PROTONMAIL),
|
||||||
("posteo.ca", &P_POSTEO),
|
("protonmail.ch", &P_PROTONMAIL),
|
||||||
("posteo.ch", &P_POSTEO),
|
("pm.me", &P_PROTONMAIL),
|
||||||
("posteo.cl", &P_POSTEO),
|
("qq.com", &P_QQ),
|
||||||
("posteo.co", &P_POSTEO),
|
("foxmail.com", &P_QQ),
|
||||||
("posteo.co.uk", &P_POSTEO),
|
("riseup.net", &P_RISEUP_NET),
|
||||||
("posteo.com.br", &P_POSTEO),
|
("rogers.com", &P_ROGERS_COM),
|
||||||
("posteo.cr", &P_POSTEO),
|
("sonic.net", &P_SONIC),
|
||||||
("posteo.cz", &P_POSTEO),
|
("systemausfall.org", &P_SYSTEMAUSFALL_ORG),
|
||||||
("posteo.dk", &P_POSTEO),
|
("solidaris.me", &P_SYSTEMAUSFALL_ORG),
|
||||||
("posteo.ee", &P_POSTEO),
|
("systemli.org", &P_SYSTEMLI_ORG),
|
||||||
("posteo.es", &P_POSTEO),
|
("t-online.de", &P_T_ONLINE),
|
||||||
("posteo.eu", &P_POSTEO),
|
("magenta.de", &P_T_ONLINE),
|
||||||
("posteo.fi", &P_POSTEO),
|
("testrun.org", &P_TESTRUN),
|
||||||
("posteo.gl", &P_POSTEO),
|
("tiscali.it", &P_TISCALI_IT),
|
||||||
("posteo.gr", &P_POSTEO),
|
("tutanota.com", &P_TUTANOTA),
|
||||||
("posteo.hn", &P_POSTEO),
|
("tutanota.de", &P_TUTANOTA),
|
||||||
("posteo.hr", &P_POSTEO),
|
("tutamail.com", &P_TUTANOTA),
|
||||||
("posteo.hu", &P_POSTEO),
|
("tuta.io", &P_TUTANOTA),
|
||||||
("posteo.ie", &P_POSTEO),
|
("keemail.me", &P_TUTANOTA),
|
||||||
("posteo.in", &P_POSTEO),
|
("ukr.net", &P_UKR_NET),
|
||||||
("posteo.is", &P_POSTEO),
|
("undernet.uy", &P_UNDERNET_UY),
|
||||||
("posteo.it", &P_POSTEO),
|
("vfemail.net", &P_VFEMAIL),
|
||||||
("posteo.jp", &P_POSTEO),
|
("vivaldi.net", &P_VIVALDI),
|
||||||
("posteo.la", &P_POSTEO),
|
("vodafone.de", &P_VODAFONE_DE),
|
||||||
("posteo.li", &P_POSTEO),
|
("vodafonemail.de", &P_VODAFONE_DE),
|
||||||
("posteo.lt", &P_POSTEO),
|
("web.de", &P_WEB_DE),
|
||||||
("posteo.lu", &P_POSTEO),
|
("email.de", &P_WEB_DE),
|
||||||
("posteo.me", &P_POSTEO),
|
("flirt.ms", &P_WEB_DE),
|
||||||
("posteo.mx", &P_POSTEO),
|
("hallo.ms", &P_WEB_DE),
|
||||||
("posteo.my", &P_POSTEO),
|
("kuss.ms", &P_WEB_DE),
|
||||||
("posteo.net", &P_POSTEO),
|
("love.ms", &P_WEB_DE),
|
||||||
("posteo.nl", &P_POSTEO),
|
("magic.ms", &P_WEB_DE),
|
||||||
("posteo.no", &P_POSTEO),
|
("singles.ms", &P_WEB_DE),
|
||||||
("posteo.nz", &P_POSTEO),
|
("cool.ms", &P_WEB_DE),
|
||||||
("posteo.org", &P_POSTEO),
|
("kanzler.ms", &P_WEB_DE),
|
||||||
("posteo.pe", &P_POSTEO),
|
("okay.ms", &P_WEB_DE),
|
||||||
("posteo.pl", &P_POSTEO),
|
("party.ms", &P_WEB_DE),
|
||||||
("posteo.pm", &P_POSTEO),
|
("pop.ms", &P_WEB_DE),
|
||||||
("posteo.pt", &P_POSTEO),
|
("stars.ms", &P_WEB_DE),
|
||||||
("posteo.ro", &P_POSTEO),
|
("techno.ms", &P_WEB_DE),
|
||||||
("posteo.ru", &P_POSTEO),
|
("clever.ms", &P_WEB_DE),
|
||||||
("posteo.se", &P_POSTEO),
|
("deutschland.ms", &P_WEB_DE),
|
||||||
("posteo.sg", &P_POSTEO),
|
("genial.ms", &P_WEB_DE),
|
||||||
("posteo.si", &P_POSTEO),
|
("ich.ms", &P_WEB_DE),
|
||||||
("posteo.tn", &P_POSTEO),
|
("online.ms", &P_WEB_DE),
|
||||||
("posteo.uk", &P_POSTEO),
|
("smart.ms", &P_WEB_DE),
|
||||||
("posteo.us", &P_POSTEO),
|
("wichtig.ms", &P_WEB_DE),
|
||||||
("protonmail.com", &P_PROTONMAIL),
|
("action.ms", &P_WEB_DE),
|
||||||
("protonmail.ch", &P_PROTONMAIL),
|
("fussball.ms", &P_WEB_DE),
|
||||||
("pm.me", &P_PROTONMAIL),
|
("joker.ms", &P_WEB_DE),
|
||||||
("qq.com", &P_QQ),
|
("planet.ms", &P_WEB_DE),
|
||||||
("foxmail.com", &P_QQ),
|
("power.ms", &P_WEB_DE),
|
||||||
("riseup.net", &P_RISEUP_NET),
|
("yahoo.com", &P_YAHOO),
|
||||||
("rogers.com", &P_ROGERS_COM),
|
("yahoo.de", &P_YAHOO),
|
||||||
("sonic.net", &P_SONIC),
|
("yahoo.it", &P_YAHOO),
|
||||||
("systemausfall.org", &P_SYSTEMAUSFALL_ORG),
|
("yahoo.fr", &P_YAHOO),
|
||||||
("solidaris.me", &P_SYSTEMAUSFALL_ORG),
|
("yahoo.es", &P_YAHOO),
|
||||||
("systemli.org", &P_SYSTEMLI_ORG),
|
("yahoo.se", &P_YAHOO),
|
||||||
("t-online.de", &P_T_ONLINE),
|
("yahoo.co.uk", &P_YAHOO),
|
||||||
("magenta.de", &P_T_ONLINE),
|
("yahoo.co.nz", &P_YAHOO),
|
||||||
("testrun.org", &P_TESTRUN),
|
("yahoo.com.au", &P_YAHOO),
|
||||||
("tiscali.it", &P_TISCALI_IT),
|
("yahoo.com.ar", &P_YAHOO),
|
||||||
("tutanota.com", &P_TUTANOTA),
|
("yahoo.com.br", &P_YAHOO),
|
||||||
("tutanota.de", &P_TUTANOTA),
|
("yahoo.com.mx", &P_YAHOO),
|
||||||
("tutamail.com", &P_TUTANOTA),
|
("ymail.com", &P_YAHOO),
|
||||||
("tuta.io", &P_TUTANOTA),
|
("rocketmail.com", &P_YAHOO),
|
||||||
("keemail.me", &P_TUTANOTA),
|
("yahoodns.net", &P_YAHOO),
|
||||||
("ukr.net", &P_UKR_NET),
|
("yandex.com", &P_YANDEX_RU),
|
||||||
("undernet.uy", &P_UNDERNET_UY),
|
("yandex.by", &P_YANDEX_RU),
|
||||||
("vfemail.net", &P_VFEMAIL),
|
("yandex.kz", &P_YANDEX_RU),
|
||||||
("vivaldi.net", &P_VIVALDI),
|
("yandex.ru", &P_YANDEX_RU),
|
||||||
("vodafone.de", &P_VODAFONE_DE),
|
("yandex.ua", &P_YANDEX_RU),
|
||||||
("vodafonemail.de", &P_VODAFONE_DE),
|
("ya.ru", &P_YANDEX_RU),
|
||||||
("web.de", &P_WEB_DE),
|
("narod.ru", &P_YANDEX_RU),
|
||||||
("email.de", &P_WEB_DE),
|
("yggmail", &P_YGGMAIL),
|
||||||
("flirt.ms", &P_WEB_DE),
|
("ziggo.nl", &P_ZIGGO_NL),
|
||||||
("hallo.ms", &P_WEB_DE),
|
("zohomail.eu", &P_ZOHO),
|
||||||
("kuss.ms", &P_WEB_DE),
|
("zohomail.com", &P_ZOHO),
|
||||||
("love.ms", &P_WEB_DE),
|
("zoho.com", &P_ZOHO),
|
||||||
("magic.ms", &P_WEB_DE),
|
];
|
||||||
("singles.ms", &P_WEB_DE),
|
|
||||||
("cool.ms", &P_WEB_DE),
|
|
||||||
("kanzler.ms", &P_WEB_DE),
|
|
||||||
("okay.ms", &P_WEB_DE),
|
|
||||||
("party.ms", &P_WEB_DE),
|
|
||||||
("pop.ms", &P_WEB_DE),
|
|
||||||
("stars.ms", &P_WEB_DE),
|
|
||||||
("techno.ms", &P_WEB_DE),
|
|
||||||
("clever.ms", &P_WEB_DE),
|
|
||||||
("deutschland.ms", &P_WEB_DE),
|
|
||||||
("genial.ms", &P_WEB_DE),
|
|
||||||
("ich.ms", &P_WEB_DE),
|
|
||||||
("online.ms", &P_WEB_DE),
|
|
||||||
("smart.ms", &P_WEB_DE),
|
|
||||||
("wichtig.ms", &P_WEB_DE),
|
|
||||||
("action.ms", &P_WEB_DE),
|
|
||||||
("fussball.ms", &P_WEB_DE),
|
|
||||||
("joker.ms", &P_WEB_DE),
|
|
||||||
("planet.ms", &P_WEB_DE),
|
|
||||||
("power.ms", &P_WEB_DE),
|
|
||||||
("yahoo.com", &P_YAHOO),
|
|
||||||
("yahoo.de", &P_YAHOO),
|
|
||||||
("yahoo.it", &P_YAHOO),
|
|
||||||
("yahoo.fr", &P_YAHOO),
|
|
||||||
("yahoo.es", &P_YAHOO),
|
|
||||||
("yahoo.se", &P_YAHOO),
|
|
||||||
("yahoo.co.uk", &P_YAHOO),
|
|
||||||
("yahoo.co.nz", &P_YAHOO),
|
|
||||||
("yahoo.com.au", &P_YAHOO),
|
|
||||||
("yahoo.com.ar", &P_YAHOO),
|
|
||||||
("yahoo.com.br", &P_YAHOO),
|
|
||||||
("yahoo.com.mx", &P_YAHOO),
|
|
||||||
("ymail.com", &P_YAHOO),
|
|
||||||
("rocketmail.com", &P_YAHOO),
|
|
||||||
("yahoodns.net", &P_YAHOO),
|
|
||||||
("yandex.com", &P_YANDEX_RU),
|
|
||||||
("yandex.by", &P_YANDEX_RU),
|
|
||||||
("yandex.kz", &P_YANDEX_RU),
|
|
||||||
("yandex.ru", &P_YANDEX_RU),
|
|
||||||
("yandex.ua", &P_YANDEX_RU),
|
|
||||||
("ya.ru", &P_YANDEX_RU),
|
|
||||||
("narod.ru", &P_YANDEX_RU),
|
|
||||||
("yggmail", &P_YGGMAIL),
|
|
||||||
("ziggo.nl", &P_ZIGGO_NL),
|
|
||||||
("zohomail.eu", &P_ZOHO),
|
|
||||||
("zohomail.com", &P_ZOHO),
|
|
||||||
("zoho.com", &P_ZOHO),
|
|
||||||
])
|
|
||||||
});
|
|
||||||
|
|
||||||
pub(crate) static PROVIDER_IDS: Lazy<HashMap<&'static str, &'static Provider>> = Lazy::new(|| {
|
pub(crate) static PROVIDER_IDS: Lazy<HashMap<&'static str, &'static Provider>> = Lazy::new(|| {
|
||||||
HashMap::from([
|
HashMap::from([
|
||||||
@@ -2050,4 +2001,4 @@ pub(crate) static PROVIDER_IDS: Lazy<HashMap<&'static str, &'static Provider>> =
|
|||||||
});
|
});
|
||||||
|
|
||||||
pub static _PROVIDER_UPDATED: Lazy<chrono::NaiveDate> =
|
pub static _PROVIDER_UPDATED: Lazy<chrono::NaiveDate> =
|
||||||
Lazy::new(|| chrono::NaiveDate::from_ymd_opt(2023, 11, 5).unwrap());
|
Lazy::new(|| chrono::NaiveDate::from_ymd_opt(2024, 2, 5).unwrap());
|
||||||
|
|||||||
Reference in New Issue
Block a user