SQLite3ServerPlugin::SQLExecThreadOutput ExecStatementThread(SQLite3ServerPlugin::SQLExecThreadInput threadInput, bool *returnOutput, void* perThreadData) { unsigned int queryId; RakNet::RakString dbIdentifier; RakNet::RakString inputStatement; RakNet::BitStream bsIn((unsigned char*) threadInput.data, threadInput.length, false); bsIn.IgnoreBytes(sizeof(MessageID)); bsIn.Read(queryId); bsIn.Read(dbIdentifier); bsIn.Read(inputStatement); // bool isRequest; // bsIn.Read(isRequest); bsIn.IgnoreBits(1); char *errorMsg; RakNet::RakString errorMsgStr; SQLite3Table outputTable; sqlite3_exec(threadInput.dbHandle, inputStatement.C_String(), PerRowCallback, &outputTable, &errorMsg); if (errorMsg) { errorMsgStr=errorMsg; sqlite3_free(errorMsg); } RakNet::BitStream bsOut; bsOut.Write((MessageID)ID_SQLite3_EXEC); bsOut.Write(queryId); bsOut.Write(dbIdentifier); bsOut.Write(inputStatement); bsOut.Write(false); bsOut.Write(errorMsgStr); outputTable.Serialize(&bsOut); // Free input data rakFree_Ex(threadInput.data,_FILE_AND_LINE_); // Copy to output data SQLite3ServerPlugin::SQLExecThreadOutput threadOutput; threadOutput.data=(char*) rakMalloc_Ex(bsOut.GetNumberOfBytesUsed(),_FILE_AND_LINE_); memcpy(threadOutput.data,bsOut.GetData(),bsOut.GetNumberOfBytesUsed()); threadOutput.length=bsOut.GetNumberOfBytesUsed(); threadOutput.sender=threadInput.sender; // SendUnified(&bsOut, MEDIUM_PRIORITY,RELIABLE_ORDERED,0,packet->systemAddress,false); *returnOutput=true; return threadOutput; }
bool AutopatcherMySQLRepository::GetChangelistSinceDate(const char *applicationName, FileList *addedOrModifiedFilesWithHashData, FileList *deletedFiles, double sinceDate) { char query[512]; RakNet::RakString escapedApplicationName = GetEscapedString(applicationName); sprintf(query, "SELECT applicationID FROM Applications WHERE applicationName='%s';", escapedApplicationName.C_String()); int applicationID; //sqlCommandMutex.Lock(); if (!ExecuteQueryReadInt(query, &applicationID)) { // This message covers the lost connection to the SQL server //sqlCommandMutex.Unlock(); //sprintf(lastError,"ERROR: %s not found in UpdateApplicationFiles\n",escapedApplicationName.C_String()); return false; } //sqlCommandMutex.Unlock(); if (sinceDate!=0) sprintf(query, "SELECT filename, fileLength, contentHash, createFile, fileId FROM FileVersionHistory " "JOIN (SELECT max(fileId) maxId FROM FileVersionHistory WHERE applicationId=%i AND modificationDate > %f GROUP BY fileName) MaxId " "ON FileVersionHistory.fileId = MaxId.maxId " "ORDER BY filename DESC;", applicationID,sinceDate); else sprintf(query, "SELECT filename, fileLength, contentHash, createFile, fileId FROM FileVersionHistory " "JOIN (SELECT max(fileId) maxId FROM FileVersionHistory WHERE applicationId=%i GROUP BY fileName) MaxId " "ON FileVersionHistory.fileId = MaxId.maxId " "ORDER BY filename DESC;", applicationID); MYSQL_RES * result = 0; //sqlCommandMutex.Lock(); if (!ExecuteBlockingCommand (query, &result)) { //sqlCommandMutex.Unlock(); return false; } //sqlCommandMutex.Unlock(); MYSQL_ROW row; while ((row = mysql_fetch_row (result)) != 0) { const char * createFileResult = row [3]; const char * hardDriveFilename = row [0]; if (createFileResult[0]=='1') { const char * hardDriveHash = row [2]; int fileLength = atoi (row [1]); addedFiles->AddFile(hardDriveFilename, hardDriveFilename, hardDriveHash, HASH_LENGTH, fileLength, FileListNodeContext(0,0), false); } else { deletedFiles->AddFile(hardDriveFilename,hardDriveFilename,0,0,0,FileListNodeContext(0,0), false); } } mysql_free_result (result); return true; }
bool TwoWayAuthentication::AddPassword(RakNet::RakString identifier, RakNet::RakString password) { if (password.IsEmpty()) return false; if (identifier.IsEmpty()) return false; if (password==identifier) return false; // Insecure if (passwords.GetIndexOf(identifier.C_String()).IsInvalid()==false) return false; // This identifier already in use passwords.Push(identifier, password,_FILE_AND_LINE_); return true; }
virtual void MessageResult(RakNet::Notification_Console_MemberJoinedRoom *message) { RakNet::Notification_Console_MemberJoinedRoom_Steam *msgSteam = (RakNet::Notification_Console_MemberJoinedRoom_Steam *) message; RakNet::RakString msg; msgSteam->DebugMsg(msg); printf("%s\n", msg.C_String()); // Guy with the lower ID connects to the guy with the higher ID uint64_t mySteamId=SteamUser()->GetSteamID().ConvertToUint64(); if (mySteamId < msgSteam->srcMemberId) { // Steam's NAT punch is implicit, so it takes a long time to connect. Give it extra time unsigned int sendConnectionAttemptCount=24; unsigned int timeBetweenSendConnectionAttemptsMS=500; ConnectionAttemptResult car = rakPeer->Connect(msgSteam->remoteSystem.ToString(false), msgSteam->remoteSystem.GetPort(), 0, 0, 0, 0, sendConnectionAttemptCount, timeBetweenSendConnectionAttemptsMS); RakAssert(car==CONNECTION_ATTEMPT_STARTED); } }
void TwoWayAuthentication::Hash(char thierNonce[TWO_WAY_AUTHENTICATION_NONCE_LENGTH], RakNet::RakString password, char out[HASHED_NONCE_AND_PW_LENGTH]) { #if LIBCAT_SECURITY==1 cat::Skein hash; if (!hash.BeginKey(HASH_BITS)) return; hash.Crunch(thierNonce, TWO_WAY_AUTHENTICATION_NONCE_LENGTH); hash.Crunch(password.C_String(), (int) password.GetLength()); hash.End(); hash.Generate(out, HASH_BYTES, STRENGTHENING_FACTOR); #else CSHA1 sha1; sha1.Update((unsigned char *) thierNonce, TWO_WAY_AUTHENTICATION_NONCE_LENGTH); sha1.Update((unsigned char *) password.C_String(), (unsigned int) password.GetLength()); sha1.Final(); sha1.GetHash((unsigned char *) out); #endif }
void loginServer::receiveGameServerConnectionInfo(RakNet::Packet *packet) {//Receive data for connecting to game server RakNet::BitStream data(packet->data+sizeof(RakNet::MessageID),packet->length-sizeof(RakNet::MessageID),false); unsigned char ticket[8]; for(char i=0; i<8; i++) { data.Read<unsigned char>(ticket[i]); //Read byte of the ticket } RakNet::RakString connectIP; short connectPort; data.Read<RakNet::RakString>(connectIP); //Read game server IP gameEngine::logger::logStream << "Connecting to server: " << connectIP.C_String() << endl; data.Read<short>(connectPort); //Read game serverPort //Now we need to try and connect to the game server networking::gameServer::parentWorld = networking::loginServer::parentWorld; //Set the parent world to the main menu world for(char i=0; i<8; i++) { networking::gameServer::ticket[i] = ticket[i]; //Set the ticket data } networking::gameServer::connect(connectIP.C_String(),connectPort); //Connect }
RakString HTTPConnection::Read(void) { if (results.IsEmpty()) return RakString(); RakNet::RakString resultStr = results.Pop(); // const char *start_of_body = strstr(resultStr.C_String(), "\r\n\r\n"); const char *start_of_body = strpbrk(resultStr.C_String(), "\001\002\003%"); if(! start_of_body) { return RakString(); } // size_t len = strlen(start_of_body); //printf("Returning result with length %i\n", len); return RakNet::RakString::NonVariadic(start_of_body); }
void PlayerChat(RakNet::BitStream * pBitStream, RakNet::Packet * pPacket) { // Get the playerid EntityId playerId = (EntityId) pPacket->guid.systemIndex; // Read if this is a command bool bIsCommand = pBitStream->ReadBit(); // Read the input RakNet::RakString strInput; pBitStream->Read(strInput); // Is the player active? if (CServer::GetInstance()->GetPlayerManager()->DoesExists(playerId)) { // Get a pointer to the player CPlayerEntity * pPlayer = CServer::GetInstance()->GetPlayerManager()->GetAt(playerId); // Is the pointer valid? if (pPlayer) { // Is this not a command? if (!bIsCommand) { CLogFile::Printf("[chat] %s: %s", pPlayer->GetName().Get(), strInput.C_String()); // Send the RPC back to other players RakNet::BitStream bitStream; bitStream.Write(playerId); bitStream.Write(strInput); CServer::GetInstance()->GetNetworkModule()->Call(GET_RPC_CODEX(RPC_PLAYER_CHAT), &bitStream, HIGH_PRIORITY, RELIABLE_ORDERED, -1, true); } else { CLogFile::Printf("[command] %s: %s", pPlayer->GetName().Get(), strInput.C_String()); CScriptArguments args; args.push(strInput); args.push(pPlayer->GetScriptPlayer()); CEvents::GetInstance()->Call("playerCommand", &args, CEventHandler::eEventType::NATIVE_EVENT, nullptr); } } } }
int _findnext(long h, _finddata_t *f) { RakAssert(h >= 0 && h < (long)fileInfo.Size()); if (h < 0 || h >= (long)fileInfo.Size()) return -1; _findinfo_t* fi = fileInfo[h]; while(true) { dirent* entry = readdir(fi->openedDir); if(entry == 0) return -1; // Only report stuff matching our filter if (fnmatch(fi->filter, entry->d_name, FNM_PATHNAME) != 0) continue; // To reliably determine the entry's type, we must do // a stat... don't rely on entry->d_type, as this // might be unavailable! struct stat filestat; RakNet::RakString fullPath = fi->dirName + entry->d_name; if (stat(fullPath, &filestat) != 0) { RAKNET_DEBUG_PRINTF("Cannot stat %s\n", fullPath.C_String()); continue; } if (S_ISREG(filestat.st_mode)) { f->attrib = _A_NORMAL; } else if (S_ISDIR(filestat.st_mode)) { f->attrib = _A_SUBDIR; } else continue; // We are interested in files and // directories only. Links currently // are not supported. f->size = filestat.st_size; strncpy(f->name, entry->d_name, STRING_BUFFER_SIZE); return 0; } return -1; }
void Lobby2Server::OnChangeHandle(Lobby2ServerCommand *command, bool calledFromThread) { if (calledFromThread) { ThreadAction ta; ta.action=L2MID_Client_ChangeHandle; ta.command=*command; threadActionQueueMutex.Lock(); threadActionQueue.Push(ta, __FILE__, __LINE__ ); threadActionQueueMutex.Unlock(); return; } unsigned int i; RakNet::RakString oldHandle; for (i=0; i < users.Size(); i++) { if (users[i]->callerUserId==command->callerUserId) { oldHandle=users[i]->userName; users[i]->userName=command->callingUserName; break; } } if (oldHandle.IsEmpty()) return; #if defined(__INTEGRATE_LOBBY2_WITH_ROOMS_PLUGIN) // Tell the rooms plugin about the handle change if (roomsPlugin) { roomsPlugin->ChangeHandle(oldHandle, command->callingUserName); } else if (roomsPluginAddress!=UNASSIGNED_SYSTEM_ADDRESS) { RakNet::BitStream bs; RoomsPlugin::SerializeChangeHandle(oldHandle,command->callingUserName,&bs); SendUnified(&bs,packetPriority, RELIABLE_ORDERED, orderingChannel, roomsPluginAddress, false); } #endif }
void RoomsBrowserGFx3_RakNet::LoadProperty(const char *propertyId, RakNet::RakString &propertyOut) { XMLNode xMainNode=XMLNode::openFileHelper(pathToXMLPropertyFile.C_String(),""); if (xMainNode.isEmpty()) return; XMLNode xNode=xMainNode.getChildNode(propertyId); LPCTSTR attr = xNode.getAttribute("value", 0); if (attr) propertyOut = attr; else propertyOut.Clear(); }
// File RPC's void NewFile( RakNet::BitStream * pBitStream, RakNet::Packet * pPacket ) { // Read the file type bool bIsScript; pBitStream->Read( bIsScript ); // Read the file name RakNet::RakString strFileName; pBitStream->Read( strFileName ); // Read the file path RakNet::RakString strFilePath; pBitStream->Read( strFilePath ); // Read the file checksum CFileChecksum fileChecksum; pBitStream->Read( (char *)&fileChecksum, sizeof(CFileChecksum) ); // Add the file to the transfer manager pCore->GetFileTransferManager()->Add ( strFileName.C_String (), strFilePath.C_String (), fileChecksum, bIsScript ); }
void Console_SearchRooms_Steam::DebugMsg(RakNet::RakString &out) const { if (resultCode!=L2RC_SUCCESS) { Console_SearchRooms::DebugMsg(out); return; } out.Set("%i rooms found", roomNames.GetSize()); for (DataStructures::DefaultIndexType i=0; i < roomNames.GetSize(); i++) { out += RakNet::RakString("\n%i. %s. ID=%" PRINTF_64_BIT_MODIFIER "u", i+1, roomNames[i].C_String(), roomIds[i]); } }
RakString RakString::FormatForDELETE(const char* uri, const char* extraHeaders) { RakString out; RakString host; RakString remotePath; RakNet::RakString header; RakNet::RakString uriRs; uriRs = uri; uriRs.SplitURI(header, host, remotePath); if (host.IsEmpty() || remotePath.IsEmpty()) return out; if (extraHeaders && extraHeaders[0]) { out.Set("DELETE %s HTTP/1.1\r\n" "%s\r\n" "Content-Length: 0\r\n" "Host: %s\r\n" "Connection: close\r\n" "\r\n", remotePath.C_String(), extraHeaders, host.C_String()); } else { out.Set("DELETE %s HTTP/1.1\r\n" "Content-Length: 0\r\n" "Host: %s\r\n" "Connection: close\r\n" "\r\n", remotePath.C_String(), host.C_String()); } return out; }
/** * _findfirst - equivalent */ long _findfirst(const char *name, _finddata_t *f) { RakNet::RakString nameCopy = name; RakNet::RakString filter; // This is linux only, so don't bother with '\' const char* lastSep = strrchr(name,'/'); if(!lastSep) { // filter pattern only is given, search current directory. filter = nameCopy; nameCopy = "."; } else { // strip filter pattern from directory name, leave // trailing '/' intact. filter = lastSep+1; unsigned sepIndex = lastSep - name; nameCopy.Erase(sepIndex+1, nameCopy.GetLength() - sepIndex-1); } DIR* dir = opendir(nameCopy); if(!dir) return -1; _findinfo_t* fi = new _findinfo_t; fi->filter = filter; fi->dirName = nameCopy; // we need to remember this for stat() fi->openedDir = dir; fileInfo.Insert(fi); long ret = fileInfo.Size()-1; // Retrieve the first file. We cannot rely on the first item // being '.' if (_findnext(ret, f) == -1) return -1; else return ret; }
void RakString::SplitURI(RakNet::RakString &header, RakNet::RakString &domain, RakNet::RakString &path) { header.Clear(); domain.Clear(); path.Clear(); size_t strLen = strlen(sharedString->c_str); char c; unsigned int i=0; if (strncmp(sharedString->c_str, "http://", 7)==0) i+=(unsigned int) strlen("http://"); else if (strncmp(sharedString->c_str, "https://", 8)==0) i+=(unsigned int) strlen("https://"); if (strncmp(sharedString->c_str, "www.", 4)==0) i+=(unsigned int) strlen("www."); if (i!=0) { header.Allocate(i+1); strncpy(header.sharedString->c_str, sharedString->c_str, i); header.sharedString->c_str[i]=0; } domain.Allocate(strLen-i+1); char *domainOutput=domain.sharedString->c_str; unsigned int outputIndex=0; for (; i < strLen; i++) { c=sharedString->c_str[i]; if (c=='/') { break; } else { domainOutput[outputIndex++]=sharedString->c_str[i]; } } domainOutput[outputIndex]=0; path.Allocate(strLen-header.GetLength()-outputIndex+1); outputIndex=0; char *pathOutput=path.sharedString->c_str; for (; i < strLen; i++) { pathOutput[outputIndex++]=sharedString->c_str[i]; } pathOutput[outputIndex]=0; }
void TwoWayAuthentication::PushToUser(MessageID messageId, RakNet::RakString password, RakNet::AddressOrGUID remoteSystem) { RakNet::BitStream output; output.Write(messageId); if (password.IsEmpty()==false) output.Write(password); Packet *p = AllocatePacketUnified(output.GetNumberOfBytesUsed()); p->systemAddress=remoteSystem.systemAddress; p->systemAddress.systemIndex=(SystemIndex)-1; p->guid=remoteSystem.rakNetGuid; p->wasGeneratedLocally=true; memcpy(p->data, output.GetData(), output.GetNumberOfBytesUsed()); rakPeerInterface->PushBackPacket(p, true); }
const RakNet::RakString operator+(const RakNet::RakString &lhs, const RakNet::RakString &rhs) { if (lhs.IsEmpty() && rhs.IsEmpty()) return RakString(&RakString::emptyString); if (lhs.IsEmpty()) { rhs.sharedString->refCount++; return RakString(rhs.sharedString); } if (rhs.IsEmpty()) { lhs.sharedString->refCount++; return RakString(lhs.sharedString); } size_t len1 = lhs.GetLength(); size_t len2 = rhs.GetLength(); size_t allocatedBytes = len1 + len2 + 1; allocatedBytes = RakString::GetSizeToAllocate(allocatedBytes); RakString::SharedString *sharedString; RakString::LockMutex(); // sharedString = RakString::pool.Allocate(); if (RakString::freeList.Size()==0) { //RakString::sharedStringFreeList=(RakString::SharedString*) rakRealloc_Ex(RakString::sharedStringFreeList,(RakString::sharedStringFreeListAllocationCount+1024)*sizeof(RakString::SharedString), __FILE__, __LINE__); unsigned i; for (i=0; i < 1024; i++) { // RakString::freeList.Insert(RakString::sharedStringFreeList+i+RakString::sharedStringFreeListAllocationCount); RakString::freeList.Insert((RakString::SharedString*)rakMalloc_Ex(sizeof(RakString::SharedString), __FILE__, __LINE__), __FILE__, __LINE__); } //RakString::sharedStringFreeListAllocationCount+=1024; } sharedString = RakString::freeList[RakString::freeList.Size()-1]; RakString::freeList.RemoveAtIndex(RakString::freeList.Size()-1); RakString::UnlockMutex(); const int smallStringSize = 128-sizeof(unsigned int)-sizeof(size_t)-sizeof(char*)*2; sharedString->bytesUsed=allocatedBytes; sharedString->refCount=1; if (allocatedBytes <= (size_t) smallStringSize) { sharedString->c_str=sharedString->smallString; } else { sharedString->bigString=(char*)rakMalloc_Ex(sharedString->bytesUsed, __FILE__, __LINE__); sharedString->c_str=sharedString->bigString; } strcpy(sharedString->c_str, lhs); strcat(sharedString->c_str, rhs); return RakString(sharedString); }
void TwoWayAuthentication::OnPasswordResult(Packet *packet) { RakNet::BitStream bsIn(packet->data, packet->length, false); bsIn.IgnoreBytes(sizeof(MessageID)*1); char usedNonce[TWO_WAY_AUTHENTICATION_NONCE_LENGTH]; bsIn.ReadAlignedBytes((unsigned char *)usedNonce,TWO_WAY_AUTHENTICATION_NONCE_LENGTH); char hashedNonceAndPw[HASHED_NONCE_AND_PW_LENGTH]; bsIn.ReadAlignedBytes((unsigned char *)hashedNonceAndPw,HASHED_NONCE_AND_PW_LENGTH); RakNet::RakString passwordIdentifier; bsIn.Read(passwordIdentifier); DataStructures::HashIndex skhi = passwords.GetIndexOf(passwordIdentifier.C_String()); if (skhi.IsInvalid()==false) { RakNet::RakString password = passwords.ItemAtIndex(skhi); char testHash[HASHED_NONCE_AND_PW_LENGTH]; Hash(usedNonce, password, testHash); if (memcmp(testHash,hashedNonceAndPw,HASHED_NONCE_AND_PW_LENGTH)==0) { // Lookup the outgoing challenge and remove it from the list unsigned int i; AddressOrGUID aog(packet); for (i=0; i < outgoingChallenges.Size(); i++) { if (outgoingChallenges[i].identifier==passwordIdentifier && outgoingChallenges[i].remoteSystem==aog && outgoingChallenges[i].sentHash==true) { outgoingChallenges.RemoveAtIndex(i); PushToUser(packet->data[0], passwordIdentifier, packet); return; } } } } }
void PostgreSQLInterface::EncodeQueryInput(const char *colName, int value, RakNet::RakString ¶mTypeStr, RakNet::RakString &valueStr, int &numParams, char **paramData, int *paramLength, int *paramFormat) { (void)numParams; (void)paramData; (void)paramLength; (void)paramFormat; if (paramTypeStr.IsEmpty()==false) { paramTypeStr += ", "; valueStr += ", "; } paramTypeStr += colName; valueStr += FormatString("%i", value); }
void PlayerChat( RakNet::BitStream * pBitStream, RakNet::Packet * pPacket ) { // Read the playerid EntityId playerId; pBitStream->ReadCompressed( playerId ); // Read the input RakNet::RakString strInput; pBitStream->Read( strInput ); // Is the player active? if( pCore->GetPlayerManager()->IsActive( playerId ) ) { // Get the player pointer CRemotePlayer * pNetworkPlayer = pCore->GetPlayerManager()->Get(playerId); // Is the player pointer valid? if( pNetworkPlayer ) { // Output the message pCore->GetChat()->AddChatMessage( pNetworkPlayer, strInput.C_String() ); } } }
void PHPDirectoryServer2::SetField( RakNet::RakString columnName, RakNet::RakString value ) { if (columnName.IsEmpty()) return; if (columnName==GAME_NAME_COMMAND || columnName==GAME_PORT_COMMAND || columnName==LAST_UPDATE_COMMAND) { RakAssert("PHPDirectoryServer2::SetField attempted to set reserved column name" && 0); return; } fields.Set(columnName, value); }
void PostgreSQLInterface::EncodeQueryUpdate(const char *colName, float value, RakNet::RakString &valueStr, int &numParams, char **paramData, int *paramLength, int *paramFormat) { (void)numParams; (void)paramData; (void)paramLength; (void)paramFormat; if (valueStr.IsEmpty()==false) { valueStr += ", "; } valueStr += colName; valueStr += " = "; valueStr += FormatString("%f", value); }
void SQLite3ServerPlugin::RemoveDBHandle(RakNet::RakString dbIdentifier, bool alsoCloseConnection) { DataStructures::DefaultIndexType idx = dbHandles.GetIndexOf(dbIdentifier); if (idx!=(DataStructures::DefaultIndexType)-1) { if (alsoCloseConnection) { printf("Closed %s\n", dbIdentifier.C_String()); sqlite3_close(dbHandles[idx].dbHandle); } dbHandles.RemoveAtIndex(idx,__FILE__,__LINE__); #ifdef SQLite3_STATEMENT_EXECUTE_THREADED if (dbHandles.GetSize()==0) StopThreads(); #endif // SQLite3_STATEMENT_EXECUTE_THREADED } }
void PostgreSQLInterface::EncodeQueryUpdate(const char *colName, const char *str, RakNet::RakString &valueStr, int &numParams, char **paramData, int *paramLength, int *paramFormat, const char *type) { if (str==0 || str[0]==0) return; if (valueStr.IsEmpty()==false) { valueStr += ", "; } valueStr += colName; valueStr+=" = "; valueStr+=FormatString("$%i::%s", numParams+1, type); paramData[numParams]=(char*) str; paramLength[numParams]=(int) strlen(str); paramFormat[numParams]=PQEXECPARAM_FORMAT_TEXT; numParams++; }
ReadResultEnum ReadResult(RakNet::RakString &httpResult) { RakNet::TimeMS endTime=RakNet::GetTimeMS()+10000; httpResult.Clear(); while (RakNet::GetTimeMS()<endTime) { Packet *packet = tcp->Receive(); if(packet) { httpConnection->ProcessTCPPacket(packet); tcp->DeallocatePacket(packet); } if (httpConnection->HasRead()) { httpResult = httpConnection->Read(); // Good response, let the PHPDirectoryServer2 class handle the data // If resultCode is not an empty string, then we got something other than a table // (such as delete row success notification, or the message is for HTTP only and not for this class). HTTPReadResult readResult = phpDirectoryServer2->ProcessHTTPRead(httpResult); if (readResult==HTTP_RESULT_GOT_TABLE) { //printf("RR_READ_TABLE\n"); return RR_READ_TABLE; } else if (readResult==HTTP_RESULT_EMPTY) { //printf("HTTP_RESULT_EMPTY\n"); return RR_EMPTY_TABLE; } } // Update our two classes so they can do time-based updates httpConnection->Update(); phpDirectoryServer2->Update(); // Prevent 100% cpu usage RakSleep(30); } return RR_TIMEOUT; }
bool TwoWayAuthentication::Challenge(RakNet::RakString identifier, AddressOrGUID remoteSystem) { DataStructures::HashIndex skhi = passwords.GetIndexOf(identifier.C_String()); if (skhi.IsInvalid()) return false; RakNet::BitStream bsOut; bsOut.Write((MessageID)ID_TWO_WAY_AUTHENTICATION_NEGOTIATION); bsOut.Write((MessageID)ID_NONCE_REQUEST); SendUnified(&bsOut,HIGH_PRIORITY,RELIABLE_ORDERED,0,remoteSystem,false); PendingChallenge pc; pc.identifier=identifier; pc.remoteSystem=remoteSystem; pc.time=RakNet::GetTime(); pc.sentHash=false; outgoingChallenges.Push(pc,_FILE_AND_LINE_); return true; }
void Rackspace::UpdateServerNameOrPassword(RakNet::RakString serverId, RakNet::RakString newName, RakNet::RakString newPassword) { if (newName.IsEmpty() && newPassword.IsEmpty()) return; RakNet::RakString xml( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" "<server xmlns=\"http://docs.rackspacecloud.com/servers/api/v1.0\"" ); if (newName.IsEmpty()==false) xml += RakNet::RakString(" name=\"%s\"", newName.C_String()); if (newPassword.IsEmpty()==false) xml += RakNet::RakString(" adminPass=\"%s\"", newPassword.C_String()); xml += " />"; AddOperation(RO_UPDATE_SERVER_NAME_OR_PASSWORD, "PUT", RakNet::RakString("servers/%s", serverId.C_String()), xml); }
bool SQLite3ServerPlugin::AddDBHandle(RakNet::RakString dbIdentifier, sqlite3 *dbHandle, bool dbAutoCreated) { if (dbIdentifier.IsEmpty()) return false; DataStructures::DefaultIndexType idx = dbHandles.GetInsertionIndex(dbIdentifier); if (idx==(DataStructures::DefaultIndexType)-1) return false; NamedDBHandle ndbh; ndbh.dbHandle=dbHandle; ndbh.dbIdentifier=dbIdentifier; ndbh.dbAutoCreated=dbAutoCreated; ndbh.whenCreated=RakNet::GetTimeMS(); dbHandles.InsertAtIndex(ndbh,idx,__FILE__,__LINE__); #ifdef SQLite3_STATEMENT_EXECUTE_THREADED if (sqlThreadPool.WasStarted()==false) sqlThreadPool.StartThreads(1,0); #endif return true; }
void PostgreSQLInterface::EncodeQueryUpdate(const char *colName, char *binaryData, int binaryDataLength, RakNet::RakString &valueStr, int &numParams, char **paramData, int *paramLength, int *paramFormat) { if (binaryData==0 || binaryDataLength==0) return; if (binaryData==0) binaryDataLength=0; if (valueStr.IsEmpty()==false) { valueStr += ", "; } valueStr += colName; valueStr += " = "; valueStr+=FormatString("$%i::bytea", numParams+1); paramData[numParams]=binaryData; paramLength[numParams]=binaryDataLength; paramFormat[numParams]=PQEXECPARAM_FORMAT_BINARY; numParams++; }