diff options
author | Spp <spp@jorge.gr> | 2012-03-23 05:35:32 +0100 |
---|---|---|
committer | click <click@gonnamakeyou.com> | 2012-03-23 05:35:32 +0100 |
commit | 0fe4580fe0f526b864586a9cc3e7727be1980323 (patch) | |
tree | 87d3514c783f1eb188e22720ba9eba207449aca0 /src | |
parent | 479c0976abaa24ac12ba4c47116ee282332e273f (diff) |
Core/Commands: Add support for ip2nation database lookups when using .pinfo command.
This will (when a full database exists) allow for seeing (approximately) which country a player might be from when doing .pinfo <player>
Note: External data required for this patch to work correctly can be found at http://www.ip2nation.com/ip2nation/Download
Signed-off-by: click <click@gonnamakeyou.com>
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Chat/Commands/Level2.cpp | 15 | ||||
-rwxr-xr-x | src/server/game/World/World.cpp | 20 | ||||
-rwxr-xr-x | src/server/game/World/World.h | 2 |
3 files changed, 37 insertions, 0 deletions
diff --git a/src/server/game/Chat/Commands/Level2.cpp b/src/server/game/Chat/Commands/Level2.cpp index 062cdb331ea..c973ebe272b 100755 --- a/src/server/game/Chat/Commands/Level2.cpp +++ b/src/server/game/Chat/Commands/Level2.cpp @@ -42,6 +42,7 @@ #include "Transport.h" #include "TargetedMovementGenerator.h" // for HandleNpcUnFollowCommand #include "CreatureGroups.h" +#include "ace/INET_Addr.h" //mute player for some times bool ChatHandler::HandleMuteCommand(const char* args) @@ -347,6 +348,20 @@ bool ChatHandler::HandlePInfoCommand(const char* args) { last_ip = fields[3].GetString(); last_login = fields[4].GetString(); + + uint32 ip = inet_addr(last_ip.c_str()); +#if TRINITY_ENDIAN == BIGENDIAN + EndianConvertReverse(ip); +#endif + + if (QueryResult result2 = WorldDatabase.PQuery("SELECT c.country FROM ip2nationCountries c, ip2nation i WHERE " + "i.ip < %u AND c.code = i.country ORDER BY i.ip DESC LIMIT 0,1", ip)) + { + Field* fields2 = result2->Fetch(); + last_ip.append(" ("); + last_ip.append(fields2[0].GetString()); + last_ip.append(")"); + } } else { diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 4c02d1058b2..af0c83a7a1b 100755 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1625,6 +1625,9 @@ void World::SetInitialWorldSettings() sLog->outString("Loading Autobroadcasts..."); LoadAutobroadcasts(); + sLog->outString("Loading Ip2nation..."); + LoadIp2nation(); + ///- Load and initialize scripts sObjectMgr->LoadQuestStartScripts(); // must be after load Creature/Gameobject(Template/Data) and QuestTemplate sObjectMgr->LoadQuestEndScripts(); // must be after load Creature/Gameobject(Template/Data) and QuestTemplate @@ -1881,6 +1884,23 @@ void World::LoadAutobroadcasts() sLog->outString(); } +void World::LoadIp2nation() +{ + uint32 oldMSTime = getMSTime(); + + QueryResult result = WorldDatabase.Query("SELECT count(c.code) FROM ip2nationCountries c, ip2nation i WHERE c.code = i.country"); + uint32 count = 0; + + if (result) + { + Field* fields = result->Fetch(); + count = fields[0].GetUInt32(); + } + + sLog->outString(">> Loaded %u ip2nation definitions in %u ms", count, GetMSTimeDiffToNow(oldMSTime)); + sLog->outString(); +} + /// Update the World ! void World::Update(uint32 diff) { diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index be4c41214ec..cab9c19da8b 100755 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -740,6 +740,8 @@ class World void LoadAutobroadcasts(); + void LoadIp2nation(); + void UpdateAreaDependentAuras(); void ProcessStartEvent(); |