|
|
|
@ -105,6 +105,7 @@ namespace nodetool
|
|
|
|
|
command_line::add_arg(desc, arg_p2p_hide_my_port);
|
|
|
|
|
command_line::add_arg(desc, arg_no_sync);
|
|
|
|
|
command_line::add_arg(desc, arg_no_igd);
|
|
|
|
|
command_line::add_arg(desc, arg_igd);
|
|
|
|
|
command_line::add_arg(desc, arg_out_peers);
|
|
|
|
|
command_line::add_arg(desc, arg_in_peers);
|
|
|
|
|
command_line::add_arg(desc, arg_tos_flag);
|
|
|
|
@ -257,7 +258,35 @@ namespace nodetool
|
|
|
|
|
public_zone.m_can_pingback = true;
|
|
|
|
|
m_external_port = command_line::get_arg(vm, arg_p2p_external_port);
|
|
|
|
|
m_allow_local_ip = command_line::get_arg(vm, arg_p2p_allow_local_ip);
|
|
|
|
|
m_no_igd = command_line::get_arg(vm, arg_no_igd);
|
|
|
|
|
const bool has_no_igd = command_line::get_arg(vm, arg_no_igd);
|
|
|
|
|
const std::string sigd = command_line::get_arg(vm, arg_igd);
|
|
|
|
|
if (sigd == "enabled")
|
|
|
|
|
{
|
|
|
|
|
if (has_no_igd)
|
|
|
|
|
{
|
|
|
|
|
MFATAL("Cannot have both --" << arg_no_igd.name << " and --" << arg_igd.name << " enabled");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
m_igd = igd;
|
|
|
|
|
}
|
|
|
|
|
else if (sigd == "disabled")
|
|
|
|
|
{
|
|
|
|
|
m_igd = no_igd;
|
|
|
|
|
}
|
|
|
|
|
else if (sigd == "delayed")
|
|
|
|
|
{
|
|
|
|
|
if (has_no_igd && !command_line::is_arg_defaulted(vm, arg_igd))
|
|
|
|
|
{
|
|
|
|
|
MFATAL("Cannot have both --" << arg_no_igd.name << " and --" << arg_igd.name << " delayed");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
m_igd = has_no_igd ? no_igd : delayed_igd;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
MFATAL("Invalid value for --" << arg_igd.name << ", expected enabled, disabled or delayed");
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
m_offline = command_line::get_arg(vm, cryptonote::arg_offline);
|
|
|
|
|
|
|
|
|
|
if (command_line::has_arg(vm, arg_p2p_add_peer))
|
|
|
|
@ -682,7 +711,7 @@ namespace nodetool
|
|
|
|
|
MDEBUG("External port defined as " << m_external_port);
|
|
|
|
|
|
|
|
|
|
// add UPnP port mapping
|
|
|
|
|
if(!m_no_igd)
|
|
|
|
|
if(m_igd == igd)
|
|
|
|
|
add_upnp_port_mapping(m_listening_port);
|
|
|
|
|
|
|
|
|
|
return res;
|
|
|
|
@ -776,7 +805,7 @@ namespace nodetool
|
|
|
|
|
for(auto& zone : m_network_zones)
|
|
|
|
|
zone.second.m_net_server.deinit_server();
|
|
|
|
|
// remove UPnP port mapping
|
|
|
|
|
if(!m_no_igd)
|
|
|
|
|
if(m_igd == igd)
|
|
|
|
|
delete_upnp_port_mapping(m_listening_port);
|
|
|
|
|
}
|
|
|
|
|
return store_config();
|
|
|
|
@ -1581,8 +1610,17 @@ namespace nodetool
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
const el::Level level = el::Level::Warning;
|
|
|
|
|
MCLOG_RED(level, "global", "No incoming connections - check firewalls/routers allow port " << get_this_peer_port());
|
|
|
|
|
if (m_igd == delayed_igd)
|
|
|
|
|
{
|
|
|
|
|
MWARNING("No incoming connections, trying to setup IGD");
|
|
|
|
|
add_upnp_port_mapping(m_listening_port);
|
|
|
|
|
m_igd = igd;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
const el::Level level = el::Level::Warning;
|
|
|
|
|
MCLOG_RED(level, "global", "No incoming connections - check firewalls/routers allow port " << get_this_peer_port());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|