Merge pull request #7180

56748e1d7 ban lists may now include subnets (moneromooo-monero)
This commit is contained in:
Alexander Blair 2020-12-26 13:42:37 -08:00
commit 5402121323
No known key found for this signature in database
GPG key ID: C64552D877C32479
2 changed files with 20 additions and 8 deletions

View file

@ -694,13 +694,19 @@ bool t_command_parser_executor::ban(const std::vector<std::string>& args)
std::ifstream ifs(ban_list_path.string()); std::ifstream ifs(ban_list_path.string());
for (std::string line; std::getline(ifs, line); ) for (std::string line; std::getline(ifs, line); )
{ {
const expect<epee::net_utils::network_address> parsed_addr = net::get_network_address(line, 0); auto subnet = net::get_ipv4_subnet_address(line);
if (!parsed_addr) if (subnet)
{ {
std::cout << "Invalid IP address: " << line << " - " << parsed_addr.error() << std::endl; ret &= m_executor.ban(subnet->str(), seconds);
continue; continue;
} }
ret &= m_executor.ban(parsed_addr->host_str(), seconds); const expect<epee::net_utils::network_address> parsed_addr = net::get_network_address(line, 0);
if (parsed_addr)
{
ret &= m_executor.ban(parsed_addr->host_str(), seconds);
continue;
}
std::cout << "Invalid IP address or IPv4 subnet: " << line << std::endl;
} }
return ret; return ret;
} }

View file

@ -489,13 +489,19 @@ namespace nodetool
std::istringstream iss(banned_ips); std::istringstream iss(banned_ips);
for (std::string line; std::getline(iss, line); ) for (std::string line; std::getline(iss, line); )
{ {
const expect<epee::net_utils::network_address> parsed_addr = net::get_network_address(line, 0); auto subnet = net::get_ipv4_subnet_address(line);
if (!parsed_addr) if (subnet)
{ {
MERROR("Invalid IP address: " << line << " - " << parsed_addr.error()); block_subnet(*subnet, std::numeric_limits<time_t>::max());
continue; continue;
} }
block_host(*parsed_addr, std::numeric_limits<time_t>::max()); const expect<epee::net_utils::network_address> parsed_addr = net::get_network_address(line, 0);
if (parsed_addr)
{
block_host(*parsed_addr, std::numeric_limits<time_t>::max());
continue;
}
MERROR("Invalid IP address or IPv4 subnet: " << line);
} }
} }