diff --git a/NoSteamManager/scripting/NoSteamManager_Connect.sp b/NoSteamManager/scripting/NoSteamManager_Connect.sp index 0e2abf77..a78c45ef 100644 --- a/NoSteamManager/scripting/NoSteamManager_Connect.sp +++ b/NoSteamManager/scripting/NoSteamManager_Connect.sp @@ -212,7 +212,7 @@ public void SQL_OnDatabaseConnect(Database db, const char[] error, any data) g_hDatabase = db; char sQuery[512]; - Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS connections (`auth` varchar(32), `address` varchar(16), PRIMARY KEY (`auth`))"); + Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS connections (`auth` varchar(32), `type` varchar(32), `address` varchar(16), PRIMARY KEY (`auth`))"); g_hDatabase.Query(SQL_OnQueryCompleted, sQuery, _, DBPrio_High); } @@ -238,33 +238,46 @@ public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[] char sAddress[16]; GetClientIP(client, sAddress, sizeof(sAddress)); + char sConnectionType[32]; + if(!SteamClientAuthenticated(sAuthID)) + sConnectionType = "RevEmu"; + else + sConnectionType = "SteamLegit"; + if(results.RowCount && results.FetchRow()) { int iFieldNum; char sResultAddress[16]; + char sResultConnectionType[32]; results.FieldNameToNum("address", iFieldNum); results.FetchString(iFieldNum, sResultAddress, sizeof(sResultAddress)); + results.FieldNameToNum("type", iFieldNum); + results.FetchString(iFieldNum, sResultConnectionType, sizeof(sResultConnectionType)); + delete results; if(!SteamClientAuthenticated(sAuthID)) { - if(StrEqual(sAddress, sResultAddress, false)) + if(!StrEqual(sConnectionType, sResultConnectionType, false) && StrEqual(sResultConnectionType, "SteamLegit", false)) { - LogMessage("%L tried to join with a legitimate steamid while not authenticated with steam. Allowing connection, IPs match. (Known: %s)", client, sAddress); - } - else - { - LogMessage("%L tried to join with a legitimate steamid while not authenticated with steam. Refusing connection, IPs dont match. (Known: %s | Current: %s)", client, sResultAddress, sAddress); - KickClient(client, "Trying to join with a legitimate steamid while not authenticated with steam."); - return; + if(StrEqual(sAddress, sResultAddress, false)) + { + LogMessage("%L tried to join with a legitimate steamid while not authenticated with steam. Allowing connection, IPs match. (Known: %s)", client, sAddress); + } + else + { + LogMessage("%L tried to join with a legitimate steamid while not authenticated with steam. Refusing connection, IPs dont match. (Known: %s | Current: %s)", client, sResultAddress, sAddress); + KickClient(client, "Trying to join with a legitimate steamid while not authenticated with steam."); + return; + } } } } char sQuery[512]; - Format(sQuery, sizeof(sQuery), "INSERT INTO connections (auth, address) VALUES ('%s', '%s') ON DUPLICATE KEY UPDATE address='%s';", sAuthID, sAddress, sAddress); + Format(sQuery, sizeof(sQuery), "INSERT INTO connections (auth, type, address) VALUES ('%s', '%s', '%s') ON DUPLICATE KEY UPDATE type='%s', address='%s';", sAuthID, sConnectionType, sAddress, sConnectionType, sAddress); g_hDatabase.Query(SQL_OnQueryCompleted, sQuery, _, DBPrio_Low); } \ No newline at end of file