12 #ifndef NETWORK_ADMIN_H 13 #define NETWORK_ADMIN_H 96 #define FOR_ALL_ADMIN_SOCKETS_FROM(var, start) FOR_ALL_ITEMS_FROM(ServerNetworkAdminSocketHandler, adminsocket_index, var, start) 102 #define FOR_ALL_ADMIN_SOCKETS(var) FOR_ALL_ADMIN_SOCKETS_FROM(var, 0) 108 #define FOR_ALL_ACTIVE_ADMIN_SOCKETS(var) \ 109 FOR_ALL_ADMIN_SOCKETS(var) \ 110 if (var->GetAdminStatus() == ADMIN_STATUS_ACTIVE) Container for all information known about a client.
NetworkRecvStatus SendClientUpdate(const NetworkClientInfo *ci)
Send an update for some client's information.
Internal entity of a packet.
AdminCompanyRemoveReason
Reasons for removing a company - communicated to admins.
static void WelcomeAll()
Send a Welcome packet to all connected admins.
AdminIndex _redirect_console_to_admin
Redirection of the (remote) console to the admin.
void NetworkAdminCompanyUpdate(const Company *company)
Notify the admin network of company updates.
Pool< ServerNetworkAdminSocketHandler, AdminIndex, 2, MAX_ADMINS, PT_NADMIN > NetworkAdminSocketPool
Pool with all admin connections.
NetworkErrorCode
The error codes we send around in the protocols.
NetworkRecvStatus SendWelcome()
Send a welcome message to the admin.
Template for TCP listeners.
void NetworkAdminCmdLogging(const NetworkClientSocket *owner, const CommandPacket *cp)
Distribute CommandPacket details over the admin network for logging purposes.
static void Send()
Send the packets for the server sockets.
Wrapper for (un)resolved network addresses; there's no reason to transform a numeric IP to a string a...
void NetworkAdminConsole(const char *origin, const char *string)
Send console to the admin network (if they did opt in for the respective update). ...
static void AcceptConnection(SOCKET s, const NetworkAddress &address)
Handle the acception of a connection.
void NetworkAdminClientUpdate(const NetworkClientInfo *ci)
Notify the admin network of a client update (if they did opt in for the respective update)...
uint32 realtime_connect
Time of connection.
void NetworkAdminUpdate(AdminUpdateFrequency freq)
Send (push) updates to the admin network as they have registered for these updates.
virtual NetworkRecvStatus Receive_ADMIN_UPDATE_FREQUENCY(Packet *p)
Register updates to be sent at certain frequencies (as announced in the PROTOCOL packet): uint16 Upda...
AdminUpdateFrequency
Update frequencies an admin can register.
NetworkRecvStatus SendConsole(const char *origin, const char *command)
Send console output of other clients.
NetworkRecvStatus SendCompanyRemove(CompanyID company_id, AdminCompanyRemoveReason bcrr)
Tell the admin that a company got removed.
NetworkRecvStatus SendDate()
Tell the admin the date.
virtual NetworkRecvStatus Receive_ADMIN_JOIN(Packet *p)
Join the admin network: string Password the server is expecting for this network. ...
NetworkRecvStatus SendCompanyEconomy()
Send economic information of all companies.
NetworkRecvStatus SendRcon(uint16 colour, const char *command)
Send the reply of an rcon command.
NetworkRecvStatus SendClientInfo(const NetworkClientSocket *cs, const NetworkClientInfo *ci)
Send an initial set of data from some client's information.
AdminUpdateFrequency update_frequency[ADMIN_UPDATE_END]
Admin requested update intervals.
NetworkRecvStatus SendClientQuit(ClientID client_id)
Tell the admin that a client quit.
virtual NetworkRecvStatus Receive_ADMIN_CHAT(Packet *p)
Send chat as the server: uint8 Action such as NETWORK_ACTION_CHAT_CLIENT (see NetworkAction).
virtual NetworkRecvStatus Receive_ADMIN_GAMESCRIPT(Packet *p)
Send a JSON string to the current active GameScript.
~ServerNetworkAdminSocketHandler()
Clear everything related to this admin.
NetworkRecvStatus SendRconEnd(const char *command)
Send a notification indicating the rcon command has completed.
virtual NetworkRecvStatus Receive_ADMIN_POLL(Packet *p)
Poll the server for certain updates, an invalid poll (e.g.
NetworkRecvStatus SendClientJoin(ClientID client_id)
Tell the admin that a client joined.
Basic functions to listen for TCP connections.
TextColour
Colour of the strings, see _string_colourmap in table/string_colours.h or docs/ottd-colourtext-palett...
NetworkRecvStatus SendNewGame()
Tell the admin we started a new game.
virtual NetworkRecvStatus Receive_ADMIN_RCON(Packet *p)
Execute a command on the servers console: string Command to be executed.
NetworkRecvStatus SendCmdNames()
Send the names of the commands.
NetworkRecvStatus
Status of a network client; reasons why a client has quit.
NetworkRecvStatus SendCompanyUpdate(const Company *c)
Send an update about a company.
void NetworkServerSendAdminRcon(AdminIndex admin_index, TextColour colour_code, const char *string)
Pass the rcon reply to the admin.
void NetworkAdminClientInfo(const NetworkClientSocket *cs, bool new_client=false)
Notify the admin network of a new client (if they did opt in for the respective update).
NetworkRecvStatus SendCompanyInfo(const Company *c)
Send the admin some information about a company.
virtual NetworkRecvStatus Receive_ADMIN_QUIT(Packet *p)
Notification to the server that this admin is quitting.
static bool AllowConnection()
Whether a connection is allowed or not at this moment.
Base class for all PoolItems.
uint8 AdminIndex
Indices into the admin tables.
Base class for all pools.
NetworkRecvStatus SendError(NetworkErrorCode error)
Send an error to the admin.
void NetworkAdminCompanyInfo(const Company *company, bool new_company)
Notify the admin network of company details.
NetworkRecvStatus SendProtocol()
Send the protocol version to the admin.
NetworkAdminSocketPool _networkadminsocket_pool
The pool with sockets/clients.
NetworkRecvStatus SendClientError(ClientID client_id, NetworkErrorCode error)
Tell the admin that a client made an error.
Variables and function used internally.
NetworkRecvStatus SendGameScript(const char *json)
Send GameScript JSON output.
ClientID
'Unique' identifier to be given to clients
void CDECL error(const char *s,...)
Error handling for fatal non-user errors.
ServerNetworkAdminSocketHandler(SOCKET s)
Create a new socket for the server side of the admin network.
Class for handling the server side of the game connection.
Must ALWAYS be on the end of this list!! (period)
void NetworkAdminChat(NetworkAction action, DestType desttype, ClientID client_id, const char *msg, int64 data=0, bool from_admin=false)
Send chat to the admin network (if they did opt in for the respective update).
void NetworkAdminGameScript(const char *json)
Send GameScript JSON to the admin network (if they did opt in for the respective update).
Main socket handler for admin related connections.
void NetworkAdminClientQuit(ClientID client_id)
Notify the admin network that a client quit (if they have opt in for the respective update)...
NetworkRecvStatus SendCompanyStats()
Send statistics about the companies.
NetworkRecvStatus SendChat(NetworkAction action, DestType desttype, ClientID client_id, const char *msg, int64 data)
Send a chat message.
Everything we need to know about a command to be able to execute it.
NetworkRecvStatus SendShutdown()
Tell the admin we're shutting down.
Basic functions to receive and send TCP packets to and from the admin network.
static const char * GetName()
Get the name used by the listener.
Owner
Enum for all companies/owners.
NetworkRecvStatus SendCmdLogging(ClientID client_id, const CommandPacket *cp)
Send a command for logging purposes.
virtual NetworkRecvStatus Receive_ADMIN_PING(Packet *p)
Ping the server, requiring the server to reply with a pong packet.
void NetworkAdminClientError(ClientID client_id, NetworkErrorCode error_code)
Notify the admin network of a client error (if they have opt in for the respective update)...
void NetworkAdminCompanyRemove(CompanyID company_id, AdminCompanyRemoveReason bcrr)
Notify the admin network of a company to be removed (including the reason why).
NetworkRecvStatus SendCompanyNew(CompanyID company_id)
Tell the admin that a new company was founded.
DestType
Destination of our chat messages.
NetworkAction
Actions that can be used for NetworkTextMessage.
NetworkRecvStatus SendPong(uint32 d1)
Send ping-reply (pong) to admin.
NetworkAddress address
Address of the admin.