diff options
author | rubidium <rubidium@openttd.org> | 2008-12-22 18:20:28 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-12-22 18:20:28 +0000 |
commit | e6e32bad4d160c67f1c589edd25af423529845c2 (patch) | |
tree | 881bcba98f09ad7b96e83dffa28fbb2f9f225a4e | |
parent | 887869c771f9f210afb75b1b8e4f875eea3b9954 (diff) | |
download | openttd-e6e32bad4d160c67f1c589edd25af423529845c2.tar.xz |
(svn r14711) -Codechange: don't misuse the _network_company_info password field for changing the password on clients.
-rw-r--r-- | src/console_cmds.cpp | 14 | ||||
-rw-r--r-- | src/network/network_client.cpp | 10 | ||||
-rw-r--r-- | src/network/network_func.h | 2 |
3 files changed, 11 insertions, 15 deletions
diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index 52193e226..02fe2de72 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -1210,14 +1210,14 @@ DEF_CONSOLE_CMD(ConSayClient) return true; } -extern void HashCurrentCompanyPassword(); +extern void HashCurrentCompanyPassword(const char *password); /* Also use from within company_gui to change the password graphically */ bool NetworkChangeCompanyPassword(byte argc, char *argv[]) { if (argc == 0) { - if (!IsValidCompanyID(_local_company)) return true; // dedicated server - IConsolePrintF(CC_WARNING, "Current value for 'company_pw': %s", _network_company_info[_local_company].password); + IConsoleHelp("Change the password of your company. Usage: 'company_pw \"<password>\"'"); + IConsoleHelp("Use \"*\" to disable the password."); return true; } @@ -1230,15 +1230,13 @@ bool NetworkChangeCompanyPassword(byte argc, char *argv[]) if (strcmp(argv[0], "*") == 0) argv[0][0] = '\0'; - strecpy(_network_company_info[_local_company].password, argv[0], lastof(_network_company_info[_local_company].password)); - if (!_network_server) { - NetworkClientSetPassword(); + NetworkClientSetPassword(argv[0]); } else { - HashCurrentCompanyPassword(); + HashCurrentCompanyPassword(argv[0]); } - IConsolePrintF(CC_WARNING, "'company_pw' changed to: %s", _network_company_info[_local_company].password); + IConsolePrintF(CC_WARNING, "'company_pw' changed to: %s", argv[0]); return true; } diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index 5098a8f64..6e6006d57 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -79,14 +79,12 @@ static const char *GenerateCompanyPasswordHash(const char *password) /** * Hash the current company password; used when the server 'company' sets his/her password. */ -void HashCurrentCompanyPassword() +void HashCurrentCompanyPassword(const char *password) { - if (StrEmpty(_network_company_info[_local_company].password)) return; - _password_game_seed = _settings_game.game_creation.generation_seed; strecpy(_password_server_unique_id, _settings_client.network.network_id, lastof(_password_server_unique_id)); - const char *new_pw = GenerateCompanyPasswordHash(_network_company_info[_local_company].password); + const char *new_pw = GenerateCompanyPasswordHash(password); strecpy(_network_company_info[_local_company].password, new_pw, lastof(_network_company_info[_local_company].password)); } @@ -950,9 +948,9 @@ void NetworkClientSendChat(NetworkAction action, DestType type, int dest, const SEND_COMMAND(PACKET_CLIENT_CHAT)(action, type, dest, msg); } -void NetworkClientSetPassword() +void NetworkClientSetPassword(const char *password) { - SEND_COMMAND(PACKET_CLIENT_SET_PASSWORD)(_network_company_info[_local_company].password); + SEND_COMMAND(PACKET_CLIENT_SET_PASSWORD)(password); } #endif /* ENABLE_NETWORK */ diff --git a/src/network/network_func.h b/src/network/network_func.h index cacf643f6..688015263 100644 --- a/src/network/network_func.h +++ b/src/network/network_func.h @@ -40,7 +40,7 @@ void NetworkUpdateClientInfo(ClientID client_id); bool NetworkClientConnectGame(const char *host, uint16 port); void NetworkClientSendRcon(const char *password, const char *command); void NetworkClientSendChat(NetworkAction action, DestType type, int dest, const char *msg); -void NetworkClientSetPassword(); +void NetworkClientSetPassword(const char *password); /*** Commands ran by the server ***/ void NetworkServerMonthlyLoop(); |