Add sv_qcache_iprate_limit, sv_qcache_validate_info_challenge
This commit is contained in:
+13
-18
@@ -89,6 +89,8 @@ A2SQCacheTimer g_A2SQCacheTimer;
|
|||||||
SMEXT_LINK(&g_A2SQCache);
|
SMEXT_LINK(&g_A2SQCache);
|
||||||
|
|
||||||
ConVar *g_SvLogging = CreateConVar("sv_qcache_logging", "0", FCVAR_NOTIFY, "Log connection checks.");
|
ConVar *g_SvLogging = CreateConVar("sv_qcache_logging", "0", FCVAR_NOTIFY, "Log connection checks.");
|
||||||
|
ConVar *g_SvIPRateLimit = CreateConVar("sv_qcache_iprate_limit", "1", FCVAR_NOTIFY, "Temporarily ban spam requests.");
|
||||||
|
ConVar *g_SvValidateChallenge = CreateConVar("sv_qcache_validate_info_challenge", "1", FCVAR_NOTIFY, "Check if the a2s_info challenge is valid.");
|
||||||
ConVar *g_SvGameDesc = CreateConVar("sv_gamedesc_override", "default", FCVAR_NOTIFY, "Overwrite the default game description. Set to 'default' to keep default description.");
|
ConVar *g_SvGameDesc = CreateConVar("sv_gamedesc_override", "default", FCVAR_NOTIFY, "Overwrite the default game description. Set to 'default' to keep default description.");
|
||||||
ConVar *g_SvMapName = CreateConVar("sv_mapname_override", "default", FCVAR_NOTIFY, "Overwrite the map name. Set to 'default' to keep default name.");
|
ConVar *g_SvMapName = CreateConVar("sv_mapname_override", "default", FCVAR_NOTIFY, "Overwrite the map name. Set to 'default' to keep default name.");
|
||||||
ConVar *g_SvCountBotsInfo = CreateConVar("sv_count_bots_info", "1", FCVAR_NOTIFY, "Display bots as players in the a2s_info server query. Enable = '1', Disable = '0'");
|
ConVar *g_SvCountBotsInfo = CreateConVar("sv_count_bots_info", "1", FCVAR_NOTIFY, "Display bots as players in the a2s_info server query. Enable = '1', Disable = '0'");
|
||||||
@@ -466,29 +468,22 @@ bool Hook_ProcessConnectionlessPacket(netpacket_t * packet)
|
|||||||
|
|
||||||
switch ( c )
|
switch ( c )
|
||||||
{
|
{
|
||||||
case 0:
|
|
||||||
{
|
|
||||||
if(!CIPRateLimit__CheckIP(s_queryRateChecker, packet->from))
|
|
||||||
{
|
|
||||||
RETURN_META_VALUE(MRES_SUPERCEDE, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
RETURN_META_VALUE(MRES_SUPERCEDE, false);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case A2S_INFO:
|
case A2S_INFO:
|
||||||
{
|
{
|
||||||
if(!CIPRateLimit__CheckIP(s_queryRateChecker, packet->from))
|
if (g_SvIPRateLimit->GetBool() && !CIPRateLimit__CheckIP(s_queryRateChecker, packet->from))
|
||||||
{
|
{
|
||||||
RETURN_META_VALUE(MRES_SUPERCEDE, false);
|
RETURN_META_VALUE(MRES_SUPERCEDE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate challenge
|
if (g_SvValidateChallenge->GetBool())
|
||||||
char nugget[ 64 ];
|
{
|
||||||
if ( !msg.ReadString( nugget, sizeof( nugget ) ) )
|
// Validate challenge
|
||||||
RETURN_META_VALUE(MRES_SUPERCEDE, true);
|
char nugget[ 64 ];
|
||||||
if ( !ValidInfoChallenge( packet->from, nugget ) )
|
if ( !msg.ReadString( nugget, sizeof( nugget ) ) )
|
||||||
RETURN_META_VALUE(MRES_SUPERCEDE, true);
|
RETURN_META_VALUE(MRES_SUPERCEDE, true);
|
||||||
|
if ( !ValidInfoChallenge( packet->from, nugget ) )
|
||||||
|
RETURN_META_VALUE(MRES_SUPERCEDE, true);
|
||||||
|
}
|
||||||
|
|
||||||
SendA2S_Info(packet);
|
SendA2S_Info(packet);
|
||||||
|
|
||||||
@@ -497,7 +492,7 @@ bool Hook_ProcessConnectionlessPacket(netpacket_t * packet)
|
|||||||
}
|
}
|
||||||
case A2S_PLAYER:
|
case A2S_PLAYER:
|
||||||
{
|
{
|
||||||
if(!CIPRateLimit__CheckIP(s_queryRateChecker, packet->from))
|
if (g_SvIPRateLimit->GetBool() && !CIPRateLimit__CheckIP(s_queryRateChecker, packet->from))
|
||||||
{
|
{
|
||||||
RETURN_META_VALUE(MRES_SUPERCEDE, false);
|
RETURN_META_VALUE(MRES_SUPERCEDE, false);
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -39,9 +39,9 @@
|
|||||||
|
|
||||||
/* Basic information exposed publicly */
|
/* Basic information exposed publicly */
|
||||||
#define SMEXT_CONF_NAME "A2SQCache"
|
#define SMEXT_CONF_NAME "A2SQCache"
|
||||||
#define SMEXT_CONF_DESCRIPTION "A2S_INFO+PLAYER cache"
|
#define SMEXT_CONF_DESCRIPTION "A2S_INFO + A2S_PLAYER cache"
|
||||||
#define SMEXT_CONF_VERSION "1.0"
|
#define SMEXT_CONF_VERSION "1.1"
|
||||||
#define SMEXT_CONF_AUTHOR "BotoX"
|
#define SMEXT_CONF_AUTHOR "BotoX, maxime1907"
|
||||||
#define SMEXT_CONF_URL "https://git.botox.bz/CSSZombieEscape/sm-ext-A2SQCache"
|
#define SMEXT_CONF_URL "https://git.botox.bz/CSSZombieEscape/sm-ext-A2SQCache"
|
||||||
#define SMEXT_CONF_LOGTAG "A2SQCACHE"
|
#define SMEXT_CONF_LOGTAG "A2SQCACHE"
|
||||||
#define SMEXT_CONF_LICENSE "GPL"
|
#define SMEXT_CONF_LICENSE "GPL"
|
||||||
|
|||||||
Reference in New Issue
Block a user