OpenTTD Source: src/network/network_admin.cpp File Reference

OpenTTD Source 15.0-beta1

Functions | Variables
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_id | the client that made the error.
  error_code | the 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

  cs | the client info.
  new_client | if 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_id | of 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

  ci | the 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

  owner | The owner of the CommandPacket (who sent us the CommandPacket).
  cp | The 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

  company | the 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_id | ID of the company that got removed.
  bcrr | the 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

  company | company 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

  origin | the origin of the message.
  string | the 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

  json | The 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

  freq | the 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_index | The admin to give the reply.
  colour_code | The colour of the string.
  string | The 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_POLL | ADMIN_FREQUENCY_DAILY | ADMIN_FREQUENCY_WEEKLY | ADMIN_FREQUENCY_MONTHLY | ADMIN_FREQUENCY_QUARTERLY | ADMIN_FREQUENCY_ANUALLY,
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_AUTOMATIC,
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_AUTOMATIC,
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_WEEKLY | ADMIN_FREQUENCY_MONTHLY | ADMIN_FREQUENCY_QUARTERLY | ADMIN_FREQUENCY_ANUALLY,
ADMIN_FREQUENCY_POLL | ADMIN_FREQUENCY_WEEKLY | ADMIN_FREQUENCY_MONTHLY | ADMIN_FREQUENCY_QUARTERLY | ADMIN_FREQUENCY_ANUALLY,
ADMIN_FREQUENCY_AUTOMATIC,
ADMIN_FREQUENCY_AUTOMATIC,
ADMIN_FREQUENCY_POLL,
ADMIN_FREQUENCY_AUTOMATIC,
ADMIN_FREQUENCY_AUTOMATIC,
}
ADMIN_FREQUENCY_MONTHLY
@ ADMIN_FREQUENCY_MONTHLY
The admin gets information about this on a monthly basis.
Definition tcp_admin.h:100
ADMIN_FREQUENCY_QUARTERLY
@ ADMIN_FREQUENCY_QUARTERLY
The admin gets information about this on a quarterly basis.
Definition tcp_admin.h:101
ADMIN_FREQUENCY_AUTOMATIC
@ ADMIN_FREQUENCY_AUTOMATIC
The admin gets information about this when it changes.
Definition tcp_admin.h:103
ADMIN_FREQUENCY_ANUALLY
@ ADMIN_FREQUENCY_ANUALLY
The admin gets information about this on a yearly basis.
Definition tcp_admin.h:102
ADMIN_FREQUENCY_WEEKLY
@ ADMIN_FREQUENCY_WEEKLY
The admin gets information about this on a weekly basis.
Definition tcp_admin.h:99
ADMIN_FREQUENCY_DAILY
@ ADMIN_FREQUENCY_DAILY
The admin gets information about this on a daily basis.
Definition tcp_admin.h:98
ADMIN_FREQUENCY_POLL
@ 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

uint8_t _network_admins_connected = 0

The amount of admins connected.

Definition at line 35 of file network_admin.cpp.

Referenced by ServerNetworkAdminSocketHandler::AllowConnection(), ServerNetworkAdminSocketHandler::ServerNetworkAdminSocketHandler(), and ServerNetworkAdminSocketHandler::~ServerNetworkAdminSocketHandler().

## ◆ _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().