OpenTTD Source 20241224-master-gf74b0cf984
network_admin.cpp File Reference

Server part of the admin network protocol. More...

#include "../stdafx.h"
#include "../strings_func.h"
#include "../timer/timer_game_calendar.h"
#include "core/network_game_info.h"
#include "network_admin.h"
#include "network_base.h"
#include "network_server.h"
#include "../command_func.h"
#include "../company_base.h"
#include "../console_func.h"
#include "../core/pool_func.hpp"
#include "../map_func.h"
#include "../rev.h"
#include "../game/game.hpp"
#include "../safeguards.h"

Go to the source code of this file.

Functions

static NetworkAuthenticationDefaultPasswordProvider _admin_password_provider (_settings_client.network.admin_password)
 Provides the password validation for the game's password.
 
static NetworkAuthenticationDefaultAuthorizedKeyHandler _admin_authorized_key_handler (_settings_client.network.admin_authorized_keys)
 Provides the authorized key handling for the game authentication.
 
static const std::chrono::seconds ADMIN_AUTHORISATION_TIMEOUT (10)
 The timeout for authorisation of the client.
 
void NetworkAdminClientInfo (const NetworkClientSocket *cs, bool new_client)
 Notify the admin network of a new client (if they did opt in for the respective update).
 
void NetworkAdminClientUpdate (const NetworkClientInfo *ci)
 Notify the admin network of a client update (if they did opt in for the respective update).
 
void NetworkAdminClientQuit (ClientID client_id)
 Notify the admin network that a client quit (if they have opt in for the respective update).
 
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 NetworkAdminCompanyNew (const Company *company)
 Notify the admin network of a new company.
 
void NetworkAdminCompanyUpdate (const Company *company)
 Notify the admin network of company updates.
 
void NetworkAdminCompanyRemove (CompanyID company_id, AdminCompanyRemoveReason bcrr)
 Notify the admin network of a company to be removed (including the reason why).
 
void NetworkAdminChat (NetworkAction action, DestType desttype, ClientID client_id, const std::string &msg, int64_t data, bool from_admin)
 Send chat to the admin network (if they did opt in for the respective update).
 
void NetworkServerSendAdminRcon (AdminIndex admin_index, TextColour colour_code, const std::string_view string)
 Pass the rcon reply to the admin.
 
void NetworkAdminConsole (const std::string_view origin, const std::string_view string)
 Send console to the admin network (if they did opt in for the respective update).
 
void NetworkAdminGameScript (const std::string_view json)
 Send GameScript JSON to the admin network (if they did opt in for the respective update).
 
void NetworkAdminCmdLogging (const NetworkClientSocket *owner, const CommandPacket &cp)
 Distribute CommandPacket details over the admin network for logging purposes.
 
void NetworkAdminUpdate (AdminUpdateFrequency freq)
 Send (push) updates to the admin network as they have registered for these updates.
 

Variables

AdminIndex _redirect_console_to_admin = INVALID_ADMIN_ID
 Redirection of the (remote) console to the admin.
 
uint8_t _network_admins_connected = 0
 The amount of admins connected.
 
NetworkAdminSocketPool _networkadminsocket_pool ("NetworkAdminSocket")
 The pool with sockets/clients.
 
static const AdminUpdateFrequency _admin_update_type_frequencies []
 Frequencies, which may be registered for a certain update type.
 

Detailed Description

Server part of the admin network protocol.

Definition in file network_admin.cpp.

Function Documentation

◆ NetworkAdminChat()

void NetworkAdminChat ( NetworkAction  action,
DestType  desttype,
ClientID  client_id,
const std::string &  msg,
int64_t  data,
bool  from_admin 
)

Send chat to the admin network (if they did opt in for the respective update).

Definition at line 996 of file network_admin.cpp.

References ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_CHAT, and ServerNetworkAdminSocketHandler::IterateActive().

Referenced by NetworkServerSendChat().

◆ NetworkAdminClientError()

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).

Parameters
client_idthe client that made the error.
error_codethe error that was caused.

Definition at line 937 of file network_admin.cpp.

References ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_CLIENT_INFO, and ServerNetworkAdminSocketHandler::IterateActive().

Referenced by ServerNetworkGameSocketHandler::CloseConnection(), ServerNetworkGameSocketHandler::Receive_CLIENT_ERROR(), and ServerNetworkGameSocketHandler::SendError().

◆ NetworkAdminClientInfo()

void NetworkAdminClientInfo ( const NetworkClientSocket *  cs,
bool  new_client 
)

Notify the admin network of a new client (if they did opt in for the respective update).

Parameters
csthe client info.
new_clientif this is a new client, send the respective packet too.

Definition at line 894 of file network_admin.cpp.

References ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_CLIENT_INFO, and ServerNetworkAdminSocketHandler::IterateActive().

Referenced by ServerNetworkGameSocketHandler::Receive_CLIENT_MAP_OK().

◆ NetworkAdminClientQuit()

void NetworkAdminClientQuit ( ClientID  client_id)

Notify the admin network that a client quit (if they have opt in for the respective update).

Parameters
client_idof the client that quit.

Definition at line 923 of file network_admin.cpp.

References ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_CLIENT_INFO, and ServerNetworkAdminSocketHandler::IterateActive().

Referenced by ServerNetworkGameSocketHandler::Receive_CLIENT_QUIT().

◆ NetworkAdminClientUpdate()

void NetworkAdminClientUpdate ( const NetworkClientInfo ci)

Notify the admin network of a client update (if they did opt in for the respective update).

Parameters
cithe client info.

Definition at line 910 of file network_admin.cpp.

References ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_CLIENT_INFO, and ServerNetworkAdminSocketHandler::IterateActive().

Referenced by NetworkUpdateClientInfo().

◆ NetworkAdminCmdLogging()

void NetworkAdminCmdLogging ( const NetworkClientSocket *  owner,
const CommandPacket cp 
)

Distribute CommandPacket details over the admin network for logging purposes.

Parameters
ownerThe owner of the CommandPacket (who sent us the CommandPacket).
cpThe CommandPacket to be distributed.

Definition at line 1050 of file network_admin.cpp.

References _network_own_client_id, ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_CMD_LOGGING, and ServerNetworkAdminSocketHandler::IterateActive().

Referenced by DistributeQueue().

◆ NetworkAdminCompanyNew()

void NetworkAdminCompanyNew ( const Company company)

Notify the admin network of a new company.

Parameters
companythe company of which details will be sent into the admin network.

Definition at line 950 of file network_admin.cpp.

References ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_COMPANY_INFO, Debug, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, and ServerNetworkAdminSocketHandler::IterateActive().

Referenced by CmdCompanyCtrl().

◆ NetworkAdminCompanyRemove()

void NetworkAdminCompanyRemove ( CompanyID  company_id,
AdminCompanyRemoveReason  bcrr 
)

Notify the admin network of a company to be removed (including the reason why).

Parameters
company_idID of the company that got removed.
bcrrthe reason why the company got removed (e.g. bankruptcy).

Definition at line 985 of file network_admin.cpp.

References ServerNetworkAdminSocketHandler::IterateActive().

Referenced by CompanyAdminRemove().

◆ NetworkAdminCompanyUpdate()

void NetworkAdminCompanyUpdate ( const Company company)

Notify the admin network of company updates.

Parameters
companycompany of which updates are going to be sent into the admin network.

Definition at line 969 of file network_admin.cpp.

References ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_COMPANY_INFO, and ServerNetworkAdminSocketHandler::IterateActive().

Referenced by CompanyAdminUpdate().

◆ NetworkAdminConsole()

void NetworkAdminConsole ( const std::string_view  origin,
const std::string_view  string 
)

Send console to the admin network (if they did opt in for the respective update).

Parameters
originthe origin of the message.
stringthe message as printed on the console.

Definition at line 1023 of file network_admin.cpp.

References ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_CONSOLE, and ServerNetworkAdminSocketHandler::IterateActive().

Referenced by DebugSendRemoteMessages(), and IConsolePrint().

◆ NetworkAdminGameScript()

void NetworkAdminGameScript ( const std::string_view  json)

Send GameScript JSON to the admin network (if they did opt in for the respective update).

Parameters
jsonThe JSON data as received from the GameScript.

Definition at line 1036 of file network_admin.cpp.

References ADMIN_FREQUENCY_AUTOMATIC, ADMIN_UPDATE_GAMESCRIPT, and ServerNetworkAdminSocketHandler::IterateActive().

◆ NetworkAdminUpdate()

void NetworkAdminUpdate ( AdminUpdateFrequency  freq)

Send (push) updates to the admin network as they have registered for these updates.

Parameters
freqthe frequency to be processed.

Definition at line 1075 of file network_admin.cpp.

References ADMIN_UPDATE_COMPANY_ECONOMY, ADMIN_UPDATE_COMPANY_STATS, ADMIN_UPDATE_DATE, ADMIN_UPDATE_END, and ServerNetworkAdminSocketHandler::IterateActive().

◆ NetworkServerSendAdminRcon()

void NetworkServerSendAdminRcon ( AdminIndex  admin_index,
TextColour  colour_code,
const std::string_view  string 
)

Pass the rcon reply to the admin.

Parameters
admin_indexThe admin to give the reply.
colour_codeThe colour of the string.
stringThe string to show.

Definition at line 1013 of file network_admin.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_networkadminsocket_pool >::Get().

Referenced by IConsolePrint().

Variable Documentation

◆ _admin_update_type_frequencies

const AdminUpdateFrequency _admin_update_type_frequencies[]
static
Initial value:
= {
}
@ ADMIN_FREQUENCY_MONTHLY
The admin gets information about this on a monthly basis.
Definition tcp_admin.h:100
@ ADMIN_FREQUENCY_QUARTERLY
The admin gets information about this on a quarterly basis.
Definition tcp_admin.h:101
@ ADMIN_FREQUENCY_AUTOMATIC
The admin gets information about this when it changes.
Definition tcp_admin.h:103
@ ADMIN_FREQUENCY_ANUALLY
The admin gets information about this on a yearly basis.
Definition tcp_admin.h:102
@ ADMIN_FREQUENCY_WEEKLY
The admin gets information about this on a weekly basis.
Definition tcp_admin.h:99
@ ADMIN_FREQUENCY_DAILY
The admin gets information about this on a daily basis.
Definition tcp_admin.h:98
@ ADMIN_FREQUENCY_POLL
The admin can poll this.
Definition tcp_admin.h:97

Frequencies, which may be registered for a certain update type.

Definition at line 49 of file network_admin.cpp.

Referenced by ServerNetworkAdminSocketHandler::Receive_ADMIN_UPDATE_FREQUENCY(), and ServerNetworkAdminSocketHandler::SendProtocol().

◆ _network_admins_connected

◆ _redirect_console_to_admin

AdminIndex _redirect_console_to_admin = INVALID_ADMIN_ID

Redirection of the (remote) console to the admin.

Definition at line 32 of file network_admin.cpp.

Referenced by IConsolePrint(), ServerNetworkAdminSocketHandler::Receive_ADMIN_RCON(), and ServerNetworkAdminSocketHandler::~ServerNetworkAdminSocketHandler().