dnsbl: per-zone name/action/duration/reason with %ip%; XLINE notice shows duration + absolute expiry

This commit is contained in:
Jean Chevronnet 2026-08-21 14:14:17 +00:00
parent 1824af5d90
commit b693c5e5df
No known key found for this signature in database
GPG key ID: 439666D63A9477E4
6 changed files with 309 additions and 37 deletions

View file

@ -113,7 +113,7 @@ pub struct Config {
pub amu: AntiMixedCfg, // antimixedutf8 module config
pub resolve_hosts: bool, // reverse-DNS clients on connect (default on)
pub use_resolved_host: bool, // put the resolved hostname in the hostmask (default on)
pub dnsbl_zones: Vec<String>, // DNS blocklist zones to check on connect
pub dnsbl_zones: Vec<crate::modules::dnsbl::DnsblZone>, // DNS blocklists to check on connect
pub dnsbl_action: String, // mark | kline | gline | zline (on a hit)
pub dnsbl_reason: String, // ban reason for a DNSBL hit
pub sasl_server: String, // linked services server that handles SASL ("" = none)
@ -301,8 +301,8 @@ impl Config {
)
}
"dnsbl" | "dnsbl_zone" => {
if !v.is_empty() {
c.dnsbl_zones.push(v.to_string());
if let Some(z) = crate::modules::dnsbl::parse_zone(v) {
c.dnsbl_zones.push(z);
}
}
"dnsbl_action" => c.dnsbl_action = v.to_ascii_lowercase(),