Force relay connections (#1813)

* feat(protections): add force relay servers
* feat(network): add support for non-direct connections
* feat(info): add helpful tooltip to prevent unnecessary bug reports
This commit is contained in:
maybegreat48
2023-07-23 16:47:25 +00:00
committed by GitHub
parent 65a5dbd88e
commit 09a189eb4d
14 changed files with 209 additions and 48 deletions

View File

@ -83,17 +83,30 @@ namespace big
return nullptr;
}
netAddress player::get_ip_address()
rage::netConnectionPeer* player::get_connection_peer()
{
if (auto session_player = get_session_player())
if (auto peer = g_pointers->m_gta.m_get_connection_peer(gta_util::get_network()->m_game_session_ptr->m_net_connection_mgr,
(int)get_session_player()->m_player_data.m_peer_id_2))
return peer;
return nullptr;
}
std::optional<netAddress> player::get_ip_address()
{
if (this == g_player_service->get_self().get() && get_net_data())
return get_net_data()->m_external_ip;
if (auto session_player = get_session_player())
if (auto peer = g_pointers->m_gta.m_get_peer_address(gta_util::get_network()->m_game_session_ptr->m_net_connection_mgr,
(int)get_session_player()->m_player_data.m_peer_id_2))
return netAddress{((rage::netPeerAddress*)peer)->m_external_ip};
if (auto peer = get_connection_peer())
{
if (peer->m_peer_address.m_connection_type != 1)
return std::nullopt;
return {0};
return peer->m_peer_address.m_external_ip;
}
return std::nullopt;
}
uint16_t player::get_port()
@ -101,10 +114,13 @@ namespace big
if (this == g_player_service->get_self().get() && get_net_data())
return get_net_data()->m_external_port;
if (auto session_player = get_session_player())
if (auto peer = g_pointers->m_gta.m_get_peer_address(gta_util::get_network()->m_game_session_ptr->m_net_connection_mgr,
(int)get_session_player()->m_player_data.m_peer_id_2))
return ((rage::netPeerAddress*)peer)->m_external_port;
if (auto peer = get_connection_peer())
{
if (peer->m_peer_address.m_connection_type != 1)
return 0;
return peer->m_peer_address.m_external_port;
}
return 0;
}

View File

@ -12,6 +12,7 @@ namespace rage
class snPlayer;
class snPeer;
class rlGamerInfo;
class netConnectionPeer;
}
namespace big
@ -44,7 +45,8 @@ namespace big
[[nodiscard]] CPlayerInfo* get_player_info() const;
[[nodiscard]] class rage::snPlayer* get_session_player();
[[nodiscard]] class rage::snPeer* get_session_peer();
[[nodiscard]] netAddress get_ip_address();
[[nodiscard]] class rage::netConnectionPeer* get_connection_peer();
[[nodiscard]] std::optional<netAddress> get_ip_address();
[[nodiscard]] uint16_t get_port();
[[nodiscard]] uint8_t id() const;