void RconConnection::EnableEvents(void) { Words command; command.clear(); command.push_back("admin.eventsEnabled"); command.push_back("true"); if(sendRequest(command)) throw string("sendRequest failed :: eventsEnabled"); TextRconPacket response = getResponse(); if(!response.m_isResponse || response.m_data[0] != "OK") throw string("eventsEnabled failed"); }
void RconConnection::Login(void) { Words loginCommand; loginCommand.push_back("login.hashed"); if(sendRequest(loginCommand)) throw string("Login failed"); TextRconPacket response = getResponse(); if(response.m_isResponse && response.m_data[0] == "OK") { string salt = response.m_data[1]; const char* hex_str = salt.c_str(); string hash, saltHex; uint32_t ch; for( ; sscanf( hex_str, "%2x", &ch) == 1 ; hex_str += 2) hash += ch; saltHex = hash; hash.append( this->password ); hash = MD5String( (char*)hash.c_str() ); boost::to_upper(hash); loginCommand.clear(); loginCommand.push_back("login.hashed"); loginCommand.push_back(hash); if(sendRequest(loginCommand)) throw string("sendRequest failed :: Login"); response = getResponse(); if(response.m_isResponse && response.m_data[0] == "InvalidPasswordHash") throw string("Login failed :: InvalidPasswordHash (Salt: " + salt + " | SaltHex: "+ saltHex +" | Hash: " + hash + ")"); } else throw string("Login failed"); }