From ef7c201cc81563f154c003b7bef26318d4ba11df Mon Sep 17 00:00:00 2001 From: Kyle Sanderson Date: Thu, 27 Dec 2018 22:47:18 -0800 Subject: [PATCH] Patch-up InternalFilterCommandTarget during connection phase. --- core/PlayerManager.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/core/PlayerManager.cpp b/core/PlayerManager.cpp index 97226ed4f1..e636f1c06d 100644 --- a/core/PlayerManager.cpp +++ b/core/PlayerManager.cpp @@ -1499,10 +1499,23 @@ int PlayerManager::InternalFilterCommandTarget(CPlayer *pAdmin, CPlayer *pTarget if (pAdmin != NULL) { - if ((flags & COMMAND_FILTER_NO_IMMUNITY) != COMMAND_FILTER_NO_IMMUNITY - && !adminsys->CanAdminTarget(pAdmin->GetAdminId(), pTarget->GetAdminId())) + if ((flags & COMMAND_FILTER_NO_IMMUNITY) != COMMAND_FILTER_NO_IMMUNITY) { - return COMMAND_TARGET_IMMUNE; + AdminId tid = pTarget->GetAdminId(); + /* If the target is pre-auth they're targetable; bypassing immunity rules... */ + if (tid == INVALID_ADMIN_ID && !pTarget->IsAuthStringValidated()) + { + tid = adminsys->FindAdminByIdentity("steam", pTarget->GetAuthString(false)); + if (tid == INVALID_ADMIN_ID) + { + tid = adminsys->FindAdminByIdentity("ip", pTarget->GetIPAddress()); + } + } + + if (!adminsys->CanAdminTarget(pAdmin->GetAdminId(), tid)) + { + return COMMAND_TARGET_IMMUNE; + } } }