From a5266d4546c444cfd6d36cb63d2df52ce9e689e2 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Thu, 24 Sep 2020 21:11:48 +0300 Subject: [PATCH] net: Add alternative port for onion service This change allows to distinguish incoming Tor connections from others. --- src/chainparamsbase.cpp | 12 ++++++++---- src/chainparamsbase.h | 5 ++++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/chainparamsbase.cpp b/src/chainparamsbase.cpp index f19e72e9ab..603969aaea 100644 --- a/src/chainparamsbase.cpp +++ b/src/chainparamsbase.cpp @@ -37,16 +37,20 @@ const CBaseChainParams& BaseParams() return *globalChainBaseParams; } +/** + * Port numbers for incoming Tor connections (8334, 18334, 38334, 18445) have + * been chosen arbitrarily to keep ranges of used ports tight. + */ std::unique_ptr CreateBaseChainParams(const std::string& chain) { if (chain == CBaseChainParams::MAIN) { - return MakeUnique("", 8332); + return MakeUnique("", 8332, 8334); } else if (chain == CBaseChainParams::TESTNET) { - return MakeUnique("testnet3", 18332); + return MakeUnique("testnet3", 18332, 18334); } else if (chain == CBaseChainParams::SIGNET) { - return MakeUnique("signet", 38332); + return MakeUnique("signet", 38332, 38334); } else if (chain == CBaseChainParams::REGTEST) { - return MakeUnique("regtest", 18443); + return MakeUnique("regtest", 18443, 18445); } throw std::runtime_error(strprintf("%s: Unknown chain %s.", __func__, chain)); } diff --git a/src/chainparamsbase.h b/src/chainparamsbase.h index 9852446b3c..f34df4bfdc 100644 --- a/src/chainparamsbase.h +++ b/src/chainparamsbase.h @@ -27,12 +27,15 @@ public: const std::string& DataDir() const { return strDataDir; } int RPCPort() const { return nRPCPort; } + uint16_t OnionServiceTargetPort() const { return m_onion_service_target_port; } CBaseChainParams() = delete; - CBaseChainParams(const std::string& data_dir, int rpc_port) : nRPCPort(rpc_port), strDataDir(data_dir) {} + CBaseChainParams(const std::string& data_dir, int rpc_port, uint16_t onion_service_target_port) + : nRPCPort(rpc_port), m_onion_service_target_port(onion_service_target_port), strDataDir(data_dir) {} private: int nRPCPort; + const uint16_t m_onion_service_target_port; std::string strDataDir; };