mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-28 08:27:22 +00:00
Breakout ServerDisconnectIdentifiers into an enum (#995)
This commit is contained in:
parent
d138b7b878
commit
6d989f37f1
@ -261,20 +261,6 @@ enum eReplicaPacketType {
|
|||||||
PACKET_TYPE_DESTRUCTION //!< A destruction packet
|
PACKET_TYPE_DESTRUCTION //!< A destruction packet
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ServerDisconnectIdentifiers {
|
|
||||||
SERVER_DISCON_UNKNOWN_SERVER_ERROR = 0, //!< Unknown server error
|
|
||||||
SERVER_DISCON_DUPLICATE_LOGIN = 4, //!< Used when another user with the same username is logged in (duplicate login)
|
|
||||||
SERVER_DISCON_SERVER_SHUTDOWN = 5, //!< Used when the server is shutdown
|
|
||||||
SERVER_DISCON_SERVER_MAP_LOAD_FAILURE = 6, //!< Used when the server cannot load a map
|
|
||||||
SERVER_DISCON_INVALID_SESSION_KEY = 7, //!< Used if the session is invalid
|
|
||||||
SERVER_DISCON_ACCOUNT_NOT_IN_PENDING_LIST = 8, //!< ???
|
|
||||||
SERVER_DISCON_CHARACTER_NOT_FOUND = 9, //!< Used if a character that the server has is not found (i.e, corruption with user-player data)
|
|
||||||
SERVER_DISCON_CHARACTER_CORRUPTED = 10, //!< Similar to abovce
|
|
||||||
SERVER_DISCON_KICK = 11, //!< Used if the user is kicked from the server
|
|
||||||
SERVER_DISCON_FREE_TRIAL_EXPIRED = 12, //!< Used if the user's free trial expired
|
|
||||||
SERVER_DISCON_PLAY_SCHEDULE_TIME_DONE = 13 //!< Used if the user's play time is used up
|
|
||||||
};
|
|
||||||
|
|
||||||
//! The Behavior Types for use with the AI system
|
//! The Behavior Types for use with the AI system
|
||||||
enum eCombatBehaviorTypes : uint32_t {
|
enum eCombatBehaviorTypes : uint32_t {
|
||||||
PASSIVE = 0, //!< The object is passive
|
PASSIVE = 0, //!< The object is passive
|
||||||
|
24
dCommon/dEnums/eServerDisconnectIdentifiers.h
Normal file
24
dCommon/dEnums/eServerDisconnectIdentifiers.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#ifndef __ESERVERDISCONNECTIDENTIFIERS__H__
|
||||||
|
#define __ESERVERDISCONNECTIDENTIFIERS__H__
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
enum class eServerDisconnectIdentifiers : uint32_t {
|
||||||
|
UNKNOWN_SERVER_ERROR = 0,
|
||||||
|
WRONG_GAME_VERSION,
|
||||||
|
WRONG_SERVER_VERSION,
|
||||||
|
CONNECTION_ON_INVALID_PORT,
|
||||||
|
DUPLICATE_LOGIN,
|
||||||
|
SERVER_SHUTDOWN,
|
||||||
|
SERVER_MAP_LOAD_FAILURE,
|
||||||
|
INVALID_SESSION_KEY,
|
||||||
|
ACCOUNT_NOT_IN_PENDING_LIST,
|
||||||
|
CHARACTER_NOT_FOUND,
|
||||||
|
CHARACTER_CORRUPTED,
|
||||||
|
KICK,
|
||||||
|
SAVE_FAILURE,
|
||||||
|
FREE_TRIAL_EXPIRED,
|
||||||
|
PLAY_SCHEDULE_TIME_DONE
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //!__ESERVERDISCONNECTIDENTIFIERS__H__
|
@ -5,6 +5,7 @@
|
|||||||
#include "dLogger.h"
|
#include "dLogger.h"
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
#include "dZoneManager.h"
|
#include "dZoneManager.h"
|
||||||
|
#include "eServerDisconnectIdentifiers.h"
|
||||||
|
|
||||||
User::User(const SystemAddress& sysAddr, const std::string& username, const std::string& sessionKey) {
|
User::User(const SystemAddress& sysAddr, const std::string& username, const std::string& sessionKey) {
|
||||||
m_AccountID = 0;
|
m_AccountID = 0;
|
||||||
@ -126,6 +127,6 @@ void User::UserOutOfSync() {
|
|||||||
if (m_AmountOfTimesOutOfSync > m_MaxDesyncAllowed) {
|
if (m_AmountOfTimesOutOfSync > m_MaxDesyncAllowed) {
|
||||||
//YEET
|
//YEET
|
||||||
Game::logger->Log("User", "User %s was out of sync %i times out of %i, disconnecting for suspected speedhacking.", m_Username.c_str(), m_AmountOfTimesOutOfSync, m_MaxDesyncAllowed);
|
Game::logger->Log("User", "User %s was out of sync %i times out of %i, disconnecting for suspected speedhacking.", m_Username.c_str(), m_AmountOfTimesOutOfSync, m_MaxDesyncAllowed);
|
||||||
Game::server->Disconnect(this->m_SystemAddress, SERVER_DISCON_KICK);
|
Game::server->Disconnect(this->m_SystemAddress, eServerDisconnectIdentifiers::PLAY_SCHEDULE_TIME_DONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,6 +74,7 @@
|
|||||||
#include "dMessageIdentifiers.h"
|
#include "dMessageIdentifiers.h"
|
||||||
#include "eMissionState.h"
|
#include "eMissionState.h"
|
||||||
#include "TriggerComponent.h"
|
#include "TriggerComponent.h"
|
||||||
|
#include "eServerDisconnectIdentifiers.h"
|
||||||
|
|
||||||
void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entity* entity, const SystemAddress& sysAddr) {
|
void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entity* entity, const SystemAddress& sysAddr) {
|
||||||
std::string chatCommand;
|
std::string chatCommand;
|
||||||
@ -1094,7 +1095,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Game::server->Disconnect(player->GetSystemAddress(), SERVER_DISCON_KICK);
|
Game::server->Disconnect(player->GetSystemAddress(), eServerDisconnectIdentifiers::KICK);
|
||||||
|
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Kicked: " + username);
|
ChatPackets::SendSystemMessage(sysAddr, u"Kicked: " + username);
|
||||||
} else {
|
} else {
|
||||||
@ -1140,7 +1141,7 @@ void SlashCommandHandler::HandleChatCommand(const std::u16string& command, Entit
|
|||||||
delete userUpdate;
|
delete userUpdate;
|
||||||
|
|
||||||
if (player != nullptr) {
|
if (player != nullptr) {
|
||||||
Game::server->Disconnect(player->GetSystemAddress(), SERVER_DISCON_KICK);
|
Game::server->Disconnect(player->GetSystemAddress(), eServerDisconnectIdentifiers::FREE_TRIAL_EXPIRED);
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatPackets::SendSystemMessage(sysAddr, u"Banned: " + GeneralUtils::ASCIIToUTF16(args[0]));
|
ChatPackets::SendSystemMessage(sysAddr, u"Banned: " + GeneralUtils::ASCIIToUTF16(args[0]));
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include "Game.h"
|
#include "Game.h"
|
||||||
#include "dConfig.h"
|
#include "dConfig.h"
|
||||||
|
#include "eServerDisconnectIdentifiers.h"
|
||||||
|
|
||||||
void AuthPackets::HandleHandshake(dServer* server, Packet* packet) {
|
void AuthPackets::HandleHandshake(dServer* server, Packet* packet) {
|
||||||
RakNet::BitStream inStream(packet->data, packet->length, false);
|
RakNet::BitStream inStream(packet->data, packet->length, false);
|
||||||
|
@ -164,7 +164,7 @@ void dServer::SendToMaster(RakNet::BitStream* bitStream) {
|
|||||||
mMasterPeer->Send(bitStream, SYSTEM_PRIORITY, RELIABLE_ORDERED, 0, mMasterSystemAddress, false);
|
mMasterPeer->Send(bitStream, SYSTEM_PRIORITY, RELIABLE_ORDERED, 0, mMasterSystemAddress, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dServer::Disconnect(const SystemAddress& sysAddr, uint32_t disconNotifyID) {
|
void dServer::Disconnect(const SystemAddress& sysAddr, eServerDisconnectIdentifiers disconNotifyID) {
|
||||||
RakNet::BitStream bitStream;
|
RakNet::BitStream bitStream;
|
||||||
PacketUtils::WriteHeader(bitStream, SERVER, MSG_SERVER_DISCONNECT_NOTIFY);
|
PacketUtils::WriteHeader(bitStream, SERVER, MSG_SERVER_DISCONNECT_NOTIFY);
|
||||||
bitStream.Write(disconNotifyID);
|
bitStream.Write(disconNotifyID);
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
class dLogger;
|
class dLogger;
|
||||||
class dConfig;
|
class dConfig;
|
||||||
|
enum class eServerDisconnectIdentifiers : uint32_t;
|
||||||
|
|
||||||
enum class ServerType : uint32_t {
|
enum class ServerType : uint32_t {
|
||||||
Master,
|
Master,
|
||||||
@ -41,7 +42,7 @@ public:
|
|||||||
virtual void Send(RakNet::BitStream* bitStream, const SystemAddress& sysAddr, bool broadcast);
|
virtual void Send(RakNet::BitStream* bitStream, const SystemAddress& sysAddr, bool broadcast);
|
||||||
void SendToMaster(RakNet::BitStream* bitStream);
|
void SendToMaster(RakNet::BitStream* bitStream);
|
||||||
|
|
||||||
void Disconnect(const SystemAddress& sysAddr, uint32_t disconNotifyID);
|
void Disconnect(const SystemAddress& sysAddr, eServerDisconnectIdentifiers disconNotifyID);
|
||||||
|
|
||||||
bool IsConnected(const SystemAddress& sysAddr);
|
bool IsConnected(const SystemAddress& sysAddr);
|
||||||
const std::string& GetIP() const { return mIP; }
|
const std::string& GetIP() const { return mIP; }
|
||||||
|
@ -63,6 +63,7 @@
|
|||||||
#include "eBlueprintSaveResponseType.h"
|
#include "eBlueprintSaveResponseType.h"
|
||||||
#include "AMFFormat.h"
|
#include "AMFFormat.h"
|
||||||
#include "NiPoint3.h"
|
#include "NiPoint3.h"
|
||||||
|
#include "eServerDisconnectIdentifiers.h"
|
||||||
|
|
||||||
#include "ZCompression.h"
|
#include "ZCompression.h"
|
||||||
|
|
||||||
@ -765,7 +766,7 @@ void HandlePacket(Packet* packet) {
|
|||||||
//Verify it:
|
//Verify it:
|
||||||
if (userHash != it->second.hash) {
|
if (userHash != it->second.hash) {
|
||||||
Game::logger->Log("WorldServer", "SOMEONE IS TRYING TO HACK? SESSION KEY MISMATCH: ours: %s != master: %s", userHash.c_str(), it->second.hash.c_str());
|
Game::logger->Log("WorldServer", "SOMEONE IS TRYING TO HACK? SESSION KEY MISMATCH: ours: %s != master: %s", userHash.c_str(), it->second.hash.c_str());
|
||||||
Game::server->Disconnect(it->second.sysAddr, SERVER_DISCON_INVALID_SESSION_KEY);
|
Game::server->Disconnect(it->second.sysAddr, eServerDisconnectIdentifiers::INVALID_SESSION_KEY);
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
Game::logger->Log("WorldServer", "User %s authenticated with correct key.", username.c_str());
|
Game::logger->Log("WorldServer", "User %s authenticated with correct key.", username.c_str());
|
||||||
@ -855,7 +856,7 @@ void HandlePacket(Packet* packet) {
|
|||||||
//Check the key:
|
//Check the key:
|
||||||
if (sessionKey != std::atoi(user->GetSessionKey().c_str())) {
|
if (sessionKey != std::atoi(user->GetSessionKey().c_str())) {
|
||||||
Game::logger->Log("WorldServer", "Got new session alert for user %s, but the session key is invalid.", username.c_str());
|
Game::logger->Log("WorldServer", "Got new session alert for user %s, but the session key is invalid.", username.c_str());
|
||||||
Game::server->Disconnect(user->GetSystemAddress(), SERVER_DISCON_INVALID_SESSION_KEY);
|
Game::server->Disconnect(user->GetSystemAddress(), eServerDisconnectIdentifiers::INVALID_SESSION_KEY);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -896,7 +897,7 @@ void HandlePacket(Packet* packet) {
|
|||||||
// Developers may skip this check
|
// Developers may skip this check
|
||||||
if (gmLevel < 8 && clientDatabaseChecksum != databaseChecksum) {
|
if (gmLevel < 8 && clientDatabaseChecksum != databaseChecksum) {
|
||||||
Game::logger->Log("WorldServer", "Client's database checksum does not match the server's, aborting connection.");
|
Game::logger->Log("WorldServer", "Client's database checksum does not match the server's, aborting connection.");
|
||||||
Game::server->Disconnect(packet->systemAddress, SERVER_DISCON_KICK);
|
Game::server->Disconnect(packet->systemAddress, eServerDisconnectIdentifiers::WRONG_GAME_VERSION);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1184,7 +1185,7 @@ void HandlePacket(Packet* packet) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Game::logger->Log("WorldServer", "Couldn't find character to log in with for user %s (%i)!", user->GetUsername().c_str(), user->GetAccountID());
|
Game::logger->Log("WorldServer", "Couldn't find character to log in with for user %s (%i)!", user->GetUsername().c_str(), user->GetAccountID());
|
||||||
Game::server->Disconnect(packet->systemAddress, SERVER_DISCON_CHARACTER_NOT_FOUND);
|
Game::server->Disconnect(packet->systemAddress, eServerDisconnectIdentifiers::CHARACTER_NOT_FOUND);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Game::logger->Log("WorldServer", "Couldn't get user for level load complete!");
|
Game::logger->Log("WorldServer", "Couldn't get user for level load complete!");
|
||||||
@ -1269,7 +1270,7 @@ void HandlePacket(Packet* packet) {
|
|||||||
if (user) {
|
if (user) {
|
||||||
user->UserOutOfSync();
|
user->UserOutOfSync();
|
||||||
} else {
|
} else {
|
||||||
Game::server->Disconnect(packet->systemAddress, SERVER_DISCON_KICK);
|
Game::server->Disconnect(packet->systemAddress, eServerDisconnectIdentifiers::KICK);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1309,7 +1310,7 @@ void WorldShutdownProcess(uint32_t zoneId) {
|
|||||||
while (Game::server->GetReplicaManager()->GetParticipantCount() > 0) {
|
while (Game::server->GetReplicaManager()->GetParticipantCount() > 0) {
|
||||||
const auto& player = Game::server->GetReplicaManager()->GetParticipantAtIndex(0);
|
const auto& player = Game::server->GetReplicaManager()->GetParticipantAtIndex(0);
|
||||||
|
|
||||||
Game::server->Disconnect(player, SERVER_DISCON_KICK);
|
Game::server->Disconnect(player, eServerDisconnectIdentifiers::SERVER_SHUTDOWN);
|
||||||
}
|
}
|
||||||
SendShutdownMessageToMaster();
|
SendShutdownMessageToMaster();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user