Added --p2p-external-port command line parameter

This commit is contained in:
SChernykh 2022-10-28 14:06:26 +02:00
parent 6eacb677a4
commit 65a9574e52
7 changed files with 19 additions and 3 deletions

View file

@ -25,6 +25,7 @@
--rpc-login Specify username[:password] required for Monero RPC server --rpc-login Specify username[:password] required for Monero RPC server
--socks5 Specify IP:port of a SOCKS5 proxy to use for outgoing connections --socks5 Specify IP:port of a SOCKS5 proxy to use for outgoing connections
--no-dns disable DNS queries, use only IP addresses to connect to peers (seed node DNS will be unavailable too) --no-dns disable DNS queries, use only IP addresses to connect to peers (seed node DNS will be unavailable too)
--p2p-external-port port number that your router uses for mapping to your local p2p port. Use it if you are behind a NAT and still want to accept incoming connections
``` ```
### Example command line ### Example command line

View file

@ -50,6 +50,7 @@ void p2pool_usage()
"--rpc-login Specify username[:password] required for Monero RPC server\n" "--rpc-login Specify username[:password] required for Monero RPC server\n"
"--socks5 Specify IP:port of a SOCKS5 proxy to use for outgoing connections\n" "--socks5 Specify IP:port of a SOCKS5 proxy to use for outgoing connections\n"
"--no-dns disable DNS queries, use only IP addresses to connect to peers (seed node DNS will be unavailable too)\n" "--no-dns disable DNS queries, use only IP addresses to connect to peers (seed node DNS will be unavailable too)\n"
"--p2p-external-port port number that your router uses for mapping to your local p2p port. Use it if you are behind a NAT and still want to accept incoming connections\n"
"--help Show this help message\n\n" "--help Show this help message\n\n"
"Example command line:\n\n" "Example command line:\n\n"
"%s --host 127.0.0.1 --rpc-port 18081 --zmq-port 18083 --wallet YOUR_WALLET_ADDRESS --stratum 0.0.0.0:%d --p2p 0.0.0.0:%d\n\n", "%s --host 127.0.0.1 --rpc-port 18081 --zmq-port 18083 --wallet YOUR_WALLET_ADDRESS --stratum 0.0.0.0:%d --p2p 0.0.0.0:%d\n\n",

View file

@ -933,6 +933,12 @@ void P2PServer::show_peers()
LOGINFO(0, "Total: " << n << " peers"); LOGINFO(0, "Total: " << n << " peers");
} }
int P2PServer::listen_port() const
{
const Params& params = m_pool->params();
return params.m_p2pExternalPort ? params.m_p2pExternalPort : m_listenPort;
}
int P2PServer::deserialize_block(const uint8_t* buf, uint32_t size) int P2PServer::deserialize_block(const uint8_t* buf, uint32_t size)
{ {
int result; int result;

View file

@ -138,6 +138,8 @@ public:
void show_peers_async(); void show_peers_async();
size_t peer_list_size() const { MutexLock lock(m_peerListLock); return m_peerList.size(); } size_t peer_list_size() const { MutexLock lock(m_peerListLock); return m_peerList.size(); }
int listen_port() const override;
uint32_t max_outgoing_peers() const { return m_maxOutgoingPeers; } uint32_t max_outgoing_peers() const { return m_maxOutgoingPeers; }
uint32_t max_incoming_peers() const { return m_maxIncomingPeers; } uint32_t max_incoming_peers() const { return m_maxIncomingPeers; }

View file

@ -35,12 +35,12 @@ Params::Params(int argc, char* argv[])
} }
if ((strcmp(argv[i], "--rpc-port") == 0) && (i + 1 < argc)) { if ((strcmp(argv[i], "--rpc-port") == 0) && (i + 1 < argc)) {
m_rpcPort = strtoul(argv[++i], nullptr, 10); m_rpcPort = std::min(std::max(strtoul(argv[++i], nullptr, 10), 1UL), 65535UL);
ok = true; ok = true;
} }
if ((strcmp(argv[i], "--zmq-port") == 0) && (i + 1 < argc)) { if ((strcmp(argv[i], "--zmq-port") == 0) && (i + 1 < argc)) {
m_zmqPort = strtoul(argv[++i], nullptr, 10); m_zmqPort = std::min(std::max(strtoul(argv[++i], nullptr, 10), 1UL), 65535UL);
ok = true; ok = true;
} }
@ -146,6 +146,11 @@ Params::Params(int argc, char* argv[])
ok = true; ok = true;
} }
if ((strcmp(argv[i], "--p2p-external-port") == 0) && (i + 1 < argc)) {
m_p2pExternalPort = std::min(std::max(strtoul(argv[++i], nullptr, 10), 1UL), 65535UL);
ok = true;
}
if (!ok) { if (!ok) {
fprintf(stderr, "Unknown command line parameter %s\n\n", argv[i]); fprintf(stderr, "Unknown command line parameter %s\n\n", argv[i]);
p2pool_usage(); p2pool_usage();

View file

@ -52,6 +52,7 @@ struct Params
std::string m_rpcLogin; std::string m_rpcLogin;
std::string m_socks5Proxy; std::string m_socks5Proxy;
bool m_dns = true; bool m_dns = true;
uint32_t m_p2pExternalPort = 0;
}; };
} // namespace p2pool } // namespace p2pool

View file

@ -42,7 +42,7 @@ public:
uv_loop_t* get_loop() { return &m_loop; } uv_loop_t* get_loop() { return &m_loop; }
int listen_port() const { return m_listenPort; } virtual int listen_port() const { return m_listenPort; }
bool connect_to_peer(bool is_v6, const raw_ip& ip, int port); bool connect_to_peer(bool is_v6, const raw_ip& ip, int port);
virtual void on_connect_failed(bool /*is_v6*/, const raw_ip& /*ip*/, int /*port*/) {} virtual void on_connect_failed(bool /*is_v6*/, const raw_ip& /*ip*/, int /*port*/) {}