//------------------------------------------------------------------------------------------------- int ConsoleMenu::DeleteMsgs(tty_save_state& tty, MsgList& lst) const { for (;;) { Message *msg(SelectFromMsg(lst)); if (msg) { for (MsgList::iterator itr(lst.begin()); itr != lst.end(); ++itr) { if (*itr == msg) { if (get_yn("Delete msg? (y/n):", true)) { delete *itr; lst.erase(itr); } break; } } } else break; } return lst.size(); }
void ChatControler::_getMesage(service::ErrorInfo &info, int64 targetId, std::vector<service::MsgPtr>msgPtr) { qDebug() << Q_FUNC_INFO << msgPtr.size(); MsgList msgList; //std::shared_ptr<service::Msg> msg; for(auto msg:msgPtr){ if(msg->msgtype == 2||msg->msgtype == 8){ std::shared_ptr<service::MsgText> msgText = std::dynamic_pointer_cast<service::MsgText>(msg); Msg item; item.activeType = QString::number(msgText->active_type); item.body = QString::fromStdString(utils::MsgUtils::getText(msgText->body)); item.fromid = QString::number(msgText->fromid); item.localid = QString::number(msgText->localid); item.msgid = QString::number(msgText->msgid); item.msgProperties = QString::fromStdString(msgText->msg_properties); item.msgtype = QString::number(msgText->msgtype); item.relatedMsgid = QString::number(msgText->related_msgid); item.targetid = QString::number(msgText->targetid); item.time = QString::number(msgText->time); item.toid = QString::number(msgText->toid); msgList.insert(msgList.size(),item); } } if(!info.code()){ emit getMessagesBack(true,targetId,msgList); }else{ emit getMessagesBack(true,targetId,msgList); } }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::DeleteAllMsgs(tty_save_state& tty, MsgList& lst) const { if (lst.size() && get_yn("Delete all msgs? (y/n):", true)) { for_each(lst.begin(), lst.end(), [](const Message *pp){ delete pp; pp = nullptr; }); lst.clear(); } return 0; }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::EditMsgs(tty_save_state& tty, MsgList& lst) const { for (;;) { Message *msg(SelectFromMsg(lst)); if (!msg) break; const FieldTable::Pair *fld; while((fld = SelectField(msg))) EditMsg(tty, fld, msg); _os << endl << endl << *static_cast<MessageBase *>(msg) << endl; } return static_cast<int>(lst.size()); }
int Request::addParams(MsgList &ml) { Json::Value param; Json::Value arr; Json::Value msg; param["type"] = "MsgList"; for (int i = 0; i != ml.size(); i++) { msg["srcID"] = ml[i].srcID; msg["targetID"] = ml[i].targetID; msg["msgText"] = ml[i].msgText; msg["postTime"] = (int)ml[i].postTime; msg["msgType"] = ml[i].msgType; arr.append(msg); } param["value"] = arr; root["params"].append(param); return 0; }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::CreateMsgs(tty_save_state& tty, MsgList& lst) const { for (;;) { const BaseMsgEntry *mc(SelectMsg()); if (!mc) break; unique_ptr<Message> msg(mc->_create._do(true)); const FieldTable::Pair *fld; while((fld = SelectField(msg.get()))) EditMsg(tty, fld, msg.get()); _os << endl << endl << *static_cast<MessageBase *>(msg.get()) << endl; if (get_yn("Add to list? (y/n):", true)) lst.push_back(msg.release()); } return static_cast<int>(lst.size()); }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::CreateMsgs(tty_save_state& tty, MsgList& lst) const { for (;;) { const BaseMsgEntry *mc(SelectMsg()); if (mc) { Message *msg(mc->_create()); const FieldTable::Pair *fld; while((fld = SelectField(msg))) EditMsg(tty, fld, msg); _os << endl << endl << *static_cast<MessageBase *>(msg) << endl; if (get_yn("Add to list? (y/n):", true)) lst.push_back(msg); } else break; } return lst.size(); }
void LinkDoodService::onChatGetMessagesResult(bool code, int64 sessionId, MsgList msgList) { qDebug() << Q_FUNC_INFO << msgList.size(); emit getMessagesResult(code,QString::number(sessionId),msgList); }
CCrypto::CCrypto() : Encrypt_Detour( NULL ), Decrypt_Detour( NULL ) { CSimpleScan steamClientScan( "steamclient.dll" ); SymmetricEncryptWithIVFn pEncrypt = NULL; bool bEncrypt = steamClientScan.FindFunction( "\x53\x8B\xDC\x83\xEC\x08\x83\xE4\xF0\x83\xC4\x04\x55\x8B\x6B\x04\x89\x6C\x24\x04\x8B\xEC\x64\xA1\x00\x00\x00\x00", "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", (void **)&pEncrypt ); Encrypt_Orig = pEncrypt; g_pLogger->LogConsole( "CCrypto::SymmetricEncryptWithIV = 0x%x\n", Encrypt_Orig ); SymmetricDecryptRecoverIVFn pDecrypt = NULL; bool bDecrypt = steamClientScan.FindFunction( "\x55\x8B\xEC\x81\xEC\x04\x01\x00\x00\x83\x7D\x08\x00\x53", "xxxxxxxxxxxxxx", (void **)&pDecrypt ); Decrypt_Orig = pDecrypt; g_pLogger->LogConsole( "CCrypto::SymmetricDecryptRecoverIV = 0x%x\n", Decrypt_Orig ); char *pGetMessageList = NULL; bool bGetMessageList = steamClientScan.FindFunction( "\xA1\x00\x00\x00\x00\xA8\x01\x75\x00\x83\xC8\x01\xB9\x00\x00\x00\x00\x0056", "x????xxx?xxxx????x", (void **)&pGetMessageList ); if (bGetMessageList) { const uint32 uMessageListStartPtrOffset = 38; const uint32 uMessageListEndPtrOffset = uMessageListStartPtrOffset + 26; MsgInfo_t *pInfos = *(MsgInfo_t **)( pGetMessageList + uMessageListStartPtrOffset ); MsgInfo_t *pEndInfos = *(MsgInfo_t **)( pGetMessageList + uMessageListEndPtrOffset ); uint16 numMessages = ( ( int )pEndInfos - ( int )pInfos ) / sizeof( MsgInfo_t ); g_pLogger->LogConsole( "pGetMessageList = 0x%x\npInfos = 0x%x\nnumMessages = %d\n", pGetMessageList, pInfos, numMessages ); for ( uint16 x = 0 ; x < numMessages; x++ ) { eMsgList.insert( MsgPair( pInfos->eMsg, pInfos ) ); pInfos++; } if ( eMsgList.size() != 0 ) { // should only delete our existing files if we have something new to dump g_pLogger->DeleteFile( "emsg_list.txt", false ); g_pLogger->DeleteFile( "emsg_list_detailed.txt", false ); for ( MsgList::iterator iter = eMsgList.begin() ; iter != eMsgList.end() ; iter++ ) { MsgInfo_t *pInfo = iter->second; g_pLogger->LogFile( "emsg_list.txt", false, "\t%s = %d,\r\n", pInfo->pchMsgName, pInfo->eMsg ); g_pLogger->LogFile( "emsg_list_detailed.txt", false, "\t%s = %d, // flags: %d, server type: %d\r\n", pInfo->pchMsgName, pInfo->eMsg, pInfo->nFlags, pInfo->k_EServerTarget ); } g_pLogger->LogConsole( "Dumped emsg list! (%d messages)\n", eMsgList.size() ); } else { g_pLogger->LogConsole( "Unable to dump emsg list: No messages! (Offset changed?)\n" ); } } else { g_pLogger->LogConsole( "Unable to find GetMessageList.\n" ); } SymmetricEncryptWithIVFn encrypt = CCrypto::SymmetricEncryptWithIV; SymmetricDecryptRecoverIVFn decrypt = CCrypto::SymmetricDecryptRecoverIV; if ( bEncrypt ) { Encrypt_Detour = new CSimpleDetour((void **) &Encrypt_Orig, (void*) encrypt); Encrypt_Detour->Attach(); g_pLogger->LogConsole( "Detoured SymmetricEncryptWithIV!\n" ); } else { g_pLogger->LogConsole( "Unable to hook SymmetricEncryptWithIV: Func scan failed.\n" ); } if ( bDecrypt ) { Decrypt_Detour = new CSimpleDetour((void **) &Decrypt_Orig, (void*) decrypt); Decrypt_Detour->Attach(); g_pLogger->LogConsole( "Detoured SymmetricDecryptRecoverIV!\n" ); } else { g_pLogger->LogConsole( "Unable to hook SymmetricDecryptRecoverIV: Func scan failed.\n" ); } }
void CDoodChatManagerModel::addHistoryMsgToListView(MsgList msgList) { qDebug()<<Q_FUNC_INFO<<"msg size:"<<msgList.size(); int len = msgList.size(); bool isUpdate = false; if(msgList.size() <= 0){ return; } for(int i = 0; i<len;++i){ Msg msg = msgList.at(i); if(/*msg.msgtype.toInt() == MSG_TYPE_IMG || */msg.fromid =="0"||msg.fromid == ""){ continue; } if(msg.localid == "" ||msg.localid == "0"){ msg.localid = createLocalId(); } if(msg.msgtype.toInt() == MEDIA_MSG_REVOKE && msgIsExitById(msg.revokeMsgId)){ QStringList msgs; msgs.push_back(msg.revokeMsgId); emit deleteMessage(id(),msgs); removeItemByMsgId(msg.revokeMsgId); } if(!m_pChatMap.contains(msg.localid)&&!msgIsExitById(msg.msgid)) { QDateTime msgDate = QDateTime::fromString(msg.time, "yyyy-MM-dd hh:mm:ss"); bool bShow = isJudageShowTime(msgDate); isUpdate = true; qDebug()<< Q_FUNC_INFO<<"msgTime:"<<msg.time; CDoodChatItem *pChatItem = new CDoodChatItem(this); pChatItem->setLocalId(msg.localid); pChatItem->setMsgType(msg.msgtype); pChatItem->setActiveType(msg.activeType); pChatItem->setMsgId(msg.msgid); pChatItem->setTargetId(msg.targetid); pChatItem->setFromId(msg.fromid); pChatItem->setToId(msg.toid); pChatItem->setName(msg.name); pChatItem->setTime(msgDate); pChatItem->setShowTime(bShow); pChatItem->setLoading(false); pChatItem->setContactThumbAvatar(msg.thumb_avatar); pChatItem->setIsMyselft(mAccountUserId == msg.fromid); if(msg.msgtype.toInt() == MSG_TYPE_FILE){ pChatItem->setFileSize(msg.f_size.toLongLong()); pChatItem->setProgress(0); pChatItem->setThumbAvatar(msg.f_url); pChatItem->setTar_thumbAvatar(msg.encrypt_user); pChatItem->setTextMsg(msg.filename); pChatItem->setBody(msg.encrypt_key); pChatItem->setFilePath(""); pChatItem->mFileUrl = msg.f_url; } else if(msg.msgtype.toInt() == MSG_TYPE_IMG){ if(msg.body != ""&& fileExistAtLocal(msg.body)){ msg.body = "file://"+msg.body; }else{ msg.body = "qrc:/res/control/defaultimage.png"; } pChatItem->setBody(msg.body); pChatItem->setTar_thumbAvatar(msg.thumb_url); pChatItem->setTextMsg(msg.main_url); pChatItem->setBodyBig(msg.main_url); pChatItem->mImageMainUrl = msg.main_url; pChatItem->mImageThumbUrl = msg.thumb_url; pChatItem->setEncrypt_key(msg.encrypt_key); }else if(msg.msgtype.toInt() == MEDIA_MSG_REVOKE){ pChatItem->setMsgType(QString::number(MSG_TYPE_TIP)); if(msg.fromid == mAccountUserId){ pChatItem->setBody("您撤回了一条消息"); }else{ pChatItem->setBody(msg.body+"撤回了一条消息"); } } else{ pChatItem->setBody(msg.body); } //addItem(pChatItem); qint64 pos = indexOfNewItem(pChatItem->time()); if(pos>=0 &&pos<= m_pChatMap.size()){ insertItem(pos,pChatItem); } m_pChatMap[msg.localid] = pChatItem; updateItemNameAndAvatar(msg.localid,msg.fromid); pChatItem->mEnkey = msg.encrypt_key; pChatItem->mEnkeyUser = msg.encrypt_user; if(msg.msgtype.toInt() == MSG_TYPE_IMG){ if(msg.body == "qrc:/res/control/defaultimage.png"|| !fileExistAtLocal(msg.body)){ pChatItem->setLoading(true); emit downloadImage(id(),msg.localid,msg.thumb_url,msg.encrypt_key); } } } } if(isUpdate){ emit updateDataFinished(); } if(_list->count()>0){ QString msgid; msgid=qobject_cast<CDoodChatItem*>(_list->at(_list->count()-1))->msgId(); emit setMsgRead(msgid); } }