mirror of
https://github.com/PurpleI2P/i2pd
synced 2024-11-10 00:00:29 +03:00
Merge pull request #1879 from wekoq/no_reversed_ports
Don't use reversed port for choise random port. (by whothefuckami)
This commit is contained in:
commit
4156900fb5
@ -202,8 +202,13 @@ namespace i2p
|
||||
|
||||
uint16_t RouterContext::SelectRandomPort () const
|
||||
{
|
||||
uint16_t port = rand () % (30777 - 9111) + 9111; // I2P network ports range
|
||||
if (port == 9150) port = 9151; // Tor browser
|
||||
uint16_t port;
|
||||
do
|
||||
{
|
||||
port = rand () % (30777 - 9111) + 9111; // I2P network ports range
|
||||
}
|
||||
while(i2p::util::net::IsPortInReservedRange(port));
|
||||
|
||||
return port;
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <unordered_set>
|
||||
#include <boost/asio.hpp>
|
||||
|
||||
#include "util.h"
|
||||
@ -487,6 +488,22 @@ namespace net
|
||||
return IsYggdrasilAddress (addr.to_v6 ().to_bytes ().data ());
|
||||
}
|
||||
|
||||
bool IsPortInReservedRange (const uint16_t port) noexcept
|
||||
{
|
||||
// https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers (Feb. 3, 2023) + Tor browser (9150)
|
||||
static const std::unordered_set<uint16_t> reservedPorts{
|
||||
9119,9150,9306,9312,9389,9418,9535,9536,9695,
|
||||
9800,9899,10000,10050,10051,10110,10212,
|
||||
10933,11001,11112,11235,11371,12222,12223,
|
||||
13075,13400,13720,13721,13724,13782,13783,
|
||||
13785,13786,15345,17224,17225,17500,18104,
|
||||
19788,19812,19813,19814,19999,20000,24465,
|
||||
24554,26000,27000,27001,27002,27003,27004,
|
||||
27005,27006,27007,27008,27009,28000};
|
||||
|
||||
return (reservedPorts.find(port) != reservedPorts.end());
|
||||
}
|
||||
|
||||
boost::asio::ip::address_v6 GetYggdrasilAddress ()
|
||||
{
|
||||
#if defined(_WIN32)
|
||||
|
@ -224,6 +224,7 @@ namespace util
|
||||
bool IsLocalAddress (const boost::asio::ip::address& addr);
|
||||
bool IsInReservedRange (const boost::asio::ip::address& host);
|
||||
bool IsYggdrasilAddress (const boost::asio::ip::address& addr);
|
||||
bool IsPortInReservedRange (const uint16_t port) noexcept;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user