示例#1
0
//-------------------------------------------------------------------------------------------------
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();
}
示例#2
0
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);
    }
}
示例#3
0
文件: consolemenu.cpp 项目: fix8/fix8
//-------------------------------------------------------------------------------------------------
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;
}
示例#4
0
文件: consolemenu.cpp 项目: fix8/fix8
//-------------------------------------------------------------------------------------------------
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());
}
示例#5
0
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;
}
示例#6
0
文件: consolemenu.cpp 项目: fix8/fix8
//-------------------------------------------------------------------------------------------------
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());
}
示例#7
0
//-------------------------------------------------------------------------------------------------
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();
}
示例#8
0
void LinkDoodService::onChatGetMessagesResult(bool code, int64 sessionId, MsgList msgList)
{
    qDebug() << Q_FUNC_INFO << msgList.size();
    emit getMessagesResult(code,QString::number(sessionId),msgList);
}
示例#9
0
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" );
	}
}
示例#10
0
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);
    }
}