From b5667c9f6cca3e4145376de96f0cd1fa9e3ddcc3 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Wed, 20 Jan 2021 15:18:39 +0000 Subject: p2p: allow CIDR notation in DNS blocklist --- src/p2p/net_node.inl | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/p2p') diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index f630a80b2..0f0b4ded4 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -2027,15 +2027,24 @@ namespace nodetool boost::split(ips, record, boost::is_any_of(";")); for (const auto &ip: ips) { + if (ip.empty()) + continue; + auto subnet = net::get_ipv4_subnet_address(ip); + if (subnet) + { + block_subnet(*subnet, DNS_BLOCKLIST_LIFETIME); + ++good; + continue; + } const expect parsed_addr = net::get_network_address(ip, 0); - if (!parsed_addr) + if (parsed_addr) { - MWARNING("Invalid IP address from DNS blocklist: " << ip << " - " << parsed_addr.error()); - ++bad; + block_host(*parsed_addr, DNS_BLOCKLIST_LIFETIME, true); + ++good; continue; } - block_host(*parsed_addr, DNS_BLOCKLIST_LIFETIME, true); - ++good; + MWARNING("Invalid IP address or subnet from DNS blocklist: " << ip << " - " << parsed_addr.error()); + ++bad; } } if (good > 0) -- cgit v1.2.3