mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 17:51:28 +00:00
110 lines
3.4 KiB
C++
110 lines
3.4 KiB
C++
/* EQEMu: Everquest Server Emulator
|
|
Copyright (C) 2001-2002 EQEMu Development Team (http://eqemu.org)
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; version 2 of the License.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY except by those people which sell it, which
|
|
are required to give you total support for your newly bought product;
|
|
without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
|
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
*/
|
|
#ifndef CONSOLE_H
|
|
#define CONSOLE_H
|
|
|
|
enum {
|
|
consoleLoginStatus = 50, //ability to log in, basic commands.
|
|
httpLoginStatus = 100, //can log into the HTTP interface
|
|
consoleFlagStatus = 200, //flag
|
|
consoleKickStatus = 150, //kick
|
|
consoleLockStatus = 150, //world lock/unlock
|
|
consoleZoneStatus = 150, //zone up/down/lock
|
|
consolePassStatus = 200, //change password
|
|
consoleWorldStatus = 200, //world shutdown
|
|
consoleOpcodesStatus = 250
|
|
};
|
|
|
|
#define CONSOLE_STATE_USERNAME 0
|
|
#define CONSOLE_STATE_PASSWORD 1
|
|
#define CONSOLE_STATE_CONNECTED 2
|
|
#define CONSOLE_STATE_CLOSED 3
|
|
|
|
#include "../common/linked_list.h"
|
|
#include "../common/timer.h"
|
|
#include "../common/queue.h"
|
|
#include "../common/emu_tcp_connection.h"
|
|
#include "world_tcp_connection.h"
|
|
#include "../common/mutex.h"
|
|
|
|
struct ServerChannelMessage_Struct;
|
|
|
|
class Console : public WorldTCPConnection {
|
|
public:
|
|
Console(EmuTCPConnection* itcpc);
|
|
virtual ~Console();
|
|
virtual inline bool IsConsole() { return true; }
|
|
|
|
bool Process();
|
|
void Send(const char* message);
|
|
int16 Admin() { return admin; }
|
|
uint32 GetIP() { return tcpc->GetrIP(); }
|
|
uint16 GetPort() { return tcpc->GetrPort(); }
|
|
void ProcessCommand(const char* command);
|
|
void Die();
|
|
|
|
bool SendChannelMessage(const ServerChannelMessage_Struct* scm);
|
|
bool SendEmoteMessage(uint32 type, const char* message, ...);
|
|
bool SendEmoteMessageRaw(uint32 type, const char* message);
|
|
void SendEmoteMessage(const char* to, uint32 to_guilddbid, int16 to_minstatus, uint32 type, const char* message, ...);
|
|
void SendEmoteMessageRaw(const char* to, uint32 to_guilddbid, int16 to_minstatus, uint32 type, const char* message);
|
|
void SendMessage(uint8 newline, const char* message, ...);
|
|
|
|
const char* GetName() { return paccountname; }
|
|
const char* AccountName() { return paccountname; }
|
|
uint32 AccountID() { return paccountid; }
|
|
private:
|
|
EmuTCPConnection* tcpc;
|
|
|
|
Timer timeout_timer;
|
|
Timer prompt_timer;
|
|
|
|
void SendPrompt();
|
|
|
|
uint32 paccountid;
|
|
char paccountname[30];
|
|
bool pAcceptMessages;
|
|
|
|
uint8 state;
|
|
|
|
int16 admin;
|
|
uchar textbuf[1024];
|
|
int bufindex;
|
|
};
|
|
|
|
class ConsoleList
|
|
{
|
|
public:
|
|
ConsoleList() {}
|
|
~ConsoleList() {}
|
|
|
|
void Add(Console* con);
|
|
void Process();
|
|
void KillAll();
|
|
|
|
void SendChannelMessage(const ServerChannelMessage_Struct* scm);
|
|
void SendConsoleWho(WorldTCPConnection* connection, const char* to, int16 admin, char** output, uint32* outsize, uint32* outlen);
|
|
void SendEmoteMessage(uint32 type, const char* message, ...);
|
|
void SendEmoteMessageRaw(uint32 type, const char* message);
|
|
Console* FindByAccountName(const char* accname);
|
|
private:
|
|
LinkedList<Console*> list;
|
|
};
|
|
#endif
|
|
|