diff options
| author | tobtoht <tob@featherwallet.org> | 2026-04-26 13:32:06 +0200 |
|---|---|---|
| committer | tobtoht <tob@featherwallet.org> | 2026-04-26 13:32:06 +0200 |
| commit | 987e6d29133a493914a19b660051ca634fbed1d6 (patch) | |
| tree | d62bd2686df5a2b284a3206611cbdace63803c05 /src/p2p | |
| parent | 0f09b7518621044597d4953c8732101b46f3f42e (diff) | |
| download | monzero-core-987e6d29133a493914a19b660051ca634fbed1d6.tar.gz monzero-core-987e6d29133a493914a19b660051ca634fbed1d6.tar.xz monzero-core-987e6d29133a493914a19b660051ca634fbed1d6.zip | |
daemon: remove miniupnp
Diffstat (limited to 'src/p2p')
| -rw-r--r-- | src/p2p/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/p2p/net_node.cpp | 2 | ||||
| -rw-r--r-- | src/p2p/net_node.h | 16 | ||||
| -rw-r--r-- | src/p2p/net_node.inl | 192 |
4 files changed, 5 insertions, 206 deletions
diff --git a/src/p2p/CMakeLists.txt b/src/p2p/CMakeLists.txt index cc408cc3b..cdb440550 100644 --- a/src/p2p/CMakeLists.txt +++ b/src/p2p/CMakeLists.txt @@ -38,7 +38,6 @@ target_link_libraries(p2p version cryptonote_core net - ${UPNP_LIBRARIES} ${Boost_CHRONO_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} diff --git a/src/p2p/net_node.cpp b/src/p2p/net_node.cpp index a06511785..9f0e49f52 100644 --- a/src/p2p/net_node.cpp +++ b/src/p2p/net_node.cpp @@ -162,7 +162,7 @@ namespace nodetool const command_line::arg_descriptor<bool> arg_enable_dns_blocklist = {"enable-dns-blocklist", "Apply realtime blocklist from DNS", false}; const command_line::arg_descriptor<bool> arg_no_igd = {"no-igd", "Disable UPnP port mapping"}; - const command_line::arg_descriptor<std::string> arg_igd = {"igd", "UPnP port mapping (disabled, enabled, delayed)", "delayed"}; + const command_line::arg_descriptor<std::string> arg_igd = {"igd", "UPnP port mapping (disabled)", "disabled"}; const command_line::arg_descriptor<bool> arg_p2p_use_ipv6 = {"p2p-use-ipv6", "Enable IPv6 for p2p", false}; const command_line::arg_descriptor<bool> arg_p2p_ignore_ipv4 = {"p2p-ignore-ipv4", "Ignore unsuccessful IPv4 bind for p2p", false}; const command_line::arg_descriptor<int64_t> arg_out_peers = {"out-peers", "set max number of out peers", -1}; diff --git a/src/p2p/net_node.h b/src/p2p/net_node.h index edd3e31fa..8e3312f29 100644 --- a/src/p2p/net_node.h +++ b/src/p2p/net_node.h @@ -237,12 +237,6 @@ namespace nodetool } }; - enum igd_t - { - no_igd, - igd, - delayed_igd, - }; public: typedef t_payload_net_handler payload_net_handler; @@ -254,7 +248,6 @@ namespace nodetool m_rpc_credits_per_hash(0), m_allow_local_ip(false), m_hide_my_port(false), - m_igd(no_igd), m_offline(false), is_closing(false), m_network_id(), @@ -382,14 +375,6 @@ namespace nodetool bool is_peer_used(const peerlist_entry& peer); bool is_peer_used(const anchor_peerlist_entry& peer); bool is_addr_connected(const epee::net_utils::network_address& peer); - void add_upnp_port_mapping_impl(uint32_t port, bool ipv6=false); - void add_upnp_port_mapping_v4(uint32_t port); - void add_upnp_port_mapping_v6(uint32_t port); - void add_upnp_port_mapping(uint32_t port, bool ipv4=true, bool ipv6=false); - void delete_upnp_port_mapping_impl(uint32_t port, bool ipv6=false); - void delete_upnp_port_mapping_v4(uint32_t port); - void delete_upnp_port_mapping_v6(uint32_t port); - void delete_upnp_port_mapping(uint32_t port); template<class t_callback> bool try_ping(basic_node_data& node_data, p2p_connection_context& context, const t_callback &cb); bool try_get_support_flags(const p2p_connection_context& context, std::function<void(p2p_connection_context&, const uint32_t&)> f); @@ -462,7 +447,6 @@ namespace nodetool uint32_t m_rpc_credits_per_hash; bool m_allow_local_ip; bool m_hide_my_port; - igd_t m_igd; bool m_offline; bool m_use_ipv6; bool m_require_ipv4; diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index fd5271270..3dd3c4af6 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -60,9 +60,6 @@ #include "cryptonote_core/cryptonote_core.h" #include "net/parse.h" -#include <miniupnp/miniupnpc/miniupnpc.h> -#include <miniupnp/miniupnpc/upnpcommands.h> -#include <miniupnp/miniupnpc/upnperrors.h> #undef MONERO_DEFAULT_LOG_CATEGORY #define MONERO_DEFAULT_LOG_CATEGORY "net.p2p" @@ -444,34 +441,8 @@ 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); - 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; + if (!command_line::is_arg_defaulted(vm, arg_igd)) { + MWARNING("UPnP port mapping support was removed. The --igd option is currently non-functional."); } m_offline = command_line::get_arg(vm, cryptonote::arg_offline); m_use_ipv6 = command_line::get_arg(vm, arg_p2p_use_ipv6); @@ -1023,16 +994,6 @@ namespace nodetool if(m_external_port) MDEBUG("External port defined as " << m_external_port); - // add UPnP port mapping - if(m_igd == igd) - { - add_upnp_port_mapping_v4(m_listening_port); - if (m_use_ipv6) - { - add_upnp_port_mapping_v6(m_listening_port_ipv6); - } - } - return res; } //----------------------------------------------------------------------------------- @@ -1114,9 +1075,6 @@ namespace nodetool { for(auto& zone : m_network_zones) zone.second.m_net_server.deinit_server(); - // remove UPnP port mapping - if(m_igd == igd) - delete_upnp_port_mapping(m_listening_port); } return store_config(); } @@ -2212,17 +2170,8 @@ namespace nodetool } else { - 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()); - } + 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; @@ -3081,139 +3030,6 @@ namespace nodetool e.clear(); } - template<class t_payload_net_handler> - void node_server<t_payload_net_handler>::add_upnp_port_mapping_impl(uint32_t port, bool ipv6) // if ipv6 false, do ipv4 - { - std::string ipversion = ipv6 ? "(IPv6)" : "(IPv4)"; - MDEBUG("Attempting to add IGD port mapping " << ipversion << "."); - int result; - const int ipv6_arg = ipv6 ? 1 : 0; - -#if MINIUPNPC_API_VERSION > 13 - // default according to miniupnpc.h - unsigned char ttl = 2; - UPNPDev* deviceList = upnpDiscover(1000, NULL, NULL, 0, ipv6_arg, ttl, &result); -#else - UPNPDev* deviceList = upnpDiscover(1000, NULL, NULL, 0, ipv6_arg, &result); -#endif - UPNPUrls urls; - IGDdatas igdData; - char lanAddress[64]; - result = UPNP_GetValidIGD(deviceList, &urls, &igdData, lanAddress, sizeof lanAddress); - freeUPNPDevlist(deviceList); - if (result > 0) { - if (result == 1) { - std::ostringstream portString; - portString << port; - - // Delete the port mapping before we create it, just in case we have dangling port mapping from the daemon not being shut down correctly - UPNP_DeletePortMapping(urls.controlURL, igdData.first.servicetype, portString.str().c_str(), "TCP", 0); - - int portMappingResult; - portMappingResult = UPNP_AddPortMapping(urls.controlURL, igdData.first.servicetype, portString.str().c_str(), portString.str().c_str(), lanAddress, CRYPTONOTE_NAME, "TCP", 0, "0"); - if (portMappingResult != 0) { - LOG_ERROR("UPNP_AddPortMapping failed, error: " << strupnperror(portMappingResult)); - } else { - MLOG_GREEN(el::Level::Info, "Added IGD port mapping."); - } - } else if (result == 2) { - MWARNING("IGD was found but reported as not connected."); - } else if (result == 3) { - MWARNING("UPnP device was found but not recognized as IGD."); - } else { - MWARNING("UPNP_GetValidIGD returned an unknown result code."); - } - - FreeUPNPUrls(&urls); - } else { - MINFO("No IGD was found."); - } - } - - template<class t_payload_net_handler> - void node_server<t_payload_net_handler>::add_upnp_port_mapping_v4(uint32_t port) - { - add_upnp_port_mapping_impl(port, false); - } - - template<class t_payload_net_handler> - void node_server<t_payload_net_handler>::add_upnp_port_mapping_v6(uint32_t port) - { - add_upnp_port_mapping_impl(port, true); - } - - template<class t_payload_net_handler> - void node_server<t_payload_net_handler>::add_upnp_port_mapping(uint32_t port, bool ipv4, bool ipv6) - { - if (ipv4) add_upnp_port_mapping_v4(port); - if (ipv6) add_upnp_port_mapping_v6(port); - } - - - template<class t_payload_net_handler> - void node_server<t_payload_net_handler>::delete_upnp_port_mapping_impl(uint32_t port, bool ipv6) - { - std::string ipversion = ipv6 ? "(IPv6)" : "(IPv4)"; - MDEBUG("Attempting to delete IGD port mapping " << ipversion << "."); - int result; - const int ipv6_arg = ipv6 ? 1 : 0; -#if MINIUPNPC_API_VERSION > 13 - // default according to miniupnpc.h - unsigned char ttl = 2; - UPNPDev* deviceList = upnpDiscover(1000, NULL, NULL, 0, ipv6_arg, ttl, &result); -#else - UPNPDev* deviceList = upnpDiscover(1000, NULL, NULL, 0, ipv6_arg, &result); -#endif - UPNPUrls urls; - IGDdatas igdData; - char lanAddress[64]; - result = UPNP_GetValidIGD(deviceList, &urls, &igdData, lanAddress, sizeof lanAddress); - freeUPNPDevlist(deviceList); - if (result > 0) { - if (result == 1) { - std::ostringstream portString; - portString << port; - - int portMappingResult; - portMappingResult = UPNP_DeletePortMapping(urls.controlURL, igdData.first.servicetype, portString.str().c_str(), "TCP", 0); - if (portMappingResult != 0) { - LOG_ERROR("UPNP_DeletePortMapping failed, error: " << strupnperror(portMappingResult)); - } else { - MLOG_GREEN(el::Level::Info, "Deleted IGD port mapping."); - } - } else if (result == 2) { - MWARNING("IGD was found but reported as not connected."); - } else if (result == 3) { - MWARNING("UPnP device was found but not recognized as IGD."); - } else { - MWARNING("UPNP_GetValidIGD returned an unknown result code."); - } - - FreeUPNPUrls(&urls); - } else { - MINFO("No IGD was found."); - } - } - - template<class t_payload_net_handler> - void node_server<t_payload_net_handler>::delete_upnp_port_mapping_v4(uint32_t port) - { - delete_upnp_port_mapping_impl(port, false); - } - - template<class t_payload_net_handler> - void node_server<t_payload_net_handler>::delete_upnp_port_mapping_v6(uint32_t port) - { - delete_upnp_port_mapping_impl(port, true); - } - - template<class t_payload_net_handler> - void node_server<t_payload_net_handler>::delete_upnp_port_mapping(uint32_t port) - { - delete_upnp_port_mapping_v4(port); - delete_upnp_port_mapping_v6(port); - } - template<typename t_payload_net_handler> boost::optional<p2p_connection_context_t<typename t_payload_net_handler::connection_context>> node_server<t_payload_net_handler>::socks_connect(network_zone& zone, const epee::net_utils::network_address& remote, epee::net_utils::ssl_support_t ssl_support) |
