aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Level3.cpp15
-rw-r--r--src/game/ObjectMgr.cpp13
-rw-r--r--src/game/ObjectMgr.h1
-rw-r--r--src/game/World.cpp23
4 files changed, 24 insertions, 28 deletions
diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp
index bf25943ea46..64021b3708b 100644
--- a/src/game/Level3.cpp
+++ b/src/game/Level3.cpp
@@ -4824,25 +4824,18 @@ bool ChatHandler::HandleBanInfoCommand(const char* args)
return false;
}
- loginDatabase.escape_string(nameOrIP);
- QueryResult *result = CharacterDatabase.PQuery("SELECT account FROM characters WHERE name = '%s'", nameOrIP.c_str());
- if (!result)
+ accountid = objmgr.GetPlayerAccountIdByPlayerName (nameOrIP);
+ if (!accountid)
{
PSendSysMessage(LANG_BANINFO_NOCHARACTER);
return true;
}
- fields = result->Fetch();
- accountid = fields[0].GetUInt32();
- delete result;
- result = loginDatabase.PQuery("SELECT username FROM account WHERE id = '%u'", accountid);
- if (!result)
+
+ if (!accmgr.GetName (accountid,accountname))
{
PSendSysMessage(LANG_BANINFO_NOCHARACTER);
return true;
}
- fields = result->Fetch();
- accountname = fields[0].GetCppString();
- delete result;
}
else
return false;
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp
index e069ed894de..6be6307a0f1 100644
--- a/src/game/ObjectMgr.cpp
+++ b/src/game/ObjectMgr.cpp
@@ -1365,6 +1365,19 @@ uint32 ObjectMgr::GetPlayerAccountIdByGUID(const uint64 &guid) const
return 0;
}
+uint32 ObjectMgr::GetPlayerAccountIdByPlayerName(std::string name) const
+{
+ QueryResult *result = CharacterDatabase.PQuery("SELECT account FROM characters WHERE name = '%s'", name.c_str());
+ if(result)
+ {
+ uint32 acc = (*result)[0].GetUInt32();
+ delete result;
+ return acc;
+ }
+
+ return 0;
+}
+
void ObjectMgr::LoadAuctions()
{
QueryResult *result = CharacterDatabase.Query("SELECT COUNT(*) FROM auctionhouse");
diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h
index 898d82ea6ff..05d4cea1a33 100644
--- a/src/game/ObjectMgr.h
+++ b/src/game/ObjectMgr.h
@@ -413,6 +413,7 @@ class ObjectMgr
bool GetPlayerNameByGUID(const uint64 &guid, std::string &name) const;
uint32 GetPlayerTeamByGUID(const uint64 &guid) const;
uint32 GetPlayerAccountIdByGUID(const uint64 &guid) const;
+ uint32 GetPlayerAccountIdByPlayerName(std::string name) const;
uint32 GetNearestTaxiNode( float x, float y, float z, uint32 mapid );
void GetTaxiPath( uint32 source, uint32 destination, uint32 &path, uint32 &cost);
diff --git a/src/game/World.cpp b/src/game/World.cpp
index 9fdd9580872..5b0a03740cc 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -36,6 +36,7 @@
#include "SkillExtraItems.h"
#include "SkillDiscovery.h"
#include "World.h"
+#include "AccountMgr.h"
#include "ObjectMgr.h"
#include "SpellMgr.h"
#include "Chat.h"
@@ -2337,33 +2338,21 @@ bool World::RemoveBanAccount(std::string type, std::string nameOrIP)
uint32 account=0;
if(type == "account")
{
- //NO SQL injection as name is escaped
- loginDatabase.escape_string(nameOrIP);
- QueryResult *resultAccounts = loginDatabase.PQuery("SELECT id FROM account WHERE username = '%s'",nameOrIP.c_str());
- if(!resultAccounts)
+ if (!AccountMgr::normilizeString (nameOrIP))
return false;
- Field* fieldsAccount = resultAccounts->Fetch();
- account = fieldsAccount->GetUInt32();
-
- delete resultAccounts;
+
+ account = accmgr.GetId (nameOrIP);
}
else if(type == "character")
{
if(!normalizePlayerName(nameOrIP))
return false;
- //NO SQL injection as name is escaped
- loginDatabase.escape_string(nameOrIP);
- QueryResult *resultAccounts = CharacterDatabase.PQuery("SELECT account FROM characters WHERE name = '%s'",nameOrIP.c_str());
- if(!resultAccounts)
- return false;
- Field* fieldsAccount = resultAccounts->Fetch();
- account = fieldsAccount->GetUInt32();
-
- delete resultAccounts;
+ account = objmgr.GetPlayerAccountIdByPlayerName (nameOrIP);
}
if(!account)
return false;
+
//NO SQL injection as account is uint32
loginDatabase.PExecute("UPDATE account_banned SET active = '0' WHERE id = '%u'",account);
}