Exemplo n.º 1
0
AMChar	*	BuildSigXML(const AMChar *szSigXML, const AMChar *szSignature)
{
	AIM_SIGNATURE	sigStruct;
	AMChar *szRetXML = AMNULL, *szLeft = AMNULL;

	AMAssert(szSigXML);

	if(0 != SigXML2SigStruct(szSigXML, &sigStruct))
		return AMNULL;

	if(AMNULL == (szRetXML = BuildSigXMLFromStruct(&sigStruct, szSignature)))
		return AMNULL;

	AMStrcat(szRetXML, XML_SIG_TEMPHEAD + sizeof(HeadTag(XML_TAG_SIGOP)) + sizeof(HeadTag(XML_TAG_SIG)) + sizeof(TailTag(XML_TAG_SIG)) -1);
	AMStrcat(szRetXML, "0");
	AMStrcat(szRetXML, XML_SIG_TEMPTAIL);

	if(!szSignature || !*szSignature)
	{
		szLeft = AMStrstr(szRetXML, HeadTag(XML_TAG_EMP));
		AMAssert(szLeft);
		szLeft[sizeof(HeadTag(XML_TAG_EMP))-1]='1';
	}

	return szRetXML;
}
Exemplo n.º 2
0
static AMChar	*_getCheckImg(const AMChar *szSession, AMUInt32 *piLen)
{
	AMChar szUrl[sizeof(URL_CHECK_IMAGE) + sizeof(SESSION_PREFIX_AIM) + MAX_INT_NUMBER_LEN] = URL_CHECK_IMAGE;
	AMAssert(szSession && piLen);
	*piLen = 0;
	AMStrcat(szUrl + sizeof(URL_CHECK_IMAGE) - 1, szSession);
	return _UrlGetProc(szUrl, 2000, piLen);
}
Exemplo n.º 3
0
AMChar	*	BuildSigXMLFromStruct(AIM_SIGNATURE *pSigStruct, const AMChar *szSig)//只是把5个sig造好,没有追加后面的loop/st/ci等设置
{
	AMChar	*	szResultXML = AMNULL;
	AMInt32		iLen = 0, iPos = 0, i=0;
	AMAssert(pSigStruct);
	iLen = sizeof(XML_SIG_TEMPHEAD) + sizeof(XML_SIG_TEMPTAIL) + 3*MAX_INT_NUMBER_LEN;

	iLen += szSig?AMStrlen(szSig):0 + 11;

	for(i=0; i< MAX_SIG_COUNT-1; i++)
		iLen += pSigStruct->szSignature[i]?AMStrlen(pSigStruct->szSignature[i]):0 + 11;//11 for "<Sig></Sig>"

	szResultXML = (AMChar*)AMMalloc(iLen);
	if(!szResultXML)
		return AMNULL;

	AMMemset(szResultXML, 0, iLen);

	AMMemcpy(szResultXML, HeadTag(XML_TAG_SIGOP), sizeof(HeadTag(XML_TAG_SIGOP))-1);

	AMStrcat(szResultXML, HeadTag(XML_TAG_SIG));
	if(szSig)
		AMStrcat(szResultXML, szSig);
	AMStrcat(szResultXML, TailTag(XML_TAG_SIG));
	
	for(i=0; i< MAX_SIG_COUNT-1; i++)
	{
		AMStrcat(szResultXML, HeadTag(XML_TAG_SIG));
		AMStrcat(szResultXML, pSigStruct->szSignature[i]);
		AMStrcat(szResultXML, TailTag(XML_TAG_SIG));
	}

	return szResultXML;
}
Exemplo n.º 4
0
AIM_RESULT	OnRspGetProfile(AMVoid *pvArg, AIM_RSP_GET_PROFILE *pRspGetProfile)
{
    IAIM *pIM = (IAIM*)(((AMPVoid*)pvArg)[1]);
    IAIMessage	*pMsg = 0;
    AMInt32 iContentLen = 0, i = 0, iPos = 0, iLen = 0;;
    pMsg = IAIMessage_Create();
    pMsg->bUnread = AMTRUE;
    pMsg->eType = (AIM_MSG_TYPE)GET_PEER_UDB_PROFILE;
    IAIMessage_SetCntID(pMsg, pRspGetProfile->szContactId, AMStrlen(pRspGetProfile->szContactId));

    iContentLen = pRspGetProfile->iTotalLen + 4 + AMStrlen(pRspGetProfile->szContactId) + sizeof(UID_KEYWROD_ID);
    iContentLen +=  pRspGetProfile->iCount*2;

    pMsg->szContent = (AMChar *)AMMalloc(iContentLen);
    if(AMNULL == pMsg->szContent)
    {
        IAIMessage_Destroy(pMsg);
        return eAIM_RESULT_NOT_READY;
    }
    AMMemset(pMsg->szContent, 0, iContentLen);

    for(i=0; i<pRspGetProfile->iCount; i++)
    {
        if(AMNULL != pRspGetProfile->pszValues[i])
        {
            iLen = AMStrlen(pRspGetProfile->pszKeys[i]);
            AMMemcpy(pMsg->szContent+iPos, pRspGetProfile->pszKeys[i], iLen);
            iPos += iLen;
            pMsg->szContent[iPos++] = '\1';
            iLen = AMStrlen(pRspGetProfile->pszValues[i]);
            AMMemcpy(pMsg->szContent+iPos, pRspGetProfile->pszValues[i], iLen);
            iPos += iLen;
            pMsg->szContent[iPos++] = '\1';
        }
    }

    AMMemcpy(pMsg->szContent+iPos, UID_KEYWROD_ID, sizeof(UID_KEYWROD_ID)-1);//加上"uid\1'contactId'"
    iPos += sizeof(UID_KEYWROD_ID)-1;
    pMsg->szContent[iPos++] = '\1';

    AMStrcat(pMsg->szContent+iPos, pRspGetProfile->szContactId);//不需要尾巴了

    DPRINT("IASessionModel_OnPeerVerifyConfig.................%s\n", pMsg->szContent);

    Adapter_OnIncomingSysMsg(pIM->pSesModel, pMsg, pvArg);

    IAIMessage_Destroy(pMsg);

    return eAIM_RESULT_OK;
}