diff options
Diffstat (limited to 'src/network/network_server.cpp')
-rw-r--r-- | src/network/network_server.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index c9fe3c181..83352f702 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -1629,6 +1629,26 @@ bool NetworkServerChangeClientName(ClientID client_id, const char *new_name) return true; } +/** + * Hash the current company password; used when the server 'company' sets his/her password. + * @param password The password to hash. + */ +void HashCurrentCompanyPassword(const char *password) +{ + uint32 password_game_seed; + char password_server_id[NETWORK_SERVER_ID_LENGTH]; + + password_game_seed = _settings_game.game_creation.generation_seed; + strecpy(password_server_id, _settings_client.network.network_id, lastof(password_server_id)); + + const char *new_pw = GenerateCompanyPasswordHash(password, password_server_id, password_game_seed); + strecpy(_network_company_states[_local_company].password, new_pw, lastof(_network_company_states[_local_company].password)); + + if (_network_server) { + NetworkServerUpdateCompanyPassworded(_local_company, !StrEmpty(_network_company_states[_local_company].password)); + } +} + /* Handle the local command-queue */ static void NetworkHandleCommandQueue(NetworkClientSocket *cs) { |