mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-02-04 21:33:51 +00:00
(svn r14711) -Codechange: don't misuse the _network_company_info password field for changing the password on clients.
This commit is contained in:
parent
887869c771
commit
e6e32bad4d
@ -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;
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user