mirror of
https://github.com/SWG-Source/src.git
synced 2026-07-14 23:07:48 -04:00
more work toward using int64 for station id
This commit is contained in:
@@ -5,6 +5,8 @@
|
||||
//
|
||||
// ======================================================================
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "FirstCentralServer.h"
|
||||
#include "CharacterCreationTracker.h"
|
||||
|
||||
@@ -71,16 +73,16 @@ void CharacterCreationTracker::handleCreateNewCharacter(const ConnectionCreateCh
|
||||
{
|
||||
if (ServerClock::getInstance().getGameTimeSeconds() > (creationRecord->second->m_creationTime + ConfigCentralServer::getCharacterCreationTimeout()))
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d allowing character creation because previous one timed out", msg.getStationId()));
|
||||
DEBUG_REPORT_LOG(true,("Allowing character creation for account %li because previous one timed out.\n",msg.getStationId()));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " allowing character creation because previous one timed out", msg.getStationId()));
|
||||
DEBUG_REPORT_LOG(true,("Allowing character creation for account %" PRId64 " because previous one timed out.\n",msg.getStationId()));
|
||||
unlockAccount(msg.getStationId());
|
||||
creationRecord = m_creations.end();
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d refusing character creation because one is already in progress", msg.getStationId()));
|
||||
DEBUG_REPORT_LOG(true,("Refusing character creation for account %li because one was already in progress.\n",msg.getStationId()));
|
||||
ConnectionCreateCharacterFailed f(msg.getStationId(), msg.getCharacterName(), NameErrors::nameDeclinedRetry, FormattedString<2048>().sprintf("%lu refusing character creation because one is already in progress", msg.getStationId())); //lint !e40 // undeclared identifier nameDeclinedEntry
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " refusing character creation because one is already in progress", msg.getStationId()));
|
||||
DEBUG_REPORT_LOG(true,("Refusing character creation for account %" PRId64 " because one was already in progress.\n",msg.getStationId()));
|
||||
ConnectionCreateCharacterFailed f(msg.getStationId(), msg.getCharacterName(), NameErrors::nameDeclinedRetry, FormattedString<2048>().sprintf("%" PRId64 " refusing character creation because one is already in progress", msg.getStationId())); //lint !e40 // undeclared identifier nameDeclinedEntry
|
||||
CentralServer::getInstance().sendToConnectionServerForAccount(msg.getStationId(), f, true);
|
||||
return;
|
||||
}
|
||||
@@ -93,9 +95,9 @@ void CharacterCreationTracker::handleCreateNewCharacter(const ConnectionCreateCh
|
||||
{
|
||||
if (!msg.getNoRateLimit() && ((Clock::timeSeconds() - fcl->second) < (msg.getIsForCharacterTransfer() ? static_cast<uint32>(ConfigCentralServer::getCharacterCtsCreationRateLimitSeconds()) : static_cast<uint32>(ConfigCentralServer::getCharacterCreationRateLimitSeconds()))))
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d refusing character creation because not enough time has passed since the previous one", msg.getStationId()));
|
||||
DEBUG_REPORT_LOG(true,("Refusing character creation for account %li because not enough time has passed since the previous one\n",msg.getStationId()));
|
||||
ConnectionCreateCharacterFailed f(msg.getStationId(), msg.getCharacterName(), NameErrors::nameDeclinedTooFast, FormattedString<2048>().sprintf("%lu refusing character creation because not enough time has passed since the previous one", msg.getStationId()));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " refusing character creation because not enough time has passed since the previous one", msg.getStationId()));
|
||||
DEBUG_REPORT_LOG(true,("Refusing character creation for account %" PRId64 " because not enough time has passed since the previous one\n",msg.getStationId()));
|
||||
ConnectionCreateCharacterFailed f(msg.getStationId(), msg.getCharacterName(), NameErrors::nameDeclinedTooFast, FormattedString<2048>().sprintf("%" PRId64 " refusing character creation because not enough time has passed since the previous one", msg.getStationId()));
|
||||
CentralServer::getInstance().sendToConnectionServerForAccount(msg.getStationId(), f, true);
|
||||
return;
|
||||
}
|
||||
@@ -117,8 +119,8 @@ void CharacterCreationTracker::handleCreateNewCharacter(const ConnectionCreateCh
|
||||
if (!getStartLocation(msg.getStartingLocation(), planetName, coordinates, cellId))
|
||||
{
|
||||
// bad starting location
|
||||
LOG("TraceCharacterCreation", ("%d bad starting location (%s)", msg.getStationId(), msg.getStartingLocation().c_str()));
|
||||
ConnectionCreateCharacterFailed cccf(msg.getStationId(), msg.getCharacterName(), SharedStringIds::character_create_failed_bad_location, FormattedString<2048>().sprintf("%lu bad starting location (%s)", msg.getStationId(), msg.getStartingLocation().c_str()));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " bad starting location (%s)", msg.getStationId(), msg.getStartingLocation().c_str()));
|
||||
ConnectionCreateCharacterFailed cccf(msg.getStationId(), msg.getCharacterName(), SharedStringIds::character_create_failed_bad_location, FormattedString<2048>().sprintf("%" PRId64 " bad starting location (%s)", msg.getStationId(), msg.getStartingLocation().c_str()));
|
||||
CentralServer::getInstance().sendToConnectionServerForAccount(msg.getStationId(), cccf, true);
|
||||
unlockAccount(msg.getStationId());
|
||||
return;
|
||||
@@ -148,13 +150,13 @@ void CharacterCreationTracker::handleCreateNewCharacter(const ConnectionCreateCh
|
||||
if (gameServerId == 0)
|
||||
{
|
||||
DEBUG_REPORT_LOG(true, ("Could not find a game server for character creation, starting a tutorial server\n"));
|
||||
LOG("TraceCharacterCreation", ("%d waiting for game server", msg.getStationId()));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " waiting for game server", msg.getStationId()));
|
||||
CentralServer::getInstance().startPlanetServer(CentralServer::getInstance().getHostForScene(tutorialPlanetName), tutorialPlanetName, 0);
|
||||
creationRecord->second->m_stage = CreationRecord::S_queuedForGameServer;
|
||||
return;
|
||||
}
|
||||
|
||||
LOG("TraceCharacterCreation", ("%d sending CentralCreateCharacter(%s) to game server %lu", msg.getStationId(), Unicode::wideToNarrow(msg.getCharacterName()).c_str(), gameServerId));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " sending CentralCreateCharacter(%s) to game server %lu", msg.getStationId(), Unicode::wideToNarrow(msg.getCharacterName()).c_str(), gameServerId));
|
||||
creationRecord->second->m_stage = CreationRecord::S_sentToGameServer;
|
||||
creationRecord->second->m_gameServerId = gameServerId;
|
||||
}
|
||||
@@ -165,7 +167,7 @@ void CharacterCreationTracker::unlockAccount(StationId account)
|
||||
{
|
||||
delete m_creations[account];
|
||||
IGNORE_RETURN(m_creations.erase(account));
|
||||
LOG("TraceCharacterCreation", ("%d removing character creation lock", account));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " removing character creation lock", account));
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
@@ -181,7 +183,7 @@ void CharacterCreationTracker::retryGameServerCreates()
|
||||
{
|
||||
i->second->m_stage = CreationRecord::S_sentToGameServer;
|
||||
i->second->m_gameServerId = gameServerId;
|
||||
LOG("TraceCharacterCreation", ("%d sending CentralCreateCharacter to game server %lu", i->first,gameServerId));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " sending CentralCreateCharacter to game server %lu", i->first,gameServerId));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -204,7 +206,7 @@ void CharacterCreationTracker::retryLoginServerCreates()
|
||||
{
|
||||
i->second->m_loginServerId = loginServerId;
|
||||
i->second->m_stage = CreationRecord::S_sentToLoginServer;
|
||||
LOG("TraceCharacterCreation", ("%d sending LoginCreateCharacterMessage", i->first));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " sending LoginCreateCharacterMessage", i->first));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -242,7 +244,7 @@ void CharacterCreationTracker::onGameServerDisconnect(uint32 serverId)
|
||||
{
|
||||
i->second->m_stage = CreationRecord::S_queuedForGameServer;
|
||||
i->second->m_gameServerId = 0;
|
||||
LOG("TraceCharacterCreation", ("%d requeueing because game server disconnected", i->first));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " requeueing because game server disconnected", i->first));
|
||||
}
|
||||
}
|
||||
retryGameServerCreates();
|
||||
@@ -258,7 +260,7 @@ void CharacterCreationTracker::onLoginServerDisconnect(uint32 loginServerId)
|
||||
{
|
||||
i->second->m_stage = CreationRecord::S_queuedForLoginServer;
|
||||
i->second->m_loginServerId = 0;
|
||||
LOG("TraceCharacterCreation", ("%d requeueing because login server disconnected", i->first));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " requeueing because login server disconnected", i->first));
|
||||
}
|
||||
}
|
||||
retryLoginServerCreates();
|
||||
@@ -269,12 +271,12 @@ void CharacterCreationTracker::onLoginServerDisconnect(uint32 loginServerId)
|
||||
void CharacterCreationTracker::handleDatabaseCreateCharacterSuccess(StationId account, const Unicode::String &characterName, const NetworkId &characterObjectId, int templateId, bool jedi)
|
||||
{
|
||||
// - Check we are at the right stage
|
||||
LOG("TraceCharacterCreation", ("%d DatabaseCreateCharacterSuccess(%s)", account, characterObjectId.getValueString().c_str()));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " DatabaseCreateCharacterSuccess(%s)", account, characterObjectId.getValueString().c_str()));
|
||||
CreationsType::iterator creationRecord=m_creations.find(account);
|
||||
if (creationRecord==m_creations.end() || creationRecord->second->m_stage != CreationRecord::S_sentToGameServer)
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d DatabaseCreateCharacterSuccess was unexpected - exiting", account));
|
||||
DEBUG_WARNING(true,("Programmer bug: got GameCreateCharacter message for accout %d, which we weren't expecting.\n",account));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " DatabaseCreateCharacterSuccess was unexpected - exiting", account));
|
||||
DEBUG_WARNING(true,("Programmer bug: got GameCreateCharacter message for account %" PRId64 ", which we weren't expecting.\n",account));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -287,13 +289,13 @@ void CharacterCreationTracker::handleDatabaseCreateCharacterSuccess(StationId ac
|
||||
{
|
||||
creationRecord->second->m_loginServerId = loginServerId;
|
||||
creationRecord->second->m_stage = CreationRecord::S_sentToLoginServer;
|
||||
LOG("TraceCharacterCreation", ("%d sending LoginCreateCharacterMessage", account));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " sending LoginCreateCharacterMessage", account));
|
||||
}
|
||||
else
|
||||
{
|
||||
creationRecord->second->m_loginServerId = 0;
|
||||
creationRecord->second->m_stage = CreationRecord::S_queuedForLoginServer;
|
||||
LOG("TraceCharacterCreation", ("%d waiting for login server", account));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 "waiting for login server", account));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,18 +304,18 @@ void CharacterCreationTracker::handleDatabaseCreateCharacterSuccess(StationId ac
|
||||
void CharacterCreationTracker::handleLoginCreateCharacterAck(StationId account)
|
||||
{
|
||||
// - Check we are at the right stage
|
||||
LOG("TraceCharacterCreation", ("%d LoginCreateCharacterAckMessage", account));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " LoginCreateCharacterAckMessage", account));
|
||||
CreationsType::iterator creationRecord=m_creations.find(account);
|
||||
if (creationRecord==m_creations.end() || creationRecord->second->m_stage != CreationRecord::S_sentToLoginServer)
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d LoginCreateCharacterAckMessage was unexpected - exiting", account));
|
||||
DEBUG_WARNING(true,("Programmer bug: got LoginCreateCharacterAckMessage message for account %d, which we weren't expecting.\n",account));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " LoginCreateCharacterAckMessage was unexpected - exiting", account));
|
||||
DEBUG_WARNING(true,("Programmer bug: got LoginCreateCharacterAckMessage message for account %" PRId64 ", which we weren't expecting.\n",account));
|
||||
return;
|
||||
}
|
||||
|
||||
// - Tell the client the character has been created
|
||||
LOG("TraceCharacterCreation", ("%d acknowledgeCharacterCreate(%s)", account, creationRecord->second->m_characterId.getValueString().c_str()));
|
||||
LOG("CustomerService", ("Player:created character %s for stationId %u", creationRecord->second->m_characterId.getValueString().c_str(), account));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " acknowledgeCharacterCreate(%s)", account, creationRecord->second->m_characterId.getValueString().c_str()));
|
||||
LOG("CustomerService", ("Player:created character %s for stationId %" PRId64, creationRecord->second->m_characterId.getValueString().c_str(), account));
|
||||
const ConnectionCreateCharacterSuccess c(account, creationRecord->second->m_characterId);
|
||||
CentralServer::getInstance().sendToConnectionServerForAccount(account, c, true);
|
||||
unlockAccount(account);
|
||||
@@ -332,12 +334,12 @@ void CharacterCreationTracker::handleGameCreateCharacterFailed(StationId account
|
||||
CreationsType::iterator creationRecord=m_creations.find(account);
|
||||
if (creationRecord==m_creations.end() || creationRecord->second->m_stage != CreationRecord::S_sentToGameServer)
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d got handleGameCreateCharacterFailed, but we weren't in the sentToGameServer stage - ignoring", account));
|
||||
DEBUG_WARNING(true,("Programmer bug: got handleGameCreateCharacterFailed message for account %d, which we weren't expecting.\n",account));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " got handleGameCreateCharacterFailed, but we weren't in the sentToGameServer stage - ignoring", account));
|
||||
DEBUG_WARNING(true,("Programmer bug: got handleGameCreateCharacterFailed message for account %" PRId64 ", which we weren't expecting.\n",account));
|
||||
return;
|
||||
}
|
||||
|
||||
LOG("TraceCharacterCreation", ("%d received GameCreateCharacterFailed(%s)", account, Unicode::wideToNarrow(characterName).c_str()));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " received GameCreateCharacterFailed(%s)", account, Unicode::wideToNarrow(characterName).c_str()));
|
||||
ConnectionCreateCharacterFailed cccf(account, characterName, errorMessage, optionalDetailedErrorMessage);
|
||||
CentralServer::getInstance().sendToConnectionServerForAccount(account, cccf, true);
|
||||
unlockAccount(account);
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "FirstConnectionServer.h"
|
||||
#include "ClientConnection.h"
|
||||
|
||||
@@ -306,7 +308,7 @@ void ClientConnection::handleClientIdMessage(const ClientIdMsg &msg) {
|
||||
|
||||
FATAL(clientIP.empty(), ("Remote IP is empty"));
|
||||
|
||||
DEBUG_WARNING(true, ("ConnectionServer::handleClientIdMessage - For ip %s suid is %lu requestedSUID is %lu and session is %s", clientIP.c_str(), m_suid, m_requestedSuid, sess.c_str()));
|
||||
DEBUG_WARNING(true, ("ConnectionServer::handleClientIdMessage - For ip %s suid is %" PRId64 " requestedSUID is %lu and session is %s", clientIP.c_str(), m_suid, m_requestedSuid, sess.c_str()));
|
||||
|
||||
webAPI api(sessURL);
|
||||
|
||||
@@ -322,12 +324,9 @@ void ClientConnection::handleClientIdMessage(const ClientIdMsg &msg) {
|
||||
int expired = api.getNullableValue<int>("expired");
|
||||
|
||||
if (!ConfigConnectionServer::getUseOldSuidGenerator()) {
|
||||
apiSuid = api.getNullableValue<int>("user_id");
|
||||
apiSuid = api.getNullableValue<StationId>("user_id");
|
||||
} else {
|
||||
if (apiUser.length() > MAX_ACCOUNT_NAME_LENGTH) {
|
||||
apiUser.resize(MAX_ACCOUNT_NAME_LENGTH);
|
||||
}
|
||||
apiSuid = std::hash < std::string > {}(apiUser.c_str());
|
||||
apiSuid = hashOldSoeSUID(apiUser);
|
||||
}
|
||||
|
||||
if (apiIP == clientIP && expired == 0) {
|
||||
@@ -338,20 +337,20 @@ void ClientConnection::handleClientIdMessage(const ClientIdMsg &msg) {
|
||||
}
|
||||
|
||||
if (!cont) {
|
||||
LOG("ClientDisconnect", ("SUID %d (%d) passed a bad token to the connections erver. Disconnecting.", m_suid, apiSuid));
|
||||
LOG("ClientDisconnect", ("SUID %" PRId64 " (%" PRId64 ") passed a bad token to the connections erver. Disconnecting.", m_suid, apiSuid));
|
||||
disconnect();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static const std::string loginTrace("TRACE_LOGIN");
|
||||
LOG(loginTrace, ("ClientConnection SUID = %d", m_suid));
|
||||
LOG(loginTrace, ("ClientConnection SUID = %" PRId64, m_suid));
|
||||
|
||||
//check for duplicate login
|
||||
ClientConnection *oldConnection = ConnectionServer::getClientConnection(m_suid);
|
||||
if (oldConnection) {
|
||||
//There is already someone connected to this cluster with this suid.
|
||||
LOG("Network", ("SUID %d already logged in, disconnecting client.\n", m_suid));
|
||||
LOG("Network", ("SUID %" PRId64 " already logged in, disconnecting client.\n", m_suid));
|
||||
|
||||
ConnectionServer::dropClient(oldConnection, "Already Connected");
|
||||
|
||||
@@ -383,11 +382,7 @@ void ClientConnection::handleClientIdMessage(const ClientIdMsg &msg) {
|
||||
if (!m_suid && !ConfigConnectionServer::getValidateStationKey()) {
|
||||
WARNING(true, ("Generating suid from username. This is not safe or secure."));
|
||||
|
||||
m_suid = atoi(m_accountName.c_str());
|
||||
|
||||
if (m_suid == 0) {
|
||||
m_suid = std::hash < std::string > {}(m_accountName.c_str());
|
||||
}
|
||||
m_suid = hashOldSoeSUID(m_accountName);
|
||||
}
|
||||
|
||||
onValidateClient(m_suid, m_accountName, m_isSecure, nullptr, ConfigConnectionServer::getDefaultGameFeatures(), ConfigConnectionServer::getDefaultSubscriptionFeatures(), 0, 0, 0, 0, ConfigConnectionServer::getFakeBuddyPoints());
|
||||
|
||||
@@ -197,6 +197,31 @@ private:
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
||||
// thanks for the nasty BS Sony
|
||||
inline const StationId hashOldSoeSUID(std::string name) {
|
||||
StationId oldSoeSUID = 0;
|
||||
|
||||
if (name.length()) {
|
||||
char brokenSuid[50];
|
||||
uint32_t hash;
|
||||
|
||||
//if (name.size() > MAX_ACCOUNT_NAME_LENGTH) {
|
||||
// name.resize(MAX_ACCOUNT_NAME_LENGTH);
|
||||
//}
|
||||
|
||||
// use SOE's shitty method for generating unique id's
|
||||
hash = static_cast<uint32_t>(std::hash < std::string > {}(name.c_str()));
|
||||
|
||||
// ...running them through sprintf to format, and overflowing or otherwise mangling the value
|
||||
sprintf(brokenSuid, "%i", hash);
|
||||
|
||||
// and then go back to int...lol
|
||||
oldSoeSUID = std::stoi(brokenSuid);
|
||||
}
|
||||
|
||||
return oldSoeSUID;
|
||||
}
|
||||
|
||||
inline const std::string & ClientConnection::getAccountName() const
|
||||
{
|
||||
return m_accountName;
|
||||
|
||||
@@ -45,8 +45,8 @@ ClientConnection::~ClientConnection() {
|
||||
void ClientConnection::onConnectionClosed() {
|
||||
// client has disconnected
|
||||
if (m_stationId) {
|
||||
DEBUG_REPORT_LOG(true, ("Client %lu disconnected\n", m_stationId));
|
||||
LOG("LoginClientConnection", ("onConnectionClosed() for stationId (%lu) at IP (%s)", m_stationId, getRemoteAddress().c_str()));
|
||||
DEBUG_REPORT_LOG(true, ("Client %" PRId64 " disconnected\n", m_stationId));
|
||||
LOG("LoginClientConnection", ("onConnectionClosed() for stationId (%" PRId64 ") at IP (%s)", m_stationId, getRemoteAddress().c_str()));
|
||||
}
|
||||
|
||||
LoginServer::getInstance().removeClient(m_clientId);
|
||||
@@ -66,7 +66,7 @@ void ClientConnection::onConnectionOpened() {
|
||||
m_clientId = LoginServer::getInstance().addClient(*this);
|
||||
setOverflowLimit(ConfigLoginServer::getClientOverflowLimit());
|
||||
|
||||
LOG("LoginClientConnection", ("onConnectionOpened() for stationId (%lu) at IP (%s)", m_stationId, getRemoteAddress().c_str()));
|
||||
LOG("LoginClientConnection", ("onConnectionOpened() for stationId (%" PRId64 ") at IP (%s)", m_stationId, getRemoteAddress().c_str()));
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
@@ -105,7 +105,7 @@ void ClientConnection::onReceive(const Archive::ByteStream &message) {
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG("CustomerService", ("Login:LoginServer dropping client (stationId=[%lu], ip=[%s], id=[%s], key=[%s], version=[%s]) because of network version mismatch (required version=[%s])", m_stationId, getRemoteAddress().c_str(), id.getId().c_str(), id.getKey().c_str(), id.getVersion().c_str(), GameNetworkMessage::NetworkVersionId.c_str()));
|
||||
LOG("CustomerService", ("Login:LoginServer dropping client (stationId=[%" PRId64 "], ip=[%s], id=[%s], key=[%s], version=[%s]) because of network version mismatch (required version=[%s])", m_stationId, getRemoteAddress().c_str(), id.getId().c_str(), id.getKey().c_str(), id.getVersion().c_str(), GameNetworkMessage::NetworkVersionId.c_str()));
|
||||
// disconnect is handled on the client side, as soon as it recieves this message
|
||||
#if _DEBUG
|
||||
LoginIncorrectClientId incorrectId(GameNetworkMessage::NetworkVersionId, ApplicationVersion::getInternalVersion());
|
||||
@@ -160,7 +160,7 @@ void ClientConnection::validateClient(const std::string &id, const std::string &
|
||||
std::string uname;
|
||||
std::string parentAccount;
|
||||
std::string sessionID;
|
||||
|
||||
std::string tmp;
|
||||
StationId user_id;
|
||||
StationId parent_id;
|
||||
std::unordered_map<StationId, std::string> childAccounts;
|
||||
@@ -189,16 +189,8 @@ void ClientConnection::validateClient(const std::string &id, const std::string &
|
||||
user_id = static_cast<StationId>(api.getNullableValue<StationId>("user_id"));
|
||||
parent_id = static_cast<StationId>(api.getNullableValue<StationId>("parent_id"));
|
||||
} else {
|
||||
if (parentAccount.length() > MAX_ACCOUNT_NAME_LENGTH) {
|
||||
parentAccount.resize(MAX_ACCOUNT_NAME_LENGTH);
|
||||
}
|
||||
|
||||
if (uname.length() > MAX_ACCOUNT_NAME_LENGTH) {
|
||||
uname.resize(MAX_ACCOUNT_NAME_LENGTH);
|
||||
}
|
||||
|
||||
parent_id = static_cast<uint32_t>(std::hash < std::string > {}(parentAccount.c_str()));
|
||||
user_id = static_cast<uint32_t>(std::hash < std::string > {}(uname.c_str()));
|
||||
parent_id = hashOldSoeSUID(parentAccount);
|
||||
user_id = hashOldSoeSUID(uname);
|
||||
}
|
||||
} else {
|
||||
std::string msg(api.getString("message"));
|
||||
@@ -218,12 +210,11 @@ void ClientConnection::validateClient(const std::string &id, const std::string &
|
||||
authOK = true;
|
||||
testMode = true;
|
||||
uname = id;
|
||||
user_id = hashOldSoeSUID(uname);
|
||||
}
|
||||
|
||||
if (uname.length() > MAX_ACCOUNT_NAME_LENGTH) {
|
||||
uname.resize(MAX_ACCOUNT_NAME_LENGTH);
|
||||
}
|
||||
|
||||
user_id = static_cast<uint32_t>(std::hash < std::string > {}(uname.c_str()));
|
||||
if (user_id == 0) {
|
||||
authOK = false;
|
||||
}
|
||||
|
||||
if (authOK) {
|
||||
@@ -246,11 +237,7 @@ void ClientConnection::validateClient(const std::string &id, const std::string &
|
||||
|
||||
if (!child.empty() && i.first > 0) {
|
||||
if (ConfigLoginServer::getUseOldSuidGenerator()) {
|
||||
if (child.length() > MAX_ACCOUNT_NAME_LENGTH) {
|
||||
child.resize(MAX_ACCOUNT_NAME_LENGTH);
|
||||
}
|
||||
|
||||
child_id = static_cast<uint32_t>(std::hash < std::string > {}(child.c_str()));
|
||||
child_id = hashOldSoeSUID(child);
|
||||
}
|
||||
|
||||
REPORT_LOG((parent_id !=
|
||||
|
||||
@@ -55,7 +55,6 @@ private:
|
||||
ClientConnection& operator=( const ClientConnection&);
|
||||
|
||||
void validateClient(const std::string & id, const std::string & key);
|
||||
|
||||
private:
|
||||
int m_clientId;
|
||||
bool m_isValidated;
|
||||
@@ -73,19 +72,32 @@ private:
|
||||
}; //lint !e1712 // default constructor not defined
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
||||
// stolen from http://www.codeproject.com/Articles/10880/A-trim-implementation-for-std-string
|
||||
// i'm rusty and haven't gotten to lambdas yet
|
||||
inline const std::string trim(std::string str)
|
||||
{
|
||||
|
||||
str.erase(str.begin(), std::find_if(str.begin(), str.end(),
|
||||
[](char& ch)->bool { return !isspace(ch); }));
|
||||
str.erase(std::find_if(str.rbegin(), str.rend(),
|
||||
[](char& ch)->bool { return !isspace(ch); }).base(), str.end());
|
||||
return str;
|
||||
}
|
||||
|
||||
// thanks for the nasty BS Sony
|
||||
inline const StationId hashOldSoeSUID(std::string name) {
|
||||
StationId oldSoeSUID = 0;
|
||||
|
||||
if (name.length()) {
|
||||
char brokenSuid[50];
|
||||
uint32_t hash;
|
||||
|
||||
//if (name.size() > MAX_ACCOUNT_NAME_LENGTH) {
|
||||
// name.resize(MAX_ACCOUNT_NAME_LENGTH);
|
||||
//}
|
||||
|
||||
// use SOE's shitty method for generating unique id's
|
||||
hash = static_cast<uint32_t>(std::hash < std::string > {}(name.c_str()));
|
||||
|
||||
// ...running them through sprintf to format, and overflowing or otherwise mangling the value
|
||||
sprintf(brokenSuid, "%i", hash);
|
||||
|
||||
// and then go back to int...lol
|
||||
oldSoeSUID = std::stoi(brokenSuid);
|
||||
}
|
||||
|
||||
return oldSoeSUID;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
||||
inline const StationId ClientConnection::getStationId() const
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
//-----------------------------------------------------------------------
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "FirstLoginServer.h"
|
||||
#include "LoginServer.h"
|
||||
|
||||
@@ -276,11 +278,11 @@ bool LoginServer::deleteCharacter(uint32 clusterId, NetworkId const &characterId
|
||||
DatabaseConnection::getInstance().deleteCharacter(clusterId, characterId, suid);
|
||||
return true;
|
||||
} else {
|
||||
DEBUG_REPORT_LOG(true, ("User %lu requested deleting character %s on cluster %lu, but the cluster is not currently connected.\n", suid, characterId.getValueString().c_str(), clusterId));
|
||||
DEBUG_REPORT_LOG(true, ("User %" PRId64 " requested deleting character %s on cluster %lu, but the cluster is not currently connected.\n", suid, characterId.getValueString().c_str(), clusterId));
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
DEBUG_REPORT_LOG(true, ("User %lu requested deleting character %s on cluster %lu, but we have no cluster with that number.\n", suid, characterId.getValueString().c_str(), clusterId));
|
||||
DEBUG_REPORT_LOG(true, ("User %" PRId64 " requested deleting character %s on cluster %lu, but we have no cluster with that number.\n", suid, characterId.getValueString().c_str(), clusterId));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1136,7 +1138,7 @@ LoginServer::sendAvatarList(const StationId &stationId, int stationIdNumberJediS
|
||||
// CTS API character list request
|
||||
bool result = CentralServerConnection::sendCharacterListResponse(transferData->getSourceStationId(), avatars, *transferData);
|
||||
UNREF(result);
|
||||
DEBUG_REPORT_LOG(!result, ("Could not send avatar list to StationId %lu because connection has been closed.\n", stationId));
|
||||
DEBUG_REPORT_LOG(!result, ("Could not send avatar list to StationId %" PRId64 " because connection has been closed.\n", stationId));
|
||||
} else {
|
||||
uint32 characterTemplateId = 0;
|
||||
NetworkId characterId = NetworkId::cms_invalid;
|
||||
@@ -1154,7 +1156,7 @@ LoginServer::sendAvatarList(const StationId &stationId, int stationIdNumberJediS
|
||||
}
|
||||
}
|
||||
|
||||
LOG("CustomerService", ("CharacterTransfer: sendAvatarList() for stationId=%u, characterName=%s, sourceGalaxy=%s, determined characterId=%s, determined character template id=%lu", transferData->getSourceStationId(), transferData->getSourceCharacterName().c_str(), transferData->getSourceGalaxy().c_str(), characterId.getValueString().c_str(), characterTemplateId));
|
||||
LOG("CustomerService", ("CharacterTransfer: sendAvatarList() for stationId=%" PRId64 ", characterName=%s, sourceGalaxy=%s, determined characterId=%s, determined character template id=%lu", transferData->getSourceStationId(), transferData->getSourceCharacterName().c_str(), transferData->getSourceGalaxy().c_str(), characterId.getValueString().c_str(), characterTemplateId));
|
||||
|
||||
transferData->setCharacterId(characterId);
|
||||
transferData->setObjectTemplateCrc(characterTemplateId);
|
||||
@@ -1166,7 +1168,7 @@ LoginServer::sendAvatarList(const StationId &stationId, int stationIdNumberJediS
|
||||
} else {
|
||||
ClientConnection *conn = getValidatedClient(stationId);
|
||||
if (conn) {
|
||||
LOG("LoginClientConnection", ("sendAvatarList() for stationId (%lu) at IP (%s), sending avatar list to client", stationId, conn->getRemoteAddress().c_str()));
|
||||
LOG("LoginClientConnection", ("sendAvatarList() for stationId (%" PRId64 ") at IP (%s), sending avatar list to client", stationId, conn->getRemoteAddress().c_str()));
|
||||
|
||||
// this message ***MUST*** be sent first, as the client expects to
|
||||
// receive this information before receiving the avatar list information
|
||||
@@ -1175,8 +1177,8 @@ LoginServer::sendAvatarList(const StationId &stationId, int stationIdNumberJediS
|
||||
|
||||
conn->send(msg, true);
|
||||
} else {
|
||||
DEBUG_REPORT_LOG(true, ("Could not send avatar list to StationId %lu.\n", stationId));
|
||||
LOG("LoginClientConnection", ("sendAvatarList() for stationId (%lu), cannot find connection to client for sending avatar list", stationId));
|
||||
DEBUG_REPORT_LOG(true, ("Could not send avatar list to StationId %" PRId64 ".\n", stationId));
|
||||
LOG("LoginClientConnection", ("sendAvatarList() for stationId (%" PRId64 "), cannot find connection to client for sending avatar list", stationId));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1201,11 +1203,11 @@ void LoginServer::performAccountTransfer(const AvatarList &avatars, TransferAcco
|
||||
|
||||
avatarData.push_back(AvatarData(clusterName, avatarName));
|
||||
|
||||
LOG("CustomerService", ("CharacterTransfer: Sending request to update game db (via cluster: %s) for account transfer from %lu to %lu (avatar: %s)", clusterName.c_str(), sourceStationId, destinationStationId, avatarName.c_str()));
|
||||
LOG("CustomerService", ("CharacterTransfer: Sending request to update game db (via cluster: %s) for account transfer from %" PRId64 " to %" PRId64 " (avatar: %s)", clusterName.c_str(), sourceStationId, destinationStationId, avatarName.c_str()));
|
||||
const GenericValueTypeMessage <TransferAccountData> message("TransferAccountRequestCentralDatabase", *transferAccountData);
|
||||
sendToCluster(i->m_clusterId, message);
|
||||
} else {
|
||||
LOG("CustomerService", ("CharacterTransfer: Could not connect to cluster id %lu to update game db for account transfer from %lu to %lu (avatar: %s)", i->m_clusterId, sourceStationId, destinationStationId, Unicode::wideToNarrow(i->m_name).c_str()));
|
||||
LOG("CustomerService", ("CharacterTransfer: Could not connect to cluster id %lu to update game db for account transfer from %" PRId64 " to %" PRId64 " (avatar: %s)", i->m_clusterId, sourceStationId, destinationStationId, Unicode::wideToNarrow(i->m_name).c_str()));
|
||||
const GenericValueTypeMessage <TransferAccountData> response("TransferAccountToAccountFailedToUpdateGameDatabase", *transferAccountData);
|
||||
CentralServerConnection::sendToCentralServer(transferAccountData->getStartGalaxy(), response);
|
||||
return;
|
||||
@@ -1226,7 +1228,7 @@ LoginServer::onValidateClient(StationId suid, const std::string &username, Clien
|
||||
UNREF(gameBits);
|
||||
UNREF(subscriptionBits);
|
||||
NOT_NULL(conn);
|
||||
WARNING_STRICT_FATAL(getValidatedClient(suid), ("Validating an already valid client in onValidateClient(). StationId: %d UserName: %s", suid, username.c_str()));
|
||||
WARNING_STRICT_FATAL(getValidatedClient(suid), ("Validating an already valid client in onValidateClient(). StationId: %" PRId64 " UserName: %s", suid, username.c_str()));
|
||||
|
||||
int adminLevel = 0;
|
||||
const bool isAdminAccount = AdminAccountManager::isAdminAccount(Unicode::toLower(username), adminLevel);
|
||||
@@ -1235,13 +1237,13 @@ LoginServer::onValidateClient(StationId suid, const std::string &username, Clien
|
||||
//verify internal, secure, is on the god list
|
||||
bool loginOK = false;
|
||||
if (!isSecure) {
|
||||
LOG("CustomerService", ("AdminLogin: User %s (account %li) attempted to log into account %li, but was not using a SecureID token", username.c_str(), suid, conn->getRequestedAdminSuid()));
|
||||
LOG("CustomerService", ("AdminLogin: User %s (account %li) attempted to log into account %" PRId64 ", but was not using a SecureID token", username.c_str(), suid, conn->getRequestedAdminSuid()));
|
||||
} else {
|
||||
if (!AdminAccountManager::isInternalIp(conn->getRemoteAddress())) {
|
||||
LOG("CustomerService", ("AdminLogin: User %s (account %li) attempted to log into account %li, but was not logging in from an internal IP", username.c_str(), suid, conn->getRequestedAdminSuid()));
|
||||
LOG("CustomerService", ("AdminLogin: User %s (account %li) attempted to log into account %" PRId64 ", but was not logging in from an internal IP", username.c_str(), suid, conn->getRequestedAdminSuid()));
|
||||
} else {
|
||||
if (!isAdminAccount || adminLevel < 10) {
|
||||
LOG("CustomerService", ("AdminLogin: User %s (account %li) attempted to log into account %li, but did not have sufficient permissions", username.c_str(), suid, conn->getRequestedAdminSuid()));
|
||||
LOG("CustomerService", ("AdminLogin: User %s (account %li) attempted to log into account %" PRId64 ", but did not have sufficient permissions", username.c_str(), suid, conn->getRequestedAdminSuid()));
|
||||
} else {
|
||||
suid = conn->getRequestedAdminSuid();
|
||||
loginOK = true;
|
||||
@@ -1325,7 +1327,7 @@ LoginServer::onValidateClient(StationId suid, const std::string &username, Clien
|
||||
|
||||
//Send off request for the avatar list from the database.
|
||||
DatabaseConnection::getInstance().requestAvatarListForAccount(suid, 0);
|
||||
LOG("LoginClientConnection", ("onValidateClient() for stationId (%lu) at IP (%s), id (%s), requesting avatar list for account", suid, conn->getRemoteAddress().c_str(), username.c_str()));
|
||||
LOG("LoginClientConnection", ("onValidateClient() for stationId (%" PRId64 ") at IP (%s), id (%s), requesting avatar list for account", suid, conn->getRemoteAddress().c_str(), username.c_str()));
|
||||
|
||||
//Set up the connection as being validated with this suid.
|
||||
conn->setIsValidated(true);
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
//
|
||||
// ======================================================================
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "serverDatabase/FirstServerDatabase.h"
|
||||
#include "serverDatabase/DataLookup.h"
|
||||
|
||||
@@ -178,7 +180,7 @@ void DataLookup::onRetrieveItemComplete(NetworkId const &ownerId, NetworkId cons
|
||||
|
||||
void DataLookup::verifyName(uint32 gameServer, VerifyNameRequest * request)
|
||||
{
|
||||
DEBUG_REPORT_LOG(true, ("verifyName: stationId %lu, process %lu, name %s: ", request->getStationId(), gameServer, Unicode::wideToNarrow(request->getCharacterName()).c_str()));
|
||||
DEBUG_REPORT_LOG(true, ("verifyName: stationId %" PRId64 ", process %lu, name %s: ", request->getStationId(), gameServer, Unicode::wideToNarrow(request->getCharacterName()).c_str()));
|
||||
Unicode::String name = normalizeName(request->getCharacterName());
|
||||
|
||||
reservationList * rl = getReservationList(request->getStationId());
|
||||
@@ -250,8 +252,8 @@ void DataLookup::verifyName(uint32 gameServer, VerifyNameRequest * request)
|
||||
{
|
||||
if (i->name == name)
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("Name (%s) requested by station ID %lu is already reserved by another station ID %lu and/or another character on the same station ID", Unicode::wideToNarrow(request->getCharacterName()).c_str(), request->getStationId(), j->first));
|
||||
DEBUG_REPORT_LOG(true, ("Name (%s) requested by station ID %lu is already reserved by another station ID %lu and/or another character on the same station ID\n", Unicode::wideToNarrow(request->getCharacterName()).c_str(), request->getStationId(), j->first));
|
||||
LOG("TraceCharacterCreation", ("Name (%s) requested by station ID %" PRId64 " is already reserved by another station ID %" PRId64 " and/or another character on the same station ID", Unicode::wideToNarrow(request->getCharacterName()).c_str(), request->getStationId(), j->first));
|
||||
DEBUG_REPORT_LOG(true, ("Name (%s) requested by station ID %" PRId64 " is already reserved by another station ID %" PRId64 " and/or another character on the same station ID\n", Unicode::wideToNarrow(request->getCharacterName()).c_str(), request->getStationId(), j->first));
|
||||
GameServerConnection * g = DatabaseProcess::getInstance().getConnectionByProcess(gameServer);
|
||||
VerifyNameResponse vnr(request->getStationId(), request->getCharacterId(), request->getCreatureTemplate(), request->getCharacterName(), NameErrors::nameDeclinedInUse);
|
||||
g->send(vnr, true);
|
||||
@@ -296,7 +298,7 @@ void DataLookup::onCharacterNameChecked(uint32 stationId, const Unicode::String
|
||||
reservationList * rl = getReservationList(stationId);
|
||||
if (!rl)
|
||||
{
|
||||
DEBUG_REPORT_LOG(true, ("Received onCharacterNameChecked (%s) for non-pending name stationid %lu\n", reason.getText().c_str(), stationId));
|
||||
DEBUG_REPORT_LOG(true, ("Received onCharacterNameChecked (%s) for non-pending name stationid %" PRId64 "\n", reason.getText().c_str(), stationId));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -311,20 +313,20 @@ void DataLookup::onCharacterNameChecked(uint32 stationId, const Unicode::String
|
||||
if (g)
|
||||
g->send(vnr, true);
|
||||
else
|
||||
DEBUG_REPORT_LOG(true,("VerifyNameResponse for %lu dropped because GameServer has dropped connection.\n",stationId));
|
||||
DEBUG_REPORT_LOG(true,("VerifyNameResponse for %" PRId64 " dropped because GameServer has dropped connection.\n",stationId));
|
||||
}
|
||||
}
|
||||
|
||||
if (reason != NameErrors::nameApproved)
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d name released", stationId));
|
||||
DEBUG_REPORT_LOG(true, ("Name %s verified for stationId %lu: %s.\n", Unicode::wideToNarrow(name).c_str(), stationId, reason.getText().c_str()));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " name released", stationId));
|
||||
DEBUG_REPORT_LOG(true, ("Name %s verified for stationId %" PRId64 ": %s.\n", Unicode::wideToNarrow(name).c_str(), stationId, reason.getText().c_str()));
|
||||
releaseName(stationId, name);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d name %s verified", stationId, Unicode::wideToNarrow(name).c_str()));
|
||||
DEBUG_REPORT_LOG(true, ("Name %s verified for stationId %lu: %s, holding reservation.\n", Unicode::wideToNarrow(name).c_str(), stationId, reason.getText().c_str()));
|
||||
LOG("TraceCharacterCreation", ("%" PRId64 " name %s verified", stationId, Unicode::wideToNarrow(name).c_str()));
|
||||
DEBUG_REPORT_LOG(true, ("Name %s verified for stationId %" PRId64 ": %s, holding reservation.\n", Unicode::wideToNarrow(name).c_str(), stationId, reason.getText().c_str()));
|
||||
approveName(stationId, name);
|
||||
}
|
||||
}
|
||||
@@ -336,7 +338,7 @@ void DataLookup::releaseName(uint32 stationId, const NetworkId & characterId)
|
||||
reservationList * rl = getReservationList(stationId);
|
||||
if (!rl)
|
||||
{
|
||||
WARNING(true, ("Releasing names for stationId %lu, characterId %s, but no reservations found.\n", stationId, characterId.getValueString().c_str()));
|
||||
WARNING(true, ("Releasing names for stationId %" PRId64 ", characterId %s, but no reservations found.\n", stationId, characterId.getValueString().c_str()));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -356,7 +358,7 @@ void DataLookup::releaseName(uint32 stationId, const NetworkId & characterId)
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_REPORT_LOG(true, ("Releasing %d names for stationId %lu, characterId %s\n", erased, stationId, characterId.getValueString().c_str()));
|
||||
DEBUG_REPORT_LOG(true, ("Releasing %d names for stationId % " PRId64 ", characterId %s\n", erased, stationId, characterId.getValueString().c_str()));
|
||||
|
||||
rl->swap(newReservations);
|
||||
if (rl->empty())
|
||||
@@ -372,7 +374,7 @@ void DataLookup::releaseName(uint32 stationId, const Unicode::String &i_name)
|
||||
reservationList * rl = getReservationList(stationId);
|
||||
if (!rl)
|
||||
{
|
||||
WARNING(true, ("Releasing name [%s] for stationId %lu, but no reservations found.\n", Unicode::wideToNarrow(i_name).c_str(), stationId));
|
||||
WARNING(true, ("Releasing name [%s] for stationId %" PRId64 ", but no reservations found.\n", Unicode::wideToNarrow(i_name).c_str(), stationId));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -392,7 +394,7 @@ void DataLookup::releaseName(uint32 stationId, const Unicode::String &i_name)
|
||||
}
|
||||
}
|
||||
|
||||
DEBUG_REPORT_LOG(true, ("Releasing %d names for stationId %lu, name (%s)\n", erased, stationId, Unicode::wideToNarrow(i_name).c_str()));
|
||||
DEBUG_REPORT_LOG(true, ("Releasing %d names for stationId %" PRId64 ", name (%s)\n", erased, stationId, Unicode::wideToNarrow(i_name).c_str()));
|
||||
|
||||
rl->swap(newReservations);
|
||||
if (rl->empty())
|
||||
@@ -408,7 +410,7 @@ void DataLookup::approveName(uint32 stationId, const Unicode::String &i_name)
|
||||
reservationList * rl = getReservationList(stationId);
|
||||
if (!rl)
|
||||
{
|
||||
WARNING_STRICT_FATAL(true, ("Approving name for stationId %lu, but name not found.\n", stationId));
|
||||
WARNING_STRICT_FATAL(true, ("Approving name for stationId %" PRId64 ", but name not found.\n", stationId));
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -484,7 +486,7 @@ DataLookup::reservationList * DataLookup::getReservationList(uint32 stationId)
|
||||
DataLookup::reservationList * DataLookup::newReservationList(uint32 stationId)
|
||||
{
|
||||
reservationList * result = new reservationList;
|
||||
DEBUG_FATAL(m_reservations.find(stationId) != m_reservations.end(), ("DataLookup::newReservationList called, but there is already a reservationList for this stationId %lu.", stationId));
|
||||
DEBUG_FATAL(m_reservations.find(stationId) != m_reservations.end(), ("DataLookup::newReservationList called, but there is already a reservationList for this stationId %" PRId64 ".", stationId));
|
||||
m_reservations[stationId] = result;
|
||||
return result;
|
||||
}
|
||||
@@ -512,7 +514,7 @@ void DataLookup::deleteReservationList(uint32 stationId)
|
||||
reservationList * rl = rlIter->second;
|
||||
if (!rl)
|
||||
{
|
||||
WARNING_STRICT_FATAL(true, ("Reservation list for stationID %lu is nullptr", stationId));
|
||||
WARNING_STRICT_FATAL(true, ("Reservation list for stationID %" PRId64 " is null", stationId));
|
||||
return;
|
||||
}
|
||||
reservationList::iterator i;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "serverDatabase/FirstServerDatabase.h"
|
||||
#include "TaskChangeStationId.h"
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <vector>
|
||||
#include "sharedLog/Log.h"
|
||||
#include "serverNetworkMessages/TransferAccountData.h"
|
||||
@@ -57,7 +58,7 @@ bool TaskChangeStationId::process(DB::Session *session)
|
||||
|
||||
void TaskChangeStationId::onComplete()
|
||||
{
|
||||
LOG("CustomerService", ("CharacterTransfer: Completed changing station id from %lu to %lu in game database", m_sourceStationId, m_destinationStationId));
|
||||
LOG("CustomerService", ("CharacterTransfer: Completed changing station id from %" PRId64 " to %" PRId64 " in game database", m_sourceStationId, m_destinationStationId));
|
||||
}
|
||||
|
||||
// ======================================================================
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#include "serverGame/FirstServerGame.h"
|
||||
#include "serverGame/GameServer.h"
|
||||
|
||||
#include <inttypes.h>
|
||||
|
||||
#include "serverGame/AiMovementBase.h"
|
||||
#include "serverGame/AiCreatureController.h"
|
||||
#include "serverGame/AiShipController.h"
|
||||
@@ -4480,7 +4482,7 @@ void GameServer::handleCreateCharacter(const CentralCreateCharacter * createMess
|
||||
if (NameManager::getInstance().getPlayerId(NameManager::normalizeName(Unicode::wideToNarrow(createMessage->getCharacterName()))) != NetworkId::cms_invalid)
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d character create name %s is in use, sending GameCreateCharacterFailed", createMessage->getStationId(), Unicode::wideToNarrow(createMessage->getCharacterName()).c_str()));
|
||||
DEBUG_REPORT_LOG(true, ("Character create name %s is in use, declined for stationId %lu\n", Unicode::wideToNarrow(createMessage->getCharacterName()).c_str(), createMessage->getStationId()));
|
||||
DEBUG_REPORT_LOG(true, ("Character create name %s is in use, declined for stationId %" PRId64 "\n", Unicode::wideToNarrow(createMessage->getCharacterName()).c_str(), createMessage->getStationId()));
|
||||
GameCreateCharacterFailed const characterCreateFailed(createMessage->getStationId(), createMessage->getCharacterName(), NameErrors::nameDeclinedInUse, FormattedString<2048>().sprintf("%lu character create name %s is in use, sending GameCreateCharacterFailed", createMessage->getStationId(), Unicode::wideToNarrow(createMessage->getCharacterName()).c_str()));
|
||||
sendToCentralServer(characterCreateFailed);
|
||||
delete createMessage;
|
||||
@@ -4507,7 +4509,7 @@ void GameServer::handleNameFailure(const RandomNameRequest &request, const Strin
|
||||
|
||||
void GameServer::handleNameRequest(const RandomNameRequest &request)
|
||||
{
|
||||
DEBUG_REPORT_LOG(true, ("Random name requested for stationId %lu\n", request.getStationId()));
|
||||
DEBUG_REPORT_LOG(true, ("Random name requested for stationId %" PRId64 "\n", request.getStationId()));
|
||||
|
||||
std::map<uint32, const CentralCreateCharacter *>::iterator findPendingCreation=m_charactersPendingCreation->find(request.getStationId());
|
||||
if (findPendingCreation != m_charactersPendingCreation->end())
|
||||
@@ -4530,7 +4532,7 @@ void GameServer::handleNameRequest(const RandomNameRequest &request)
|
||||
|
||||
LOG("TraceCharacterCreation", ("%d generated name %s", request.getStationId(), Unicode::wideToNarrow(randomName).c_str(), request.getStationId(), request.getCreatureTemplate().c_str(), Unicode::wideToNarrow(randomName).c_str()));
|
||||
|
||||
DEBUG_REPORT_LOG(true, ("VerifyNameResponse: random name %s approved for stationId %lu\n", Unicode::wideToNarrow(randomName).c_str(), request.getStationId()));
|
||||
DEBUG_REPORT_LOG(true, ("VerifyNameResponse: random name %s approved for stationId %" PRId64 "\n", Unicode::wideToNarrow(randomName).c_str(), request.getStationId()));
|
||||
RandomNameResponse const response(request.getStationId(), request.getCreatureTemplate(), randomName, NameErrors::nameApproved);
|
||||
sendToCentralServer(response);
|
||||
|
||||
@@ -4558,7 +4560,7 @@ void GameServer::handleNameRequest(const RandomNameRequest &request)
|
||||
|
||||
const StringId GameServer::handleVerifyAndLockNameRequest(const VerifyAndLockNameRequest &request, bool sendFailedResponseToCentralServer, bool verifyAgainstDb)
|
||||
{
|
||||
REPORT_LOG(true, ("Verify and lock name requested for stationId %lu\n", request.getStationId()));
|
||||
REPORT_LOG(true, ("Verify and lock name requested for stationId %" PRId64 "\n", request.getStationId()));
|
||||
|
||||
const std::string & templateName = request.getTemplateName();
|
||||
DEBUG_REPORT_LOG(true, ("Received verify and lock name request for account %li (name %s, template %s)\n", request.getStationId(), Unicode::wideToNarrow(request.getCharacterName()).c_str(), templateName.c_str()));
|
||||
@@ -4659,7 +4661,7 @@ void GameServer::handleCharacterCreateNameVerification(const VerifyNameResponse
|
||||
if (vrn.getErrorMessage() != NameErrors::nameApproved)
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d VeryfyNameResponse character create name %s declined, sending GameCreateCharacterFailed(%d, %s, %s)", vrn.getStationId(), Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getStationId(), Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getErrorMessage().getText().c_str()));
|
||||
DEBUG_REPORT_LOG(true, ("VerifyNameResponse: character create name %s declined (%s) for stationId %lu\n", Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getErrorMessage().getText().c_str(), vrn.getStationId()));
|
||||
DEBUG_REPORT_LOG(true, ("VerifyNameResponse: character create name %s declined (%s) for stationId %" PRId64 "\n", Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getErrorMessage().getText().c_str(), vrn.getStationId()));
|
||||
GameCreateCharacterFailed const characterCreateFailed(vrn.getStationId(), vrn.getName(), vrn.getErrorMessage(), FormattedString<2048>().sprintf("%lu VeryfyNameResponse character create name %s declined, sending GameCreateCharacterFailed(%lu, %s, %s)", vrn.getStationId(), Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getStationId(), Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getErrorMessage().getText().c_str()));
|
||||
sendToCentralServer(characterCreateFailed);
|
||||
m_charactersPendingCreation->erase(vrn.getStationId());
|
||||
@@ -4668,7 +4670,7 @@ void GameServer::handleCharacterCreateNameVerification(const VerifyNameResponse
|
||||
}
|
||||
std::string templateName(createMessage->getTemplateName());
|
||||
|
||||
DEBUG_REPORT_LOG(true, ("VerifyNameResponse: character create name %s approved for stationId %lu\n", Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getStationId()));
|
||||
DEBUG_REPORT_LOG(true, ("VerifyNameResponse: character create name %s approved for stationId %" PRId64 "\n", Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getStationId()));
|
||||
|
||||
TangibleObject *newCharacterObject = 0;
|
||||
|
||||
@@ -4688,7 +4690,7 @@ void GameServer::handleCharacterCreateNameVerification(const VerifyNameResponse
|
||||
if (!newCharacterObject)
|
||||
{
|
||||
LOG("TraceCharacterCreation", ("%d could not create a new character object on the game server, sending GameCreateCharacterFailed(%d, %s, %s) to central server", vrn.getStationId(), vrn.getStationId(), Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getErrorMessage().getText().c_str()));
|
||||
DEBUG_REPORT_LOG(true, ("handleCharacterCreateNameVerification: failed to create character object (name %s, template %s, stationId %lu)\n", Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getCreatureTemplate().c_str(), vrn.getStationId()));
|
||||
DEBUG_REPORT_LOG(true, ("handleCharacterCreateNameVerification: failed to create character object (name %s, template %s, stationId %" PRId64 ")\n", Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getCreatureTemplate().c_str(), vrn.getStationId()));
|
||||
GameCreateCharacterFailed const characterCreateFailed(vrn.getStationId(), vrn.getName(), NameErrors::nameDeclinedInternalError, FormattedString<2048>().sprintf("%lu could not create a new character object on the game server, sending GameCreateCharacterFailed(%lu, %s, %s) to central server", vrn.getStationId(), vrn.getStationId(), Unicode::wideToNarrow(vrn.getName()).c_str(), vrn.getErrorMessage().getText().c_str()));
|
||||
sendToCentralServer(characterCreateFailed);
|
||||
m_charactersPendingCreation->erase(vrn.getStationId());
|
||||
|
||||
Reference in New Issue
Block a user