Networking Overhaul: Modern packets, buffers, handshake, dispatch & security hardening

See Readme
This commit is contained in:
rtw1x1
2026-02-08 07:35:02 +00:00
parent 0cc595bf09
commit 60ee35e921
142 changed files with 5703 additions and 14494 deletions

View File

@@ -31,11 +31,6 @@ int ping_event_second_cycle = passes_per_sec * 60;
bool g_bNoMoreClient = false;
bool g_bNoRegen = false;
// TRAFFIC_PROFILER
bool g_bTrafficProfileOn = false;
DWORD g_dwTrafficProfileFlushCycle = 3600;
// END_OF_TRAFFIC_PROFILER
int test_server = 0;
bool china_event_server = false;
bool guild_mark_server = true;
@@ -106,6 +101,14 @@ bool g_bCheckMultiHack = true;
int g_iSpamBlockMaxLevel = 10;
int g_iFloodMaxPacketsPerSec = 300;
int g_iFloodMaxConnectionsPerIP = 10;
int g_iFloodMaxGlobalConnections = 8192;
bool g_bFirewallEnable = false;
int g_iFirewallTcpSynLimit = 500;
int g_iFirewallTcpSynBurst = 1000;
void LoadStateUserCount();
void LoadValidCRCList();
bool LoadClientVersion();
@@ -117,11 +120,11 @@ bool g_BlockCharCreation = false;
bool is_string_true(const char * string)
{
bool result = 0;
int result = 0;
if (isnhdigit(*string))
{
str_to_number(result, string);
return result > 0 ? true : false;
return result > 0;
}
else if (LOWER(*string) == 't')
return true;
@@ -603,12 +606,6 @@ void config_init(const string& st_localeServiceName)
continue;
}
TOKEN("traffic_profile")
{
g_bTrafficProfileOn = true;
continue;
}
TOKEN("no_wander")
{
no_wander = true;
@@ -705,6 +702,42 @@ void config_init(const string& st_localeServiceName)
{
str_to_number(g_iSpamBlockMaxLevel, value_string);
}
TOKEN("flood_max_packets_per_sec")
{
str_to_number(g_iFloodMaxPacketsPerSec, value_string);
g_iFloodMaxPacketsPerSec = MAX(50, g_iFloodMaxPacketsPerSec);
}
TOKEN("flood_max_connections_per_ip")
{
str_to_number(g_iFloodMaxConnectionsPerIP, value_string);
g_iFloodMaxConnectionsPerIP = MAX(1, g_iFloodMaxConnectionsPerIP);
}
TOKEN("flood_max_global_connections")
{
str_to_number(g_iFloodMaxGlobalConnections, value_string);
g_iFloodMaxGlobalConnections = MAX(64, g_iFloodMaxGlobalConnections);
}
TOKEN("firewall_enable")
{
str_to_number(g_bFirewallEnable, value_string);
}
TOKEN("firewall_tcp_syn_limit")
{
str_to_number(g_iFirewallTcpSynLimit, value_string);
g_iFirewallTcpSynLimit = MAX(10, g_iFirewallTcpSynLimit);
}
TOKEN("firewall_tcp_syn_burst")
{
str_to_number(g_iFirewallTcpSynBurst, value_string);
g_iFirewallTcpSynBurst = MAX(10, g_iFirewallTcpSynBurst);
}
TOKEN("protect_normal_player")
{
str_to_number(g_protectNormalPlayer, value_string);
@@ -1199,14 +1232,7 @@ bool LoadClientVersion()
void CheckClientVersion()
{
if (LC_IsEurope())
{
g_bCheckClientVersion = true;
}
else
{
g_bCheckClientVersion = false;
}
g_bCheckClientVersion = true;
const DESC_MANAGER::DESC_SET & set = DESC_MANAGER::instance().GetClientSet();
DESC_MANAGER::DESC_SET::const_iterator it = set.begin();