src/network/network_server.cpp
changeset 9451 0d6806ba5504
parent 9428 1ba05b499957
child 9470 08424e2e79e4
equal deleted inserted replaced
9450:9e7d05b0b1e5 9451:0d6806ba5504
   612 DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_NEWGRFS_CHECKED)
   612 DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_NEWGRFS_CHECKED)
   613 {
   613 {
   614 	NetworkClientInfo *ci = DEREF_CLIENT_INFO(cs);
   614 	NetworkClientInfo *ci = DEREF_CLIENT_INFO(cs);
   615 
   615 
   616 	/* We now want a password from the client else we do not allow him in! */
   616 	/* We now want a password from the client else we do not allow him in! */
   617 	if (_network_game_info.use_password) {
   617 	if (!StrEmpty(_settings_client.network.server_password)) {
   618 		SEND_COMMAND(PACKET_SERVER_NEED_PASSWORD)(cs, NETWORK_GAME_PASSWORD);
   618 		SEND_COMMAND(PACKET_SERVER_NEED_PASSWORD)(cs, NETWORK_GAME_PASSWORD);
   619 	} else {
   619 	} else {
   620 		if (IsValidPlayer(ci->client_playas) && _network_player_info[ci->client_playas].password[0] != '\0') {
   620 		if (IsValidPlayer(ci->client_playas) && _network_player_info[ci->client_playas].password[0] != '\0') {
   621 			SEND_COMMAND(PACKET_SERVER_NEED_PASSWORD)(cs, NETWORK_COMPANY_PASSWORD);
   621 			SEND_COMMAND(PACKET_SERVER_NEED_PASSWORD)(cs, NETWORK_COMPANY_PASSWORD);
   622 		} else {
   622 		} else {
   653 	if (cs->has_quit) return;
   653 	if (cs->has_quit) return;
   654 
   654 
   655 	// join another company does not affect these values
   655 	// join another company does not affect these values
   656 	switch (playas) {
   656 	switch (playas) {
   657 		case PLAYER_NEW_COMPANY: /* New company */
   657 		case PLAYER_NEW_COMPANY: /* New company */
   658 			if (ActivePlayerCount() >= _network_game_info.companies_max) {
   658 			if (ActivePlayerCount() >= _settings_client.network.max_companies) {
   659 				SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_FULL);
   659 				SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_FULL);
   660 				return;
   660 				return;
   661 			}
   661 			}
   662 			break;
   662 			break;
   663 		case PLAYER_SPECTATOR: /* Spectator */
   663 		case PLAYER_SPECTATOR: /* Spectator */
   664 			if (NetworkSpectatorCount() >= _network_game_info.spectators_max) {
   664 			if (NetworkSpectatorCount() >= _settings_client.network.max_spectators) {
   665 				SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_FULL);
   665 				SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_FULL);
   666 				return;
   666 				return;
   667 			}
   667 			}
   668 			break;
   668 			break;
   669 		default: /* Join another company (companies 1-8 (index 0-7)) */
   669 		default: /* Join another company (companies 1-8 (index 0-7)) */
   709 	type = (NetworkPasswordType)p->Recv_uint8();
   709 	type = (NetworkPasswordType)p->Recv_uint8();
   710 	p->Recv_string(password, sizeof(password));
   710 	p->Recv_string(password, sizeof(password));
   711 
   711 
   712 	if (cs->status == STATUS_AUTHORIZING && type == NETWORK_GAME_PASSWORD) {
   712 	if (cs->status == STATUS_AUTHORIZING && type == NETWORK_GAME_PASSWORD) {
   713 		// Check game-password
   713 		// Check game-password
   714 		if (strcmp(password, _network_game_info.server_password) != 0) {
   714 		if (strcmp(password, _settings_client.network.server_password) != 0) {
   715 			// Password is invalid
   715 			// Password is invalid
   716 			SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_WRONG_PASSWORD);
   716 			SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_WRONG_PASSWORD);
   717 			return;
   717 			return;
   718 		}
   718 		}
   719 
   719 
  1185 DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_RCON)
  1185 DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_RCON)
  1186 {
  1186 {
  1187 	char pass[NETWORK_PASSWORD_LENGTH];
  1187 	char pass[NETWORK_PASSWORD_LENGTH];
  1188 	char command[NETWORK_RCONCOMMAND_LENGTH];
  1188 	char command[NETWORK_RCONCOMMAND_LENGTH];
  1189 
  1189 
  1190 	if (_network_game_info.rcon_password[0] == '\0') return;
  1190 	if (StrEmpty(_settings_client.network.rcon_password)) return;
  1191 
  1191 
  1192 	p->Recv_string(pass, sizeof(pass));
  1192 	p->Recv_string(pass, sizeof(pass));
  1193 	p->Recv_string(command, sizeof(command));
  1193 	p->Recv_string(command, sizeof(command));
  1194 
  1194 
  1195 	if (strcmp(pass, _network_game_info.rcon_password) != 0) {
  1195 	if (strcmp(pass, _settings_client.network.rcon_password) != 0) {
  1196 		DEBUG(net, 0, "[rcon] wrong password from client-id %d", cs->index);
  1196 		DEBUG(net, 0, "[rcon] wrong password from client-id %d", cs->index);
  1197 		return;
  1197 		return;
  1198 	}
  1198 	}
  1199 
  1199 
  1200 	DEBUG(net, 0, "[rcon] client-id %d executed: '%s'", cs->index, command);
  1200 	DEBUG(net, 0, "[rcon] client-id %d executed: '%s'", cs->index, command);