OpenTTD Source 20241224-master-gf74b0cf984
|
Class for handling the server side of the game connection. More...
#include <network_admin.h>
Data Structures | |
struct | ServerNetworkAdminSocketHandlerFilter |
Public Member Functions | |
ServerNetworkAdminSocketHandler (SOCKET s) | |
Sanity check. | |
~ServerNetworkAdminSocketHandler () | |
Clear everything related to this admin. | |
NetworkRecvStatus | SendError (NetworkErrorCode error) |
Send an error to the admin. | |
NetworkRecvStatus | SendWelcome () |
Send a welcome message to the admin. | |
NetworkRecvStatus | SendNewGame () |
Tell the admin we started a new game. | |
NetworkRecvStatus | SendShutdown () |
Tell the admin we're shutting down. | |
NetworkRecvStatus | SendDate () |
Tell the admin the date. | |
NetworkRecvStatus | SendClientJoin (ClientID client_id) |
Tell the admin that a client joined. | |
NetworkRecvStatus | SendClientInfo (const NetworkClientSocket *cs, const NetworkClientInfo *ci) |
Send an initial set of data from some client's information. | |
NetworkRecvStatus | SendClientUpdate (const NetworkClientInfo *ci) |
Send an update for some client's information. | |
NetworkRecvStatus | SendClientQuit (ClientID client_id) |
Tell the admin that a client quit. | |
NetworkRecvStatus | SendClientError (ClientID client_id, NetworkErrorCode error) |
Tell the admin that a client made an error. | |
NetworkRecvStatus | SendCompanyNew (CompanyID company_id) |
Tell the admin that a new company was founded. | |
NetworkRecvStatus | SendCompanyInfo (const Company *c) |
Send the admin some information about a company. | |
NetworkRecvStatus | SendCompanyUpdate (const Company *c) |
Send an update about a company. | |
NetworkRecvStatus | SendCompanyRemove (CompanyID company_id, AdminCompanyRemoveReason bcrr) |
Tell the admin that a company got removed. | |
NetworkRecvStatus | SendCompanyEconomy () |
Send economic information of all companies. | |
NetworkRecvStatus | SendCompanyStats () |
Send statistics about the companies. | |
NetworkRecvStatus | SendChat (NetworkAction action, DestType desttype, ClientID client_id, const std::string &msg, int64_t data) |
Send a chat message. | |
NetworkRecvStatus | SendRcon (uint16_t colour, const std::string_view command) |
Send the reply of an rcon command. | |
NetworkRecvStatus | SendConsole (const std::string_view origin, const std::string_view command) |
Send console output of other clients. | |
NetworkRecvStatus | SendGameScript (const std::string_view json) |
Send GameScript JSON output. | |
NetworkRecvStatus | SendCmdNames () |
Send the names of the commands. | |
NetworkRecvStatus | SendCmdLogging (ClientID client_id, const CommandPacket &cp) |
Send a command for logging purposes. | |
NetworkRecvStatus | SendRconEnd (const std::string_view command) |
Send a notification indicating the rcon command has completed. | |
Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkadminsocket_pool > | |
void * | operator new (size_t size) |
Allocates space for new Titem. | |
void * | operator new (size_t size, size_t index) |
Allocates space for new Titem with given index. | |
void * | operator new (size_t, void *ptr) |
Allocates space for new Titem at given memory address. | |
void | operator delete (void *p) |
Marks Titem as free. | |
Public Member Functions inherited from NetworkAdminSocketHandler | |
NetworkRecvStatus | CloseConnection (bool error=true) override |
This will put this socket handler in a close state. | |
NetworkAdminSocketHandler (SOCKET s) | |
Create the admin handler for the given socket. | |
NetworkRecvStatus | ReceivePackets () |
Do the actual receiving of packets. | |
AdminStatus | GetAdminStatus () const |
Get the status of the admin. | |
Public Member Functions inherited from NetworkTCPSocketHandler | |
bool | IsConnected () const |
Whether this socket is currently bound to a socket. | |
void | CloseSocket () |
Close the actual socket of the connection. | |
virtual void | SendPacket (std::unique_ptr< Packet > &&packet) |
This function puts the packet in the send-queue and it is send as soon as possible. | |
SendPacketsState | SendPackets (bool closing_down=false) |
Sends all the buffered packets out for this client. | |
virtual std::unique_ptr< Packet > | ReceivePacket () |
Receives a packet for the given client. | |
bool | CanSendReceive () |
Check whether this socket can send or receive something. | |
bool | HasSendQueue () |
Whether there is something pending in the send queue. | |
NetworkTCPSocketHandler (SOCKET s=INVALID_SOCKET) | |
Construct a socket handler for a TCP connection. | |
Public Member Functions inherited from NetworkSocketHandler | |
NetworkSocketHandler () | |
Create a new unbound socket. | |
virtual | ~NetworkSocketHandler ()=default |
Close the socket when destructing the socket handler. | |
void | MarkClosed () |
Mark the connection as closed. | |
bool | HasClientQuit () const |
Whether the current client connected to the socket has quit. | |
void | Reopen () |
Reopen the socket so we can send/receive stuff again. | |
Static Public Member Functions | |
static void | Send () |
Send the packets for the server sockets. | |
static void | AcceptConnection (SOCKET s, const NetworkAddress &address) |
Handle the acception of a connection. | |
static bool | AllowConnection () |
Whether a connection is allowed or not at this moment. | |
static void | WelcomeAll () |
Send a Welcome packet to all connected admins. | |
static const char * | GetName () |
Get the name used by the listener. | |
static Pool::IterateWrapperFiltered< ServerNetworkAdminSocketHandler, ServerNetworkAdminSocketHandlerFilter > | IterateActive (size_t from=0) |
Returns an iterable ensemble of all active admin sockets. | |
Static Public Member Functions inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkadminsocket_pool > | |
static bool | CanAllocateItem (size_t n=1) |
Helper functions so we can use PoolItem::Function() instead of _poolitem_pool.Function() | |
static bool | CleaningPool () |
Returns current state of pool cleaning - yes or no. | |
static bool | IsValidID (size_t index) |
Tests whether given index can be used to get valid (non-nullptr) Titem. | |
static Titem * | Get (size_t index) |
Returns Titem with given index. | |
static Titem * | GetIfValid (size_t index) |
Returns Titem with given index. | |
static size_t | GetPoolSize () |
Returns first unused index. | |
static size_t | GetNumItems () |
Returns number of valid items in the pool. | |
static void | PostDestructor (size_t index) |
Dummy function called after destructor of each member. | |
static Pool::IterateWrapper< Titem > | Iterate (size_t from=0) |
Returns an iterable ensemble of all valid Titem. | |
Static Public Member Functions inherited from TCPListenHandler< ServerNetworkAdminSocketHandler, ADMIN_PACKET_SERVER_FULL, ADMIN_PACKET_SERVER_BANNED > | |
static bool | ValidateClient (SOCKET s, NetworkAddress &address) |
static void | AcceptClient (SOCKET ls) |
Accepts clients from the sockets. | |
static bool | Receive () |
Handle the receiving of packets. | |
static bool | Listen (uint16_t port) |
Listen on a particular port. | |
static void | CloseListeners () |
Close the sockets we're listening on. | |
Data Fields | |
AdminUpdateFrequency | update_frequency [ADMIN_UPDATE_END] |
Admin requested update intervals. | |
std::chrono::steady_clock::time_point | connect_time |
Time of connection. | |
NetworkAddress | address |
Address of the admin. | |
Data Fields inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkadminsocket_pool > | |
Tindex | index |
Index of this pool item. | |
Data Fields inherited from NetworkTCPSocketHandler | |
SOCKET | sock |
The socket currently connected to. | |
bool | writable |
Can we write to this socket? | |
Protected Member Functions | |
NetworkRecvStatus | Receive_ADMIN_JOIN (Packet &p) override |
Join the admin network using an unsecured password exchange: string Unsecured password the server is expecting for this network. | |
NetworkRecvStatus | Receive_ADMIN_QUIT (Packet &p) override |
Notification to the server that this admin is quitting. | |
NetworkRecvStatus | Receive_ADMIN_UPDATE_FREQUENCY (Packet &p) override |
Register updates to be sent at certain frequencies (as announced in the PROTOCOL packet): uint16_t Update type (see AdminUpdateType). | |
NetworkRecvStatus | Receive_ADMIN_POLL (Packet &p) override |
Poll the server for certain updates, an invalid poll (e.g. | |
NetworkRecvStatus | Receive_ADMIN_CHAT (Packet &p) override |
Send chat as the server: uint8_t Action such as NETWORK_ACTION_CHAT_CLIENT (see NetworkAction). | |
NetworkRecvStatus | Receive_ADMIN_EXTERNAL_CHAT (Packet &p) override |
Send chat from the external source: string Name of the source this message came from. | |
NetworkRecvStatus | Receive_ADMIN_RCON (Packet &p) override |
Execute a command on the servers console: string Command to be executed. | |
NetworkRecvStatus | Receive_ADMIN_GAMESCRIPT (Packet &p) override |
Send a JSON string to the current active GameScript. | |
NetworkRecvStatus | Receive_ADMIN_PING (Packet &p) override |
Ping the server, requiring the server to reply with a pong packet. | |
NetworkRecvStatus | Receive_ADMIN_JOIN_SECURE (Packet &p) override |
Join the admin network using a secure authentication method: string Name of the application being used to connect. | |
NetworkRecvStatus | Receive_ADMIN_AUTH_RESPONSE (Packet &p) override |
Admin responds to ADMIN_PACKET_SERVER_AUTH_REQUEST with the appropriate data given the agreed upon NetworkAuthenticationMethod . | |
NetworkRecvStatus | SendProtocol () |
Send the protocol version to the admin. | |
NetworkRecvStatus | SendPong (uint32_t d1) |
Send ping-reply (pong) to admin. | |
NetworkRecvStatus | SendAuthRequest () |
NetworkRecvStatus | SendEnableEncryption () |
Protected Member Functions inherited from NetworkAdminSocketHandler | |
NetworkRecvStatus | ReceiveInvalidPacket (PacketAdminType type) |
Helper for logging receiving invalid packets. | |
virtual NetworkRecvStatus | Receive_SERVER_FULL (Packet &p) |
The server is full (connection gets closed). | |
virtual NetworkRecvStatus | Receive_SERVER_BANNED (Packet &p) |
The source IP address is banned (connection gets closed). | |
virtual NetworkRecvStatus | Receive_SERVER_ERROR (Packet &p) |
An error was caused by this admin connection (connection gets closed). | |
virtual NetworkRecvStatus | Receive_SERVER_PROTOCOL (Packet &p) |
Inform a just joined admin about the protocol specifics: uint8_t Protocol version. | |
virtual NetworkRecvStatus | Receive_SERVER_WELCOME (Packet &p) |
Welcome a connected admin to the game: string Name of the Server. | |
virtual NetworkRecvStatus | Receive_SERVER_NEWGAME (Packet &p) |
Notification about a newgame. | |
virtual NetworkRecvStatus | Receive_SERVER_SHUTDOWN (Packet &p) |
Notification about the server shutting down. | |
virtual NetworkRecvStatus | Receive_SERVER_DATE (Packet &p) |
Send the current date of the game: uint32_t Current game date. | |
virtual NetworkRecvStatus | Receive_SERVER_CLIENT_JOIN (Packet &p) |
Notification of a new client: uint32_t ID of the new client. | |
virtual NetworkRecvStatus | Receive_SERVER_CLIENT_INFO (Packet &p) |
Client information of a specific client: uint32_t ID of the client. | |
virtual NetworkRecvStatus | Receive_SERVER_CLIENT_UPDATE (Packet &p) |
Client update details on a specific client (e.g. | |
virtual NetworkRecvStatus | Receive_SERVER_CLIENT_QUIT (Packet &p) |
Notification about a client leaving the game. | |
virtual NetworkRecvStatus | Receive_SERVER_CLIENT_ERROR (Packet &p) |
Notification about a client error (and thus the clients disconnection). | |
virtual NetworkRecvStatus | Receive_SERVER_COMPANY_NEW (Packet &p) |
Notification of a new company: uint8_t ID of the new company. | |
virtual NetworkRecvStatus | Receive_SERVER_COMPANY_INFO (Packet &p) |
Company information on a specific company: uint8_t ID of the company. | |
virtual NetworkRecvStatus | Receive_SERVER_COMPANY_UPDATE (Packet &p) |
Company information of a specific company: uint8_t ID of the company. | |
virtual NetworkRecvStatus | Receive_SERVER_COMPANY_REMOVE (Packet &p) |
Notification about a removed company (e.g. | |
virtual NetworkRecvStatus | Receive_SERVER_COMPANY_ECONOMY (Packet &p) |
Economy update of a specific company: uint8_t ID of the company. | |
virtual NetworkRecvStatus | Receive_SERVER_COMPANY_STATS (Packet &p) |
Company statistics on stations and vehicles: uint8_t ID of the company. | |
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 (see NetworkAction). | |
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. | |
virtual NetworkRecvStatus | Receive_SERVER_CONSOLE (Packet &p) |
Send what would be printed on the server's console also into the admin network. | |
virtual NetworkRecvStatus | Receive_SERVER_CMD_NAMES (Packet &p) |
Send DoCommand names to the bot upon request only. | |
virtual NetworkRecvStatus | Receive_SERVER_CMD_LOGGING (Packet &p) |
Send incoming command packets to the admin network. | |
virtual NetworkRecvStatus | Receive_SERVER_AUTH_REQUEST (Packet &p) |
Server requests authentication challenge from the admin. | |
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 forward. | |
virtual NetworkRecvStatus | Receive_SERVER_PONG (Packet &p) |
Send a ping-reply (pong) to the admin that sent us the ping packet. | |
virtual NetworkRecvStatus | Receive_SERVER_RCON_END (Packet &p) |
Notify the admin connection that the rcon command has finished. | |
NetworkRecvStatus | HandlePacket (Packet &p) |
Handle the given packet, i.e. | |
Private Attributes | |
std::unique_ptr< NetworkAuthenticationServerHandler > | authentication_handler |
The handler for the authentication. | |
Additional Inherited Members | |
Public Types inherited from Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkadminsocket_pool > | |
typedef struct Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero > | Pool |
Type of the pool this item is going to be part of. | |
Protected Attributes inherited from NetworkAdminSocketHandler | |
std::string | admin_name |
Name of the admin. | |
std::string | admin_version |
Version string of the admin. | |
AdminStatus | status |
Status of this admin. | |
Protected Attributes inherited from NetworkSocketHandler | |
std::unique_ptr< class NetworkEncryptionHandler > | receive_encryption_handler |
The handler for decrypting received packets. | |
std::unique_ptr< class NetworkEncryptionHandler > | send_encryption_handler |
The handler for encrypting sent packets. | |
Class for handling the server side of the game connection.
Definition at line 25 of file network_admin.h.
ServerNetworkAdminSocketHandler::ServerNetworkAdminSocketHandler | ( | SOCKET | s | ) |
Sanity check.
Create a new socket for the server side of the admin network.
s | The socket to connect with. |
Definition at line 68 of file network_admin.cpp.
References _network_admins_connected, ADMIN_STATUS_INACTIVE, connect_time, and NetworkAdminSocketHandler::status.
ServerNetworkAdminSocketHandler::~ServerNetworkAdminSocketHandler | ( | ) |
Clear everything related to this admin.
Definition at line 78 of file network_admin.cpp.
References _network_admins_connected, _redirect_console_to_admin, ADMIN_FREQUENCY_AUTOMATIC, NetworkAdminSocketHandler::admin_name, ADMIN_UPDATE_CONSOLE, NetworkAdminSocketHandler::admin_version, Debug, DebugReconsiderSendRemoteMessages(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkadminsocket_pool >::index, INVALID_ADMIN_ID, and update_frequency.
|
static |
Handle the acception of a connection.
s | The socket of the new connection. |
address | The address of the peer. |
Definition at line 124 of file network_admin.cpp.
References address.
|
static |
Whether a connection is allowed or not at this moment.
Definition at line 94 of file network_admin.cpp.
References _network_admins_connected, _settings_client, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkadminsocket_pool >::CanAllocateItem(), MAX_ADMINS, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::MAX_SIZE, and ClientSettings::network.
|
inlinestatic |
Get the name used by the listener.
Definition at line 88 of file network_admin.h.
|
inlinestatic |
Returns an iterable ensemble of all active admin sockets.
from | index of the first socket to consider |
Definition at line 102 of file network_admin.h.
Referenced by DebugReconsiderSendRemoteMessages(), NetworkAdminChat(), NetworkAdminClientError(), NetworkAdminClientInfo(), NetworkAdminClientQuit(), NetworkAdminClientUpdate(), NetworkAdminCmdLogging(), NetworkAdminCompanyNew(), NetworkAdminCompanyRemove(), NetworkAdminCompanyUpdate(), NetworkAdminConsole(), NetworkAdminGameScript(), NetworkAdminUpdate(), NetworkDisconnect(), and WelcomeAll().
|
overrideprotectedvirtual |
Admin responds to ADMIN_PACKET_SERVER_AUTH_REQUEST
with the appropriate data given the agreed upon NetworkAuthenticationMethod
.
With NETWORK_AUTH_METHOD_X25519_PAKE
and NETWORK_AUTH_METHOD_X25519_AUTHORIZED_KEY:
32 * uint8_t Public key of the client. 16 * uint8_t Message authentication code (mac). 8 * uint8_t Encrypted message of the authentication (just random bytes).
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 859 of file network_admin.cpp.
References NetworkAdminSocketHandler::admin_name, ADMIN_STATUS_AUTHENTICATE, NetworkAdminSocketHandler::admin_version, NetworkAuthenticationServerHandler::AUTHENTICATED, authentication_handler, Debug, NetworkAuthenticationServerHandler::NOT_AUTHENTICATED, NetworkSocketHandler::receive_encryption_handler, NetworkAuthenticationServerHandler::RETRY_NEXT_METHOD, NetworkSocketHandler::send_encryption_handler, SendError(), SendProtocol(), and NetworkAdminSocketHandler::status.
|
overrideprotectedvirtual |
Send chat as the server: uint8_t Action such as NETWORK_ACTION_CHAT_CLIENT (see NetworkAction).
uint8_t Destination type such as DESTTYPE_BROADCAST (see DestType). uint32_t ID of the destination such as company or client id. string Message.
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 760 of file network_admin.cpp.
References _network_own_client_id, NetworkAdminSocketHandler::admin_name, ADMIN_STATUS_AUTHENTICATE, NetworkAdminSocketHandler::admin_version, Debug, NETWORK_CHAT_LENGTH, NETWORK_RECV_STATUS_OKAY, NetworkServerSendChat(), Packet::Recv_string(), Packet::Recv_uint32(), Packet::Recv_uint8(), SendError(), and NetworkAdminSocketHandler::status.
|
overrideprotectedvirtual |
Send chat from the external source: string Name of the source this message came from.
uint16_t TextColour to use for the message. string Name of the user who sent the messsage. string Message.
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 786 of file network_admin.cpp.
References NetworkAdminSocketHandler::admin_name, ADMIN_STATUS_AUTHENTICATE, NetworkAdminSocketHandler::admin_version, Debug, IsValidConsoleColour(), NETWORK_CHAT_LENGTH, NETWORK_RECV_STATUS_OKAY, NetworkServerSendExternalChat(), Packet::Recv_string(), Packet::Recv_uint16(), SendError(), and NetworkAdminSocketHandler::status.
|
overrideprotectedvirtual |
Send a JSON string to the current active GameScript.
json JSON string for the GameScript.
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 514 of file network_admin.cpp.
References NetworkAdminSocketHandler::admin_name, ADMIN_STATUS_AUTHENTICATE, NetworkAdminSocketHandler::admin_version, Debug, NETWORK_GAMESCRIPT_JSON_LENGTH, NETWORK_RECV_STATUS_OKAY, Game::NewEvent(), Packet::Recv_string(), SendError(), and NetworkAdminSocketHandler::status.
|
overrideprotectedvirtual |
Join the admin network using an unsecured password exchange: string Unsecured password the server is expecting for this network.
string Name of the application being used to connect. string Version string of the application being used to connect.
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 638 of file network_admin.cpp.
References _settings_client, NetworkAdminSocketHandler::admin_name, NetworkSettings::admin_password, ADMIN_STATUS_INACTIVE, NetworkAdminSocketHandler::admin_version, NetworkSettings::allow_insecure_admin_login, Debug, ClientSettings::network, NETWORK_CLIENT_NAME_LENGTH, NETWORK_PASSWORD_LENGTH, NETWORK_REVISION_LENGTH, Packet::Recv_string(), SendError(), SendProtocol(), and NetworkAdminSocketHandler::status.
|
overrideprotectedvirtual |
Join the admin network using a secure authentication method: string Name of the application being used to connect.
string Version string of the application being used to connect. uint16_t Bitmask of supported authentication methods. See NetworkAuthenticationMethod
for the supported methods.
The server will determine which of the authentication methods supplied by the client will be used. When there is no supported authentication method, an ADMIN_PACKET_SERVER_ERROR
packet will be sent with NETWORK_ERROR_NO_AUTHENTICATION_METHOD_AVAILABLE
as error.
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 809 of file network_admin.cpp.
References _admin_authorized_key_handler(), _admin_password_provider(), NetworkAdminSocketHandler::admin_name, ADMIN_STATUS_INACTIVE, NetworkAdminSocketHandler::admin_version, authentication_handler, ClrBit(), NetworkAuthenticationServerHandler::Create(), Debug, NETWORK_AUTH_METHOD_X25519_KEY_EXCHANGE_ONLY, NETWORK_CLIENT_NAME_LENGTH, NETWORK_REVISION_LENGTH, Packet::Recv_string(), Packet::Recv_uint16(), SendError(), and NetworkAdminSocketHandler::status.
|
overrideprotectedvirtual |
Ping the server, requiring the server to reply with a pong packet.
uint32_t Integer value to pass to the server, which is quoted in the reply.
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 526 of file network_admin.cpp.
References NetworkAdminSocketHandler::admin_name, ADMIN_STATUS_AUTHENTICATE, NetworkAdminSocketHandler::admin_version, Debug, Packet::Recv_uint32(), SendError(), SendPong(), and NetworkAdminSocketHandler::status.
|
overrideprotectedvirtual |
Poll the server for certain updates, an invalid poll (e.g.
not existent id) gets silently dropped: uint8_t AdminUpdateType the server should answer for, only if AdminUpdateFrequency ADMIN_FREQUENCY_POLL is advertised in the PROTOCOL packet. Note integer type - see "Certain Packet Information" in docs/admin_network.md. uint32_t ID relevant to the packet type, e.g.
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 694 of file network_admin.cpp.
References NetworkAdminSocketHandler::admin_name, ADMIN_STATUS_AUTHENTICATE, ADMIN_UPDATE_CLIENT_INFO, ADMIN_UPDATE_CMD_NAMES, ADMIN_UPDATE_COMPANY_ECONOMY, ADMIN_UPDATE_COMPANY_INFO, ADMIN_UPDATE_COMPANY_STATS, ADMIN_UPDATE_DATE, NetworkAdminSocketHandler::admin_version, CLIENT_ID_SERVER, Debug, NetworkClientInfo::GetByClientID(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::GetIfValid(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), NETWORK_RECV_STATUS_OKAY, Packet::Recv_uint32(), Packet::Recv_uint8(), SendClientInfo(), SendCmdNames(), SendCompanyEconomy(), SendCompanyInfo(), SendCompanyStats(), SendDate(), SendError(), and NetworkAdminSocketHandler::status.
|
overrideprotectedvirtual |
Notification to the server that this admin is quitting.
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 668 of file network_admin.cpp.
References NetworkAdminSocketHandler::CloseConnection().
|
overrideprotectedvirtual |
Execute a command on the servers console: string Command to be executed.
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 500 of file network_admin.cpp.
References _redirect_console_to_admin, NetworkAdminSocketHandler::admin_name, ADMIN_STATUS_AUTHENTICATE, NetworkAdminSocketHandler::admin_version, Debug, IConsoleCmdExec(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkadminsocket_pool >::index, INVALID_ADMIN_ID, NETWORK_RCONCOMMAND_LENGTH, Packet::Recv_string(), SendError(), SendRconEnd(), and NetworkAdminSocketHandler::status.
|
overrideprotectedvirtual |
Register updates to be sent at certain frequencies (as announced in the PROTOCOL packet): uint16_t Update type (see AdminUpdateType).
Note integer type - see "Certain Packet Information" in docs/admin_network.md. uint16_t Update frequency (see AdminUpdateFrequency), setting ADMIN_FREQUENCY_POLL is always ignored.
p | The packet that was just received. |
Reimplemented from NetworkAdminSocketHandler.
Definition at line 674 of file network_admin.cpp.
References _admin_update_type_frequencies, NetworkAdminSocketHandler::admin_name, ADMIN_STATUS_AUTHENTICATE, ADMIN_UPDATE_CONSOLE, ADMIN_UPDATE_END, NetworkAdminSocketHandler::admin_version, Debug, DebugReconsiderSendRemoteMessages(), NETWORK_RECV_STATUS_OKAY, Packet::Recv_uint16(), SendError(), NetworkAdminSocketHandler::status, and update_frequency.
|
static |
Send the packets for the server sockets.
Definition at line 105 of file network_admin.cpp.
References ADMIN_AUTHORISATION_TIMEOUT(), ADMIN_STATUS_AUTHENTICATE, Debug, and Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkadminsocket_pool >::Iterate().
|
protected |
Definition at line 834 of file network_admin.cpp.
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendChat | ( | NetworkAction | action, |
DestType | desttype, | ||
ClientID | client_id, | ||
const std::string & | msg, | ||
int64_t | data | ||
) |
Send a chat message.
action | The action associated with the message. |
desttype | The destination type. |
client_id | The origin of the chat message. |
msg | The actual message. |
data | Arbitrary extra data. |
Definition at line 456 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_CHAT, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientError | ( | ClientID | client_id, |
NetworkErrorCode | error | ||
) |
Tell the admin that a client made an error.
client_id | The client that made the error. |
error | The error that was made. |
Definition at line 300 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_CLIENT_ERROR, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientInfo | ( | const NetworkClientSocket * | cs, |
const NetworkClientInfo * | ci | ||
) |
Send an initial set of data from some client's information.
cs | The socket of the client. |
ci | The information about the client. |
Definition at line 244 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_CLIENT_INFO, NetworkClientInfo::client_id, NetworkClientInfo::client_name, NetworkClientInfo::client_playas, NetworkClientInfo::join_date, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
Referenced by Receive_ADMIN_POLL().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientJoin | ( | ClientID | client_id | ) |
Tell the admin that a client joined.
client_id | The client that joined. |
Definition at line 229 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_CLIENT_JOIN, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientQuit | ( | ClientID | client_id | ) |
Tell the admin that a client quit.
client_id | The client that quit. |
Definition at line 285 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_CLIENT_QUIT, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendClientUpdate | ( | const NetworkClientInfo * | ci | ) |
Send an update for some client's information.
ci | The information about a client. |
Definition at line 268 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_CLIENT_UPDATE, NetworkClientInfo::client_id, NetworkClientInfo::client_name, NetworkClientInfo::client_playas, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCmdLogging | ( | ClientID | client_id, |
const CommandPacket & | cp | ||
) |
Send a command for logging purposes.
client_id | The client executing the command. |
cp | The command that would be executed. |
Definition at line 619 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_CMD_LOGGING, CommandPacket::cmd, CommandPacket::company, CommandPacket::data, CommandPacket::frame, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCmdNames | ( | ) |
Send the names of the commands.
Definition at line 585 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_CMD_NAMES, CMD_END, GetCommandName(), NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
Referenced by Receive_ADMIN_POLL().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyEconomy | ( | ) |
Send economic information of all companies.
Definition at line 390 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_COMPANY_ECONOMY, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
Referenced by Receive_ADMIN_POLL().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyInfo | ( | const Company * | c | ) |
Send the admin some information about a company.
c | The company to send the information about. |
Definition at line 329 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_COMPANY_INFO, CeilDiv(), CompanyProperties::colour, GetString(), CompanyProperties::inaugurated_year, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, CompanyProperties::is_ai, CompanyProperties::months_of_bankruptcy, NETWORK_RECV_STATUS_OKAY, NetworkTCPSocketHandler::SendPacket(), and SetDParam().
Referenced by Receive_ADMIN_POLL().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyNew | ( | CompanyID | company_id | ) |
Tell the admin that a new company was founded.
company_id | The company that was founded. |
Definition at line 315 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_COMPANY_NEW, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyRemove | ( | CompanyID | company_id, |
AdminCompanyRemoveReason | acrr | ||
) |
Tell the admin that a company got removed.
company_id | The company that got removed. |
acrr | The reason for removal, e.g. bankruptcy or merger. |
Definition at line 377 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_COMPANY_REMOVE, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyStats | ( | ) |
Send statistics about the companies.
Definition at line 421 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_COMPANY_STATS, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), MAX_COMPANIES, NETWORK_RECV_STATUS_OKAY, NetworkPopulateCompanyStats(), NetworkCompanyStats::num_station, NetworkCompanyStats::num_vehicle, and NetworkTCPSocketHandler::SendPacket().
Referenced by Receive_ADMIN_POLL().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendCompanyUpdate | ( | const Company * | c | ) |
Send an update about a company.
c | The company to send the update of. |
Definition at line 354 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_COMPANY_UPDATE, CeilDiv(), CompanyProperties::colour, GetString(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, CompanyProperties::months_of_bankruptcy, NETWORK_RECV_STATUS_OKAY, NetworkTCPSocketHandler::SendPacket(), and SetDParam().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendConsole | ( | const std::string_view | origin, |
const std::string_view | string | ||
) |
Send console output of other clients.
origin | The origin of the string. |
string | The string that's put on the console. |
Definition at line 542 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_CONSOLE, COMPAT_MTU, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendDate | ( | ) |
Tell the admin the date.
Definition at line 215 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_DATE, TimerGameCalendar::date, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
Referenced by Receive_ADMIN_POLL().
|
protected |
Definition at line 848 of file network_admin.cpp.
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendError | ( | NetworkErrorCode | error | ) |
Send an error to the admin.
error | The error to send. |
Definition at line 138 of file network_admin.cpp.
References NetworkAdminSocketHandler::admin_name, ADMIN_PACKET_SERVER_ERROR, NetworkAdminSocketHandler::admin_version, authentication_handler, NetworkAdminSocketHandler::CloseConnection(), Debug, GetNetworkErrorMsg(), GetString(), and NetworkTCPSocketHandler::SendPacket().
Referenced by Receive_ADMIN_AUTH_RESPONSE(), Receive_ADMIN_CHAT(), Receive_ADMIN_EXTERNAL_CHAT(), Receive_ADMIN_GAMESCRIPT(), Receive_ADMIN_JOIN(), Receive_ADMIN_JOIN_SECURE(), Receive_ADMIN_PING(), Receive_ADMIN_POLL(), Receive_ADMIN_RCON(), and Receive_ADMIN_UPDATE_FREQUENCY().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendGameScript | ( | const std::string_view | json | ) |
Send GameScript JSON output.
json | The JSON string. |
Definition at line 563 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_GAMESCRIPT, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendNewGame | ( | ) |
Tell the admin we started a new game.
Definition at line 199 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_NEWGAME, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
|
protected |
Send ping-reply (pong) to admin.
Definition at line 574 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_PONG, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
Referenced by Receive_ADMIN_PING().
|
protected |
Send the protocol version to the admin.
Definition at line 156 of file network_admin.cpp.
References _admin_update_type_frequencies, ADMIN_PACKET_SERVER_PROTOCOL, ADMIN_STATUS_ACTIVE, ADMIN_UPDATE_END, NETWORK_GAME_ADMIN_VERSION, NetworkTCPSocketHandler::SendPacket(), SendWelcome(), and NetworkAdminSocketHandler::status.
Referenced by Receive_ADMIN_AUTH_RESPONSE(), and Receive_ADMIN_JOIN().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendRcon | ( | uint16_t | colour, |
const std::string_view | result | ||
) |
Send the reply of an rcon command.
colour | The colour of the text. |
result | The result of the command. |
Definition at line 489 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_RCON, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendRconEnd | ( | const std::string_view | command | ) |
Send a notification indicating the rcon command has completed.
command | The original command sent. |
Definition at line 474 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_RCON_END, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
Referenced by Receive_ADMIN_RCON().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendShutdown | ( | ) |
Tell the admin we're shutting down.
Definition at line 207 of file network_admin.cpp.
References ADMIN_PACKET_SERVER_SHUTDOWN, NETWORK_RECV_STATUS_OKAY, and NetworkTCPSocketHandler::SendPacket().
NetworkRecvStatus ServerNetworkAdminSocketHandler::SendWelcome | ( | ) |
Send a welcome message to the admin.
Definition at line 178 of file network_admin.cpp.
References _network_dedicated, _settings_client, _settings_game, ADMIN_PACKET_SERVER_WELCOME, TimerGameCalendar::ConvertYMDToDate(), GameSettings::game_creation, GameCreationSettings::generation_seed, GameCreationSettings::landscape, ClientSettings::network, NETWORK_RECV_STATUS_OKAY, NetworkTCPSocketHandler::SendPacket(), NetworkSettings::server_name, Map::SizeX(), Map::SizeY(), and GameCreationSettings::starting_year.
Referenced by SendProtocol().
|
static |
Send a Welcome packet to all connected admins.
Definition at line 1064 of file network_admin.cpp.
References IterateActive().
Referenced by NetworkOnGameStart().
NetworkAddress ServerNetworkAdminSocketHandler::address |
Address of the admin.
Definition at line 48 of file network_admin.h.
Referenced by AcceptConnection().
|
private |
The handler for the authentication.
Definition at line 27 of file network_admin.h.
Referenced by Receive_ADMIN_AUTH_RESPONSE(), Receive_ADMIN_JOIN_SECURE(), and SendError().
std::chrono::steady_clock::time_point ServerNetworkAdminSocketHandler::connect_time |
Time of connection.
Definition at line 47 of file network_admin.h.
Referenced by ServerNetworkAdminSocketHandler().
AdminUpdateFrequency ServerNetworkAdminSocketHandler::update_frequency[ADMIN_UPDATE_END] |
Admin requested update intervals.
Definition at line 46 of file network_admin.h.
Referenced by Receive_ADMIN_UPDATE_FREQUENCY(), and ~ServerNetworkAdminSocketHandler().