OpenTTD Source  20240919-master-gdf0233f4c2
tcp_admin.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of OpenTTD.
3  * OpenTTD 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.
4  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
6  */
7 
12 #include "../../stdafx.h"
13 
14 #include "../network_internal.h"
15 #include "tcp_admin.h"
16 #include "../../debug.h"
17 
18 #include "../../safeguards.h"
19 
20 /* Make sure that these enums match. */
21 static_assert((int)CRR_MANUAL == (int)ADMIN_CRR_MANUAL);
22 static_assert((int)CRR_AUTOCLEAN == (int)ADMIN_CRR_AUTOCLEAN);
23 static_assert((int)CRR_BANKRUPT == (int)ADMIN_CRR_BANKRUPT);
24 static_assert((int)CRR_END == (int)ADMIN_CRR_END);
25 
31 {
32  this->sock = s;
33 }
34 
36 {
37  delete this;
39 }
40 
47 {
49 
50  if (this->HasClientQuit()) {
51  Debug(net, 0, "[tcp/admin] Received invalid packet from '{}' ({})", this->admin_name, this->admin_version);
52  this->CloseConnection();
54  }
55 
56  switch (type) {
57  case ADMIN_PACKET_ADMIN_JOIN: return this->Receive_ADMIN_JOIN(p);
58  case ADMIN_PACKET_ADMIN_QUIT: return this->Receive_ADMIN_QUIT(p);
60  case ADMIN_PACKET_ADMIN_POLL: return this->Receive_ADMIN_POLL(p);
61  case ADMIN_PACKET_ADMIN_CHAT: return this->Receive_ADMIN_CHAT(p);
63  case ADMIN_PACKET_ADMIN_RCON: return this->Receive_ADMIN_RCON(p);
65  case ADMIN_PACKET_ADMIN_PING: return this->Receive_ADMIN_PING(p);
68 
69  case ADMIN_PACKET_SERVER_FULL: return this->Receive_SERVER_FULL(p);
71  case ADMIN_PACKET_SERVER_ERROR: return this->Receive_SERVER_ERROR(p);
76 
77  case ADMIN_PACKET_SERVER_DATE: return this->Receive_SERVER_DATE(p);
89  case ADMIN_PACKET_SERVER_CHAT: return this->Receive_SERVER_CHAT(p);
90  case ADMIN_PACKET_SERVER_RCON: return this->Receive_SERVER_RCON(p);
95  case ADMIN_PACKET_SERVER_PONG: return this->Receive_SERVER_PONG(p);
98 
99  default:
100  Debug(net, 0, "[tcp/admin] Received invalid packet type {} from '{}' ({})", type, this->admin_name, this->admin_version);
101  this->CloseConnection();
103  }
104 }
105 
114 {
115  std::unique_ptr<Packet> p;
116  while ((p = this->ReceivePacket()) != nullptr) {
117  NetworkRecvStatus res = this->HandlePacket(*p);
118  if (res != NETWORK_RECV_STATUS_OKAY) return res;
119  }
120 
122 }
123 
130 {
131  Debug(net, 0, "[tcp/admin] Received illegal packet type {} from admin {} ({})", type, this->admin_name, this->admin_version);
133 }
134 
146 
154 
NetworkAdminSocketHandler::Receive_ADMIN_RCON
virtual NetworkRecvStatus Receive_ADMIN_RCON(Packet &p)
Execute a command on the servers console: string Command to be executed.
Definition: tcp_admin.cpp:141
NetworkAdminSocketHandler::Receive_SERVER_RCON
virtual NetworkRecvStatus Receive_SERVER_RCON(Packet &p)
Result of an rcon command: uint16_t Colour as it would be used on the server or a client.
Definition: tcp_admin.cpp:168
ADMIN_PACKET_SERVER_COMPANY_NEW
@ ADMIN_PACKET_SERVER_COMPANY_NEW
The server tells the admin that a new company has started.
Definition: tcp_admin.h:51
NETWORK_RECV_STATUS_CLIENT_QUIT
@ NETWORK_RECV_STATUS_CLIENT_QUIT
The connection is lost gracefully. Other clients are already informed of this leaving client.
Definition: core.h:28
ADMIN_PACKET_SERVER_SHUTDOWN
@ ADMIN_PACKET_SERVER_SHUTDOWN
The server tells the admin its shutting down.
Definition: tcp_admin.h:43
NetworkAdminSocketHandler::admin_version
std::string admin_version
Version string of the admin.
Definition: tcp_admin.h:120
NetworkAdminSocketHandler::Receive_ADMIN_PING
virtual NetworkRecvStatus Receive_ADMIN_PING(Packet &p)
Ping the server, requiring the server to reply with a pong packet.
Definition: tcp_admin.cpp:143
NetworkAdminSocketHandler::CloseConnection
NetworkRecvStatus CloseConnection(bool error=true) override
This will put this socket handler in a close state.
Definition: tcp_admin.cpp:35
NetworkAdminSocketHandler::admin_name
std::string admin_name
Name of the admin.
Definition: tcp_admin.h:119
NetworkAdminSocketHandler::Receive_SERVER_COMPANY_ECONOMY
virtual NetworkRecvStatus Receive_SERVER_COMPANY_ECONOMY(Packet &p)
Economy update of a specific company: uint8_t ID of the company.
Definition: tcp_admin.cpp:165
NetworkAdminSocketHandler::Receive_ADMIN_AUTH_RESPONSE
virtual NetworkRecvStatus Receive_ADMIN_AUTH_RESPONSE(Packet &p)
Admin responds to ADMIN_PACKET_SERVER_AUTH_REQUEST with the appropriate data given the agreed upon Ne...
Definition: tcp_admin.cpp:145
NetworkAdminSocketHandler::Receive_SERVER_CLIENT_QUIT
virtual NetworkRecvStatus Receive_SERVER_CLIENT_QUIT(Packet &p)
Notification about a client leaving the game.
Definition: tcp_admin.cpp:159
ADMIN_PACKET_SERVER_PONG
@ ADMIN_PACKET_SERVER_PONG
The server replies to a ping request from the admin.
Definition: tcp_admin.h:64
NetworkAdminSocketHandler::Receive_SERVER_CMD_LOGGING
virtual NetworkRecvStatus Receive_SERVER_CMD_LOGGING(Packet &p)
Send incoming command packets to the admin network.
Definition: tcp_admin.cpp:171
ADMIN_PACKET_SERVER_CMD_NAMES
@ ADMIN_PACKET_SERVER_CMD_NAMES
The server sends out the names of the DoCommands to the admins.
Definition: tcp_admin.h:60
NetworkAdminSocketHandler::Receive_SERVER_SHUTDOWN
virtual NetworkRecvStatus Receive_SERVER_SHUTDOWN(Packet &p)
Notification about the server shutting down.
Definition: tcp_admin.cpp:153
NetworkAdminSocketHandler::Receive_SERVER_RCON_END
virtual NetworkRecvStatus Receive_SERVER_RCON_END(Packet &p)
Notify the admin connection that the rcon command has finished.
Definition: tcp_admin.cpp:172
NetworkAdminSocketHandler::HandlePacket
NetworkRecvStatus HandlePacket(Packet &p)
Handle the given packet, i.e.
Definition: tcp_admin.cpp:46
NetworkTCPSocketHandler::sock
SOCKET sock
The socket currently connected to.
Definition: tcp.h:38
NetworkAdminSocketHandler::Receive_ADMIN_JOIN_SECURE
virtual NetworkRecvStatus Receive_ADMIN_JOIN_SECURE(Packet &p)
Join the admin network using a secure authentication method: string Name of the application being use...
Definition: tcp_admin.cpp:144
ADMIN_PACKET_ADMIN_QUIT
@ ADMIN_PACKET_ADMIN_QUIT
The admin tells the server that it is quitting.
Definition: tcp_admin.h:26
NetworkAdminSocketHandler::ReceivePackets
NetworkRecvStatus ReceivePackets()
Do the actual receiving of packets.
Definition: tcp_admin.cpp:113
NetworkAdminSocketHandler::Receive_SERVER_NEWGAME
virtual NetworkRecvStatus Receive_SERVER_NEWGAME(Packet &p)
Notification about a newgame.
Definition: tcp_admin.cpp:152
ADMIN_PACKET_SERVER_RCON_END
@ ADMIN_PACKET_SERVER_RCON_END
The server indicates that the remote console command has completed.
Definition: tcp_admin.h:63
ADMIN_PACKET_SERVER_RCON
@ ADMIN_PACKET_SERVER_RCON
The server's reply to a remove console command.
Definition: tcp_admin.h:58
ADMIN_PACKET_SERVER_NEWGAME
@ ADMIN_PACKET_SERVER_NEWGAME
The server tells the admin its going to start a new game.
Definition: tcp_admin.h:42
ADMIN_PACKET_SERVER_CMD_LOGGING
@ ADMIN_PACKET_SERVER_CMD_LOGGING
The server gives the admin copies of incoming command packets.
Definition: tcp_admin.h:65
ADMIN_PACKET_SERVER_CLIENT_ERROR
@ ADMIN_PACKET_SERVER_CLIENT_ERROR
The server tells the admin that a client caused an error.
Definition: tcp_admin.h:50
Debug
#define Debug(category, level, format_string,...)
Ouptut a line of debugging information.
Definition: debug.h:37
ADMIN_PACKET_SERVER_PROTOCOL
@ ADMIN_PACKET_SERVER_PROTOCOL
The server tells the admin its protocol version.
Definition: tcp_admin.h:40
ADMIN_PACKET_ADMIN_POLL
@ ADMIN_PACKET_ADMIN_POLL
The admin explicitly polls for a piece of information.
Definition: tcp_admin.h:28
ADMIN_PACKET_SERVER_CHAT
@ ADMIN_PACKET_SERVER_CHAT
The server received a chat message and relays it.
Definition: tcp_admin.h:57
ADMIN_STATUS_INACTIVE
@ ADMIN_STATUS_INACTIVE
The admin is not connected nor active.
Definition: tcp_admin.h:74
ADMIN_PACKET_SERVER_COMPANY_ECONOMY
@ ADMIN_PACKET_SERVER_COMPANY_ECONOMY
The server gives the admin some economy related company information.
Definition: tcp_admin.h:55
NetworkAdminSocketHandler::Receive_ADMIN_EXTERNAL_CHAT
virtual NetworkRecvStatus Receive_ADMIN_EXTERNAL_CHAT(Packet &p)
Send chat from the external source: string Name of the source this message came from.
Definition: tcp_admin.cpp:140
ADMIN_PACKET_ADMIN_RCON
@ ADMIN_PACKET_ADMIN_RCON
The admin sends a remote console command.
Definition: tcp_admin.h:30
ADMIN_PACKET_ADMIN_CHAT
@ ADMIN_PACKET_ADMIN_CHAT
The admin sends a chat message to be distributed.
Definition: tcp_admin.h:29
ADMIN_PACKET_ADMIN_JOIN
@ ADMIN_PACKET_ADMIN_JOIN
The admin announces and authenticates itself to the server using an unsecured passwords.
Definition: tcp_admin.h:25
NetworkAdminSocketHandler::Receive_SERVER_FULL
virtual NetworkRecvStatus Receive_SERVER_FULL(Packet &p)
The server is full (connection gets closed).
Definition: tcp_admin.cpp:147
ADMIN_PACKET_SERVER_CLIENT_UPDATE
@ ADMIN_PACKET_SERVER_CLIENT_UPDATE
The server gives the admin an information update on a client.
Definition: tcp_admin.h:48
NetworkAdminSocketHandler::Receive_SERVER_CLIENT_ERROR
virtual NetworkRecvStatus Receive_SERVER_CLIENT_ERROR(Packet &p)
Notification about a client error (and thus the clients disconnection).
Definition: tcp_admin.cpp:160
NetworkAdminSocketHandler::Receive_SERVER_BANNED
virtual NetworkRecvStatus Receive_SERVER_BANNED(Packet &p)
The source IP address is banned (connection gets closed).
Definition: tcp_admin.cpp:148
NetworkAdminSocketHandler::Receive_SERVER_CONSOLE
virtual NetworkRecvStatus Receive_SERVER_CONSOLE(Packet &p)
Send what would be printed on the server's console also into the admin network.
Definition: tcp_admin.cpp:169
ADMIN_PACKET_ADMIN_AUTH_RESPONSE
@ ADMIN_PACKET_ADMIN_AUTH_RESPONSE
The admin responds to the authentication request.
Definition: tcp_admin.h:35
NetworkAdminSocketHandler::Receive_SERVER_CLIENT_UPDATE
virtual NetworkRecvStatus Receive_SERVER_CLIENT_UPDATE(Packet &p)
Client update details on a specific client (e.g.
Definition: tcp_admin.cpp:158
ADMIN_PACKET_SERVER_WELCOME
@ ADMIN_PACKET_SERVER_WELCOME
The server welcomes the admin to a game.
Definition: tcp_admin.h:41
ADMIN_PACKET_SERVER_CONSOLE
@ ADMIN_PACKET_SERVER_CONSOLE
The server gives the admin the data that got printed to its console.
Definition: tcp_admin.h:59
ADMIN_PACKET_ADMIN_JOIN_SECURE
@ ADMIN_PACKET_ADMIN_JOIN_SECURE
The admin announces and starts a secure authentication handshake.
Definition: tcp_admin.h:34
CRR_BANKRUPT
@ CRR_BANKRUPT
The company went belly-up.
Definition: company_type.h:59
NetworkAdminSocketHandler::Receive_ADMIN_JOIN
virtual NetworkRecvStatus Receive_ADMIN_JOIN(Packet &p)
Join the admin network using an unsecured password exchange: string Unsecured password the server is ...
Definition: tcp_admin.cpp:135
ADMIN_PACKET_SERVER_CLIENT_JOIN
@ ADMIN_PACKET_SERVER_CLIENT_JOIN
The server tells the admin that a client has joined.
Definition: tcp_admin.h:46
ADMIN_PACKET_SERVER_CLIENT_INFO
@ ADMIN_PACKET_SERVER_CLIENT_INFO
The server gives the admin information about a client.
Definition: tcp_admin.h:47
ADMIN_PACKET_SERVER_BANNED
@ ADMIN_PACKET_SERVER_BANNED
The server tells the admin it is banned.
Definition: tcp_admin.h:38
Packet
Internal entity of a packet.
Definition: packet.h:42
ADMIN_PACKET_SERVER_DATE
@ ADMIN_PACKET_SERVER_DATE
The server tells the admin what the current game date is.
Definition: tcp_admin.h:45
NetworkAdminSocketHandler::Receive_SERVER_COMPANY_STATS
virtual NetworkRecvStatus Receive_SERVER_COMPANY_STATS(Packet &p)
Company statistics on stations and vehicles: uint8_t ID of the company.
Definition: tcp_admin.cpp:166
NetworkAdminSocketHandler::Receive_ADMIN_UPDATE_FREQUENCY
virtual NetworkRecvStatus Receive_ADMIN_UPDATE_FREQUENCY(Packet &p)
Register updates to be sent at certain frequencies (as announced in the PROTOCOL packet): uint16_t Up...
Definition: tcp_admin.cpp:137
ADMIN_PACKET_ADMIN_GAMESCRIPT
@ ADMIN_PACKET_ADMIN_GAMESCRIPT
The admin sends a JSON string for the GameScript.
Definition: tcp_admin.h:31
NetworkAdminSocketHandler::Receive_SERVER_WELCOME
virtual NetworkRecvStatus Receive_SERVER_WELCOME(Packet &p)
Welcome a connected admin to the game: string Name of the Server.
Definition: tcp_admin.cpp:151
NetworkAdminSocketHandler::Receive_SERVER_CLIENT_INFO
virtual NetworkRecvStatus Receive_SERVER_CLIENT_INFO(Packet &p)
Client information of a specific client: uint32_t ID of the client.
Definition: tcp_admin.cpp:157
ADMIN_CRR_AUTOCLEAN
@ ADMIN_CRR_AUTOCLEAN
The company is removed due to autoclean.
Definition: tcp_admin.h:110
ADMIN_PACKET_SERVER_CLIENT_QUIT
@ ADMIN_PACKET_SERVER_CLIENT_QUIT
The server tells the admin that a client quit.
Definition: tcp_admin.h:49
NetworkAdminSocketHandler::Receive_SERVER_CHAT
virtual NetworkRecvStatus Receive_SERVER_CHAT(Packet &p)
Send chat from the game into the admin network: uint8_t Action such as NETWORK_ACTION_CHAT_CLIENT (se...
Definition: tcp_admin.cpp:167
NetworkAdminSocketHandler::Receive_SERVER_PROTOCOL
virtual NetworkRecvStatus Receive_SERVER_PROTOCOL(Packet &p)
Inform a just joined admin about the protocol specifics: uint8_t Protocol version.
Definition: tcp_admin.cpp:150
NetworkAdminSocketHandler::Receive_SERVER_CMD_NAMES
virtual NetworkRecvStatus Receive_SERVER_CMD_NAMES(Packet &p)
Send DoCommand names to the bot upon request only.
Definition: tcp_admin.cpp:170
NetworkAdminSocketHandler::Receive_SERVER_DATE
virtual NetworkRecvStatus Receive_SERVER_DATE(Packet &p)
Send the current date of the game: uint32_t Current game date.
Definition: tcp_admin.cpp:155
NetworkSocketHandler::HasClientQuit
bool HasClientQuit() const
Whether the current client connected to the socket has quit.
Definition: core.h:74
NetworkAdminSocketHandler::Receive_SERVER_COMPANY_INFO
virtual NetworkRecvStatus Receive_SERVER_COMPANY_INFO(Packet &p)
Company information on a specific company: uint8_t ID of the company.
Definition: tcp_admin.cpp:162
ADMIN_CRR_MANUAL
@ ADMIN_CRR_MANUAL
The company is manually removed.
Definition: tcp_admin.h:109
NetworkAdminSocketHandler::Receive_SERVER_ENABLE_ENCRYPTION
virtual NetworkRecvStatus Receive_SERVER_ENABLE_ENCRYPTION(Packet &p)
Indication to the client that authentication is complete and encryption has to be used from here on f...
Definition: tcp_admin.cpp:175
NetworkAdminSocketHandler::Receive_ADMIN_QUIT
virtual NetworkRecvStatus Receive_ADMIN_QUIT(Packet &p)
Notification to the server that this admin is quitting.
Definition: tcp_admin.cpp:136
ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY
@ ADMIN_PACKET_ADMIN_UPDATE_FREQUENCY
The admin tells the server the update frequency of a particular piece of information.
Definition: tcp_admin.h:27
NetworkRecvStatus
NetworkRecvStatus
Status of a network client; reasons why a client has quit.
Definition: core.h:23
NetworkAdminSocketHandler::Receive_SERVER_AUTH_REQUEST
virtual NetworkRecvStatus Receive_SERVER_AUTH_REQUEST(Packet &p)
Server requests authentication challenge from the admin.
Definition: tcp_admin.cpp:174
tcp_admin.h
NetworkTCPSocketHandler::ReceivePacket
virtual std::unique_ptr< Packet > ReceivePacket()
Receives a packet for the given client.
Definition: tcp.cpp:129
ADMIN_PACKET_SERVER_ENABLE_ENCRYPTION
@ ADMIN_PACKET_SERVER_ENABLE_ENCRYPTION
The server tells that authentication has completed and requests to enable encryption with the keys of...
Definition: tcp_admin.h:67
NetworkAdminSocketHandler::ReceiveInvalidPacket
NetworkRecvStatus ReceiveInvalidPacket(PacketAdminType type)
Helper for logging receiving invalid packets.
Definition: tcp_admin.cpp:129
NetworkAdminSocketHandler::Receive_ADMIN_POLL
virtual NetworkRecvStatus Receive_ADMIN_POLL(Packet &p)
Poll the server for certain updates, an invalid poll (e.g.
Definition: tcp_admin.cpp:138
CRR_AUTOCLEAN
@ CRR_AUTOCLEAN
The company is removed due to autoclean.
Definition: company_type.h:58
ADMIN_PACKET_SERVER_FULL
@ ADMIN_PACKET_SERVER_FULL
The server tells the admin it cannot accept the admin.
Definition: tcp_admin.h:37
ADMIN_PACKET_SERVER_COMPANY_STATS
@ ADMIN_PACKET_SERVER_COMPANY_STATS
The server gives the admin some statistics about a company.
Definition: tcp_admin.h:56
PacketAdminType
PacketAdminType
Enum with types of TCP packets specific to the admin network.
Definition: tcp_admin.h:24
ADMIN_CRR_END
@ ADMIN_CRR_END
Sentinel for end.
Definition: tcp_admin.h:113
NetworkAdminSocketHandler::Receive_SERVER_COMPANY_REMOVE
virtual NetworkRecvStatus Receive_SERVER_COMPANY_REMOVE(Packet &p)
Notification about a removed company (e.g.
Definition: tcp_admin.cpp:164
ADMIN_PACKET_SERVER_AUTH_REQUEST
@ ADMIN_PACKET_SERVER_AUTH_REQUEST
The server gives the admin the used authentication method and required parameters.
Definition: tcp_admin.h:66
CRR_END
@ CRR_END
Sentinel for end.
Definition: company_type.h:61
NetworkAdminSocketHandler::Receive_SERVER_COMPANY_NEW
virtual NetworkRecvStatus Receive_SERVER_COMPANY_NEW(Packet &p)
Notification of a new company: uint8_t ID of the new company.
Definition: tcp_admin.cpp:161
ADMIN_PACKET_SERVER_ERROR
@ ADMIN_PACKET_SERVER_ERROR
The server tells the admin an error has occurred.
Definition: tcp_admin.h:39
NETWORK_RECV_STATUS_OKAY
@ NETWORK_RECV_STATUS_OKAY
Everything is okay.
Definition: core.h:24
NetworkAdminSocketHandler::Receive_SERVER_CLIENT_JOIN
virtual NetworkRecvStatus Receive_SERVER_CLIENT_JOIN(Packet &p)
Notification of a new client: uint32_t ID of the new client.
Definition: tcp_admin.cpp:156
ADMIN_CRR_BANKRUPT
@ ADMIN_CRR_BANKRUPT
The company went belly-up.
Definition: tcp_admin.h:111
ADMIN_PACKET_SERVER_COMPANY_REMOVE
@ ADMIN_PACKET_SERVER_COMPANY_REMOVE
The server tells the admin that a company was removed.
Definition: tcp_admin.h:54
NetworkAdminSocketHandler::Receive_SERVER_ERROR
virtual NetworkRecvStatus Receive_SERVER_ERROR(Packet &p)
An error was caused by this admin connection (connection gets closed).
Definition: tcp_admin.cpp:149
ADMIN_PACKET_SERVER_COMPANY_INFO
@ ADMIN_PACKET_SERVER_COMPANY_INFO
The server gives the admin information about a company.
Definition: tcp_admin.h:52
NetworkAdminSocketHandler::Receive_ADMIN_GAMESCRIPT
virtual NetworkRecvStatus Receive_ADMIN_GAMESCRIPT(Packet &p)
Send a JSON string to the current active GameScript.
Definition: tcp_admin.cpp:142
ADMIN_PACKET_SERVER_COMPANY_UPDATE
@ ADMIN_PACKET_SERVER_COMPANY_UPDATE
The server gives the admin an information update on a company.
Definition: tcp_admin.h:53
NetworkAdminSocketHandler::Receive_SERVER_PONG
virtual NetworkRecvStatus Receive_SERVER_PONG(Packet &p)
Send a ping-reply (pong) to the admin that sent us the ping packet.
Definition: tcp_admin.cpp:173
ADMIN_PACKET_ADMIN_PING
@ ADMIN_PACKET_ADMIN_PING
The admin sends a ping to the server, expecting a ping-reply (PONG) packet.
Definition: tcp_admin.h:32
CRR_MANUAL
@ CRR_MANUAL
The company is manually removed.
Definition: company_type.h:57
Packet::Recv_uint8
uint8_t Recv_uint8()
Read a 8 bits integer from the packet.
Definition: packet.cpp:318
NetworkAdminSocketHandler::Receive_SERVER_COMPANY_UPDATE
virtual NetworkRecvStatus Receive_SERVER_COMPANY_UPDATE(Packet &p)
Company information of a specific company: uint8_t ID of the company.
Definition: tcp_admin.cpp:163
ADMIN_PACKET_ADMIN_EXTERNAL_CHAT
@ ADMIN_PACKET_ADMIN_EXTERNAL_CHAT
The admin sends a chat message from external source.
Definition: tcp_admin.h:33
NetworkAdminSocketHandler::Receive_ADMIN_CHAT
virtual NetworkRecvStatus Receive_ADMIN_CHAT(Packet &p)
Send chat as the server: uint8_t Action such as NETWORK_ACTION_CHAT_CLIENT (see NetworkAction).
Definition: tcp_admin.cpp:139
NetworkAdminSocketHandler::NetworkAdminSocketHandler
NetworkAdminSocketHandler(SOCKET s)
Create the admin handler for the given socket.
Definition: tcp_admin.cpp:30
NETWORK_RECV_STATUS_MALFORMED_PACKET
@ NETWORK_RECV_STATUS_MALFORMED_PACKET
We apparently send a malformed packet.
Definition: core.h:29