Example #1
0
AMVoid			IAccount_SetNameType(AIMAccount *pAcnt, const AMChar *szName, AMUInt32 uiNameLen, AIM_ACCOUNT_TYPE eType)
{
	AMAssert(0 != pAcnt);
	AMAssert(0 != szName  && eType>=0 && eType <= 8);

	if(pAcnt->szName)
	{
		AMFree(pAcnt->szName);
		pAcnt->szName = 0;
	}
	pAcnt->szName = AMMalloc(uiNameLen + 1);
	AMAssert(0 != pAcnt->szName);
	AMMemset(pAcnt->szName, 0, uiNameLen + 1);
	AMMemcpy(pAcnt->szName, szName, uiNameLen);
	
	pAcnt->eType = eType;

	if(pAcnt->szID)
	{
		AMFree(pAcnt->szID);
		pAcnt->szID = 0;
	}
	pAcnt->szID = AMMalloc(uiNameLen + ID_HEAD_LEN + 1);
	AMAssert(0 != pAcnt->szID);
	AMMemset(pAcnt->szID, 0, uiNameLen + ID_HEAD_LEN + 1);
	AMStrcpy(pAcnt->szID, szID_Head[eType]);
	AMMemcpy(pAcnt->szID + ID_HEAD_LEN, szName, uiNameLen);
}
Example #2
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;
}
Example #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;
}
Example #4
0
AMVoid		IAGroup_SetPinyin(IAGroup *pGrp, AMChar *szPinyin, AMUInt32 uiLen)
{
	AMAssert(0 != pGrp && 0 != szPinyin && 0 < uiLen);
	if(pGrp->szPinyin)
	{
		AMFree(pGrp->szPinyin);
		pGrp->szPinyin = 0;
	}
	pGrp->szPinyin = (AMChar *)AMMalloc(uiLen + 1);
	AMAssert(0 != pGrp->szPinyin);
	AMMemcpy(pGrp->szPinyin, szPinyin, uiLen);
	pGrp->szPinyin[uiLen] = 0;
}
Example #5
0
AMVoid		IAGroup_SetName(IAGroup *pGrp, AMChar *szName, AMUInt32 uiLen)
{
	AMAssert(0 != pGrp && 0 != szName && 0 < uiLen);
	if(pGrp->szName)
	{
		AMFree(pGrp->szName);
		pGrp->szName = 0;
	}
	pGrp->szName = (AMChar *)AMMalloc(uiLen + 1);
	AMAssert(0 != pGrp->szName);
	AMMemcpy(pGrp->szName, szName, uiLen);
	pGrp->szName[uiLen] = 0;
}
Example #6
0
AMVoid			IAccount_SetBindID(AIMAccount *pAcnt, const AMChar *szBindID, AMUInt32 uiIdLen)
{
	AMAssert(0 != pAcnt && 0 != szBindID);
	if(pAcnt->szBindID)
	{
		AMFree(pAcnt->szBindID);
		pAcnt->szBindID = 0;
	}
	pAcnt->szBindID = (AMChar *)AMMalloc(uiIdLen+1);
	AMAssert(0 != pAcnt->szBindID);
	AMMemcpy(pAcnt->szBindID, szBindID, uiIdLen);
	pAcnt->szBindID[uiIdLen] = 0;
}
Example #7
0
AMVoid			IAccount_SetPwd(AIMAccount *pAcnt, const AMChar *szPwd, AMUInt32 uiPwdLen)
{
	AMAssert(0 != pAcnt && 0 != szPwd);
	if(pAcnt->szPwd)
	{
		AMFree(pAcnt->szPwd);
		pAcnt->szPwd = 0;
	}
	pAcnt->szPwd = (AMChar *)AMMalloc(uiPwdLen+1);
	AMAssert(0 != pAcnt->szPwd);
	AMMemcpy(pAcnt->szPwd, szPwd, uiPwdLen);
	pAcnt->szPwd[uiPwdLen] = 0;
}
Example #8
0
AMVoid		IAIMessage_SetContent(IAIMessage *pMsg, const AMChar *szContent, AMUInt32 iLen)
{
	AMAssert(0 != pMsg);
	if(pMsg->szContent)
	{
		AMFree(pMsg->szContent);
		pMsg->szContent = 0;
	}

	pMsg->szContent = (AMChar *)AMMalloc(iLen + 1);
	AMAssert(0 != pMsg->szContent);
	AMMemcpy(pMsg->szContent, szContent, iLen);
	pMsg->szContent[iLen] = 0;
}
Example #9
0
AMVoid		IAIMessage_SetCntID(IAIMessage *pMsg, const AMChar * szCntID, AMUInt32	uiIDLen)
{
	AMAssert(0 != pMsg && 0 != szCntID);
	if(pMsg->szContactID)
	{
		AMFree(pMsg->szContactID);
		pMsg->szContactID = 0;
	}

	pMsg->szContactID = (AMChar *)AMMalloc(uiIDLen + 1);
	AMAssert(0 != pMsg->szContactID);
	AMMemcpy(pMsg->szContactID, szCntID, uiIDLen);
	pMsg->szContactID[uiIDLen] = 0;
}
Example #10
0
AMVoid			IAccount_SetWebMD5(AIMAccount *pAcnt, const AMChar *szToken, AMUInt32 uiTokenLen)
{
	AMAssert(0 != pAcnt && 0 != szToken);
	if(pAcnt->szWebMD5)
	{
		AMFree(pAcnt->szWebMD5);
		pAcnt->szWebMD5 = 0;
		pAcnt->uiWebMD5Len = 0;
	}
	pAcnt->szWebMD5 = (AMChar *)AMMalloc(uiTokenLen+1);
	AMAssert(0 != pAcnt->szWebMD5);
	AMMemcpy(pAcnt->szWebMD5, szToken, uiTokenLen);
	pAcnt->szWebMD5[uiTokenLen] = 0;
	pAcnt->uiWebMD5Len = uiTokenLen;
}
Example #11
0
AMVoid			IAccount_SetPhoneNum(AIMAccount *pAcnt, const AMChar *szPhone)//, AMUInt32 uiPhoneLen)
{
	AMUInt32 uiPhoneLen = 0;
	AMAssert(0 != pAcnt && 0 != szPhone);
	if(pAcnt->szPhoneNum)
	{
		AMFree(pAcnt->szPhoneNum);
		pAcnt->szPhoneNum = 0;
	}
	uiPhoneLen = AMStrlen(szPhone);
	pAcnt->szPhoneNum = (AMChar *)AMMalloc(uiPhoneLen+1);
	AMAssert(0 != pAcnt->szPhoneNum);
	AMMemcpy(pAcnt->szPhoneNum, szPhone, uiPhoneLen);
	pAcnt->szPhoneNum[uiPhoneLen] = 0;
}
Example #12
0
AMVoid			IAccount_SetSigXML(AIMAccount *pAcnt, const AMChar *szXML, AMUInt32 uiLen)
{
	AMAssert(0 != pAcnt);
	if(pAcnt->szSigXML)
	{
		AMFree(pAcnt->szSigXML);
		pAcnt->szSigXML = 0;
	}

	if(0 == uiLen)
		return ;

	pAcnt->szSigXML = (AMChar *)AMMalloc(uiLen+1);
	AMAssert(0 != pAcnt->szSigXML);
	AMMemcpy(pAcnt->szSigXML, szXML, uiLen);
	pAcnt->szSigXML[uiLen] = 0;
}
Example #13
0
AMVoid			IAccount_SetSignature(AIMAccount *pAcnt, const AMChar *szSignature, AMUInt32 uiLen)
{
	AMAssert(0 != pAcnt);
	if(pAcnt->szSignature)
	{
		AMFree(pAcnt->szSignature);
		pAcnt->szSignature = 0;
	}

	if(0 == szSignature)
		return ;

	pAcnt->szSignature = (AMChar *)AMMalloc(uiLen+1);
	AMAssert(0 != pAcnt->szSignature);
	AMMemcpy(pAcnt->szSignature, szSignature, uiLen);
	pAcnt->szSignature[uiLen] = 0;
}
Example #14
0
AMInt32		SigXML2SigStruct(const AMChar *szSigXML, AMHandle hSig)
{
	int i = 0;
	AMChar *szBegin = AMNULL, *szEnd = AMNULL;
	AIM_SIGNATURE *pSig = (AIM_SIGNATURE*)hSig;
	AMAssert(0 != szSigXML && AMNULL != pSig);

	AMMemset(pSig, 0, sizeof(AIM_SIGNATURE));

	szBegin = AMStrstr(szSigXML, HeadTag(XML_TAG_SIG));
	i=0;
	while(AMNULL != szBegin && i<MAX_SIG_COUNT)
	{
		szBegin += sizeof(HeadTag(XML_TAG_SIG)) -1;
		szEnd = AMStrstr(szBegin, TailTag(XML_TAG_SIG));

		if(AMNULL != szEnd)	
		{
			if(szEnd-szBegin < MAX_SIG_LEN)
			{
				AMMemcpy(pSig->szSignature[i], szBegin, szEnd-szBegin);
			}
			szBegin = AMStrstr(szEnd, HeadTag(XML_TAG_SIG));		
		}
		else
			break;

		i++;
	}

	if(AMNULL == szEnd)
		szEnd = szSigXML;

	szBegin = AMStrstr(szEnd, HeadTag(XML_TAG_LOOP));
	if(AMNULL != szBegin)
		pSig->iLoop = AMAtoi(szBegin + sizeof(HeadTag(XML_TAG_LOOP))-1);
	else
		szBegin = szSigXML;

	szBegin = AMStrstr(szBegin, HeadTag(XML_TAG_T));
	if(AMNULL != szBegin)
		pSig->iT = AMAtoi(szBegin + sizeof(HeadTag(XML_TAG_T))-1);
	else
		szBegin = szSigXML;
	
	szBegin = AMStrstr(szBegin, HeadTag(XML_TAG_CI));
	if(AMNULL != szBegin)
		pSig->iCI = AMAtoi(szBegin + sizeof(HeadTag(XML_TAG_CI))-1);
	else
		szBegin = szSigXML;

	szBegin = AMStrstr(szBegin, HeadTag(XML_TAG_ST));
	if(AMNULL != szBegin)
		pSig->iST = AMAtoi(szBegin + sizeof(HeadTag(XML_TAG_ST))-1);
	else
		szBegin = szSigXML;

	szBegin = AMStrstr(szBegin, HeadTag(XML_TAG_RET));
	if(AMNULL != szBegin)
		pSig->iRet = AMAtoi(szBegin + sizeof(HeadTag(XML_TAG_RET))-1);
	else
		szBegin = szSigXML;

	szBegin = AMStrstr(szBegin, HeadTag(XML_TAG_FLAG));
	if(AMNULL != szBegin)
		pSig->iFlag	 = AMAtoi(szBegin + sizeof(HeadTag(XML_TAG_FLAG))-1);
	else
		szBegin = szSigXML;

	szBegin = AMStrstr(szBegin, HeadTag(XML_TAG_EMP));
	if(AMNULL != szBegin)
		pSig->iEmp = AMAtoi(szBegin + sizeof(HeadTag(XML_TAG_EMP))-1);
	
	return 0;
}