亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cmppapi.cpp

?? VC6.0寫的短信SP網關源代碼, CpTest為測試的代碼
?? CPP
字號:
#include "stdafx.h"
#include "CmppLib.h"
#include "TimerAdmin.h"
#include "SmGateway.h"

extern void SubmitPacketToSmsc(int , TSmgSubmitReq);
extern int SendMsgToUnicomMoClient(int nHandle, char *sBuf, int nLen);
extern void SendAlarmMsgToSupporter(char *sDstAddr, char *sServiceId, char *sContent, int nMsgLen);
extern void SendMonitorMsg(int nMoniType, char *sMonMsg);

extern void SmgTrace(int, char *, ...);
extern int g_nInterfaceType;
extern char g_sSpNumber[];
extern CTimerQueue g_rTimerQueue;
extern char g_sPrefixNumber[];
extern unsigned char g_nSmgNodeId;
extern UINT g_nMOCounts;
extern char g_sChatNumber[];
extern int g_nInerChatUserBeginId;
extern int g_nInerChatUserEndId;

static void ProcessReportReq(TCmppPacket rPacket)
{
	UINT nSeqId=0;
	int nStat=0;
	char sSrcTerminalId[32] = {0x00};
	char sTmp[1024] = {0x00};
	char sMsgId[24] = {0x00};
	TCmppReportMsg rCmppReportMsg;

	memset(&rCmppReportMsg, 0x00, sizeof(TCmppReportMsg));

	CMPP_PraseReport(rPacket.rMsgBody.rDeliverReq.sMsgContent, &rCmppReportMsg);

	strcpy(sMsgId, rCmppReportMsg.sMsgId);
	strcpy(sSrcTerminalId, rCmppReportMsg.sDstTerminalId);
	nStat = rCmppReportMsg.nState;
	nSeqId = rCmppReportMsg.nSeqId;

	SmgTrace(0, (char *)"Receive ReportReq from SMSC,UserAddr=%s,State=%d,SeqId=%d",
		sSrcTerminalId, nStat, nSeqId);

	sprintf(sTmp, "RP:%d%s%d%s%s%s%d%s", 
		nSeqId, SPACE_MARK, nStat, SPACE_MARK,sSrcTerminalId, SPACE_MARK,
		time(NULL), SPACE_MARK);
	strcat(sTmp, sMsgId);
	WriteSmsCDR(sTmp);
//	SendMonitorMsg(MONI_CDR_INFO, sTmp);
	
}
static void ProcessSubmitRespone(TCmppPacket rPacket) 
{
    int nIndex;
    int nRet;
	UINT nSeqId;
    unsigned int nResult;
    TSmgSubmitRep rSubmitRep;
	TMsgHead rMsgHead;
	TSmgPacket rSmgPacket;
    char sMsgId[65] = {0x00};
	char sTmp[2048] = {0x00};

	memset(&rMsgHead, 0x00, sizeof(TMsgHead));
	memset(&rSmgPacket, 0x00, sizeof(TSmgPacket));

    memset(&rSubmitRep, 0x00, sizeof(TSmgSubmitRep));
 	nSeqId = rPacket.rMsgHead.nSeqId;
	nResult = rPacket.rMsgBody.rSubmitRep.nResult;


    nIndex = FindSmscChannelBySeqId(nSeqId);
    if(0 > nIndex)
    {
		SmgTrace(0, (char *)"Error: received CMPP_SUBMIT_REP event, SeqId=0x%08x, Result=%d", nSeqId, nResult);
        SmgInitSmscChannel(nIndex);
		return;
    }

    if(g_rSmgChan[nIndex].ucStat == IDLE)
    {
		SmgTrace(0, (char *)"Error: Id-%03d is in idle stat", nIndex);
		return;
    }


    // construct the TWWSubmitRep and sent it to client
    rMsgHead.nCmdId = SMG_SubmitRep;
    rMsgHead.nChannelId = nIndex;
	rMsgHead.nLinkId = g_rSmgChan[nIndex].nHandle;
    rSubmitRep.ucActionType = g_rSmgChan[nIndex].ucActionType;
    rSubmitRep.nClientSeqId = g_rSmgChan[nIndex].nClientSeqId;
    rSubmitRep.ucResult = nResult;
//	memcpy(rSubmitRep.sMsgId, rPacket.rMsgBody.rSubmitRep.sMsgId, MAX_MSG_ID_LEN);
	CMPP_PraseMsgId((char *)rPacket.rMsgBody.rSubmitRep.sMsgId, MAX_MSG_ID_LEN, rSubmitRep.sMsgId);

    SmgTrace(0, (char *)"ID-%03d: Receive CMPP_SUBMIT_REP from SMSC,SeqId=0x%08x, MsgId=%s, Result=%d", 
		nIndex, nSeqId, rSubmitRep.sMsgId, rSubmitRep.ucResult);
    sprintf(sTmp, "%s%s%d%s", g_rSmgChan[nIndex].sMTCDR, SPACE_MARK, 
		rSubmitRep.ucResult, SPACE_MARK);
	strcat(sTmp, rSubmitRep.sMsgId);
    WriteSmsCDR(sTmp);
	SendMonitorMsg(MONI_CDR_INFO, sTmp);
  
    nRet = SMG_SendSubmitRep(rMsgHead, rSubmitRep);
    if(0 < nRet)
		SmgTrace(0, (char *)"Error: failed to send SMG_SubmitRep to client: <%d>.\n", nRet);
    else
		SmgTrace(0, (char *)"ID-%03d: Send SMG_SubmitRep to %s,ClientSeqId=%d\n", nIndex, g_rSmgChan[nIndex].sSmscClientIp,rSubmitRep.nClientSeqId );
   
	SmgInitSmscChannel(nIndex);
}

static void SubmitDeliverReqToClient(int nIndex, TSmgDeliverReq *prDeliverReq)
{
    int nHandle;
    int nRet;
	TMsgHead rMsgHead;
	char sClientIp[18] = {0x00};
	char sTmp[2560] = {0x00};
	char sMsgContent[256] = {0x00};
	char sErrorCDR[512] = {0x00};
	
	memcpy(prDeliverReq->sDstAddr, g_sPrefixNumber, strlen(g_sPrefixNumber));  // 增加測試接入號的處理

    SmgTrace(0, (char *)"    SrcAddr=%s, DstAddr=%s, ServiceId=%s",
		prDeliverReq->sSrcAddr, prDeliverReq->sDstAddr, prDeliverReq->sServiceId);
    SmgTrace(0, (char *)"    MsgLen=%d, MsgFmt=%d, Msg=\"%s\"", 
		prDeliverReq->ucMsgLen, prDeliverReq->ucMsgFmt, prDeliverReq->usMsgContent);

    sprintf(sTmp, "MO:%d%s%s%s%s%s%d%s%d%s%d%s%s", g_rSmgChan[nIndex].nSeqId, SPACE_MARK, 
		prDeliverReq->sDstAddr, SPACE_MARK, prDeliverReq->sSrcAddr, SPACE_MARK,
		prDeliverReq->ucMsgFmt, SPACE_MARK, time(NULL), SPACE_MARK, 
		prDeliverReq->ucMsgLen, SPACE_MARK, prDeliverReq->usMsgContent);
    WriteSmsCDR(sTmp);
//	SendMonitorMsg(MONI_CDR_INFO, sTmp);

	// 處理內部聊天業務
	if(strstr(prDeliverReq->sDstAddr, g_sChatNumber) != NULL && g_sChatNumber[0] != 0x00)
	{
		char sChatUserId[16] = {0x00};
		strncpy(sChatUserId, prDeliverReq->sDstAddr+strlen(g_sChatNumber), 5); // 獲取5位用戶ID
		if(atoi(sChatUserId) >= g_nInerChatUserBeginId && atoi(sChatUserId) <= g_nInerChatUserEndId)
		{
			nHandle = FindClientByServiceNumber(g_sSpNumber, sClientIp, prDeliverReq->sSrcAddr);
		    rMsgHead.nLinkId = g_rSmgChan[nIndex].nHandle = nHandle;
			rMsgHead.nChannelId = nIndex;
			rMsgHead.nCmdId = SMG_DeliverReq;
			strcpy(g_rSmgChan[nIndex].sSmscClientIp, sClientIp);
	
		    nRet = SMG_SendDeliverReq(rMsgHead, *prDeliverReq);
			return;
		}
	}

	
/*	if(strcmp(prDeliverReq->sDstAddr, g_sPrefixNumber) == 0
		&& strstr((char *)prDeliverReq->usMsgContent, "0000") != NULL)
	{
		strcat(prDeliverReq->sDstAddr, "99");
	}
	else */
	if(strcmp(prDeliverReq->sDstAddr, g_sPrefixNumber) == 0
		&& strcmp((char *)prDeliverReq->usMsgContent, g_sPrefixNumber) == 0)
	{
		sprintf(sMsgContent, "%s", "4496手機社區客服電話0791-8194869,發送您問題到0449600獲取幫助,退訂服務回復0000");
		SendAlarmMsgToSupporter(prDeliverReq->sSrcAddr, "-HTERR", sMsgContent, strlen(sMsgContent));
		return;
	}
	else if(strcmp(prDeliverReq->sDstAddr, g_sPrefixNumber) == 0
		&& strlen((char *)prDeliverReq->usMsgContent) <= 8)
	{
		char *p, *q;
		q = sMsgContent;
		p = (char *)prDeliverReq->usMsgContent;
		while(*p != (char)NULL)
		{
			*q = toupper(*p);
			p++;
			q++;
		}

		if(strcmp(sMsgContent, "CMCCTEST") == 0)
		{
			time_t nTime;
			struct tm rCurTm;
			time(&nTime);
			memcpy(&rCurTm, localtime(&nTime), sizeof(rCurTm));
			sprintf(sMsgContent, "江西先鋒科技, %s, %s, %02d月%02d日%02d:%02d",
				g_sPrefixNumber, g_sSpId, rCurTm.tm_mon+1, rCurTm.tm_mday, rCurTm.tm_hour, rCurTm.tm_min);
			SendAlarmMsgToSupporter(prDeliverReq->sSrcAddr, "CMCCTEST", sMsgContent, strlen(sMsgContent));
			return;
		}
		//取消所有訂閱的業務。
		else if(strstr(sMsgContent, "0000") != NULL)
		{
			nHandle = FindClientByServiceNumber("044968", sClientIp, prDeliverReq->sSrcAddr);
			if(nHandle < 0)
			{
				SmgTrace(0, (char *)"Error: fail to find the client when DstAddr=%s", prDeliverReq->sDstAddr);
				sprintf(sMsgContent, "您無業務可注銷%s", "!");
				SendAlarmMsgToSupporter(prDeliverReq->sSrcAddr, "-HTERR", sMsgContent, strlen(sMsgContent));
				return ;
			}

			rMsgHead.nCmdId = SMG_OpationUnReq;
		    rMsgHead.nLinkId = g_rSmgChan[nIndex].nHandle = nHandle;
			rMsgHead.nChannelId = nIndex;
			strcpy(g_rSmgChan[nIndex].sSmscClientIp, sClientIp);

			TSmgOpationUnRegisterReq rUnRegisterReq;
			strcpy(rUnRegisterReq.sServiceNumber, "044968");
			strcpy(rUnRegisterReq.sSrcAddr, prDeliverReq->sSrcAddr);

			nRet = SMG_SendOpationUnRegisterReq(rMsgHead, rUnRegisterReq);
			return ;
		}
		/*//else if(strncmp(sMsgContent, "QX", 2) == 0 || strstr(sMsgContent, "0000") != NULL || strncmp(sMsgContent, "114", 3) == 0)
		{
			strcat(prDeliverReq->sDstAddr, "00");
		}*/
	}
	
	//訂閱服務
	if(strstr((char *)prDeliverReq->usMsgContent, "1111") != NULL)
	{
		nHandle = FindClientByServiceNumber(prDeliverReq->sDstAddr, sClientIp, prDeliverReq->sSrcAddr);
		if(nHandle < 0)
		{
			SmgTrace(0, (char *)"Error: fail to find the client when DstAddr=%s", prDeliverReq->sDstAddr);
			sprintf(sMsgContent, "您無業務可訂閱%s", "!");
			SendAlarmMsgToSupporter(prDeliverReq->sSrcAddr, "-HTERR", sMsgContent, strlen(sMsgContent));
			return ;
		}
		
		rMsgHead.nCmdId = SMG_OpationReq;
		rMsgHead.nLinkId = g_rSmgChan[nIndex].nHandle = nHandle;
		rMsgHead.nChannelId = nIndex;
		strcpy(g_rSmgChan[nIndex].sSmscClientIp, sClientIp);
		
		TSmgOpationRegisterReq rRegisterReq;
		strcpy(rRegisterReq.sServiceNumber, prDeliverReq->sDstAddr);
		strcpy(rRegisterReq.sSrcAddr, prDeliverReq->sSrcAddr);
		
		nRet = SMG_SendOpationRegisterReq(rMsgHead, rRegisterReq);
		return ;	
	}

    nHandle = FindClientByServiceNumber(prDeliverReq->sDstAddr, sClientIp, prDeliverReq->sSrcAddr);
    if(nHandle == -3)
    {
		// 查找客服業務程序
		nHandle = FindClientByServiceNumber(g_sSpNumber, sClientIp, prDeliverReq->sSrcAddr);
		if(nHandle == -3)
		{
			SmgTrace(0, (char *)"Error: fail to find the client when DstAddr=%s", prDeliverReq->sDstAddr);
			sprintf(sMsgContent, 
				"用戶您好,您發送號碼%s可能為錯誤號碼或未開通,撥打0791-8194869電話咨詢。", 
				prDeliverReq->sDstAddr, g_sPrefixNumber);

			SendAlarmMsgToSupporter(prDeliverReq->sSrcAddr, "-HTERR", sMsgContent, strlen(sMsgContent));
			sprintf(sErrorCDR, "%d%s%s%s%s%s%s", time(NULL),SPACE_MARK,
				prDeliverReq->sDstAddr, SPACE_MARK, 
				prDeliverReq->sSrcAddr, SPACE_MARK,
				sMsgContent);
//			SendMonitorMsg(MONI_CDR_ERR_INFO, sErrorCDR);
			return;
		}
		SmgInitSmscChannel(nIndex);
    }

    rMsgHead.nLinkId = g_rSmgChan[nIndex].nHandle = nHandle;
	rMsgHead.nChannelId = nIndex;
	rMsgHead.nCmdId = SMG_DeliverReq;
	strcpy(g_rSmgChan[nIndex].sSmscClientIp, sClientIp);
	
    nRet = SMG_SendDeliverReq(rMsgHead, *prDeliverReq);
    if(0 < nRet)
    {
		SmgTrace(0, (char *)"Error: failed to send SMG_DeliverReq to client: <%d>.",	nRet);
		SmgInitSmscChannel(nIndex);
    }
    else
    {
		SmgTrace(0, (char *)"ID-%03d: Send SMG_DeliverReq to %s", nIndex, sClientIp);
	}
}


static void ProcessDeliverRequest(TCmppPacket rPacket)
{
    int nIndex=0, nRet=0, nSeqId=0;
	TSmgDeliverReq rDeliverReq;

	memset(&rDeliverReq, 0x00, sizeof(TSmgDeliverReq));

	if(rPacket.rMsgBody.rDeliverReq.nRegistered == 1) // this message is a report
	{
		ProcessReportReq(rPacket);
		return;
	}

	++g_nMOCounts;

    if(nRet != 0)
    {
		SmgTrace(0, "Error: fail to send CMPP_DELIVER_REP to SMSC!, Ret=%d", nRet);
        return ;
    }
	
    nIndex = 1; // FindIdleSmscChannel();
 	if(0 > nIndex || MAX_CHANNEL_NUM <= nIndex)
    {
		SmgTrace(0, (char *)"Error: received CMPP_DELIVER event from SMSC, but no resource");
		return;
	}
	nSeqId = rPacket.rMsgHead.nSeqId;
	SmgTrace(0, (char *)"ID-%03d: Received CMPP_DELIVER event from SMSC, SeqId=0x%08x",nIndex, nSeqId);
	SmgTrace(0, (char *)"ID-%03d: Send CMPP_DELIVER_REP event to SMSC", nIndex);

	strcpy(rDeliverReq.sDstAddr, rPacket.rMsgBody.rDeliverReq.sDstTerminalId);
	if(rPacket.rMsgBody.rDeliverReq.sSrcTerminalId[0] == '8' &&
		rPacket.rMsgBody.rDeliverReq.sSrcTerminalId[1] == '6')
		strcpy(rDeliverReq.sSrcAddr,  rPacket.rMsgBody.rDeliverReq.sSrcTerminalId+2);
	else
		strcpy(rDeliverReq.sSrcAddr,  rPacket.rMsgBody.rDeliverReq.sSrcTerminalId);

	if(rPacket.rMsgBody.rDeliverReq.nMsgFmt == UCS2_CODE)
	{
		int nMsgLen=0;
		char sMsg[256] = {0x00};
		ConvertUnicodeToAsci(rPacket.rMsgBody.rDeliverReq.sMsgContent,
			rPacket.rMsgBody.rDeliverReq.nMsgLen, sMsg, &nMsgLen);
		if(nMsgLen < 140)
			strcpy((char *)rDeliverReq.usMsgContent, sMsg);
		else
			strncpy((char *)rDeliverReq.usMsgContent, sMsg, 140);
	}
	else
	{
		memcpy(rDeliverReq.usMsgContent,
			rPacket.rMsgBody.rDeliverReq.sMsgContent,
			rPacket.rMsgBody.rDeliverReq.nMsgLen);
	}
	
	rDeliverReq.ucMsgFmt =  rPacket.rMsgBody.rDeliverReq.nMsgFmt;
	rDeliverReq.ucMsgLen =  rPacket.rMsgBody.rDeliverReq.nMsgLen;
	rDeliverReq.ucRegister = 0;
	rDeliverReq.ucSmgNodeId = g_nSmgNodeId;

	memcpy(rDeliverReq.sMsgId, rPacket.rMsgBody.rDeliverReq.sMsgId, MAX_MSG_ID_LEN);
	memcpy(rDeliverReq.sLinkId, rPacket.rMsgBody.rDeliverReq.sLinkID, MAX_LINK_ID_LEN);

    g_rSmgChan[nIndex].nSeqId = nSeqId;
        if(strcmp(rDeliverReq.sDstAddr, g_sPrefixNumber) == 0
                && strcmp((char *)rDeliverReq.usMsgContent, "04496") == 0)
	  g_rSmgChan[nIndex].ucActionType = MT_ACTION;
        else
	  g_rSmgChan[nIndex].ucActionType = MO_ACTION;

    SubmitDeliverReqToClient(nIndex, &rDeliverReq);
}


void SmgProcessCMPPPacket(TCmppPacket rPacket)
{
	switch(rPacket.rMsgHead.nCommandId)
	{
	case CMPP_CONNECT_RESP: //	0x80000001		// 請求連接應答
		SmgTrace(2, "ID-%d: Status=0x%x, Version=0x%x, Auth=%s", 
			rPacket.rMsgHead.nSeqId, 
			rPacket.rMsgBody.rConnectRep.nStatus,
			rPacket.rMsgBody.rConnectRep.nVersion,
			rPacket.rMsgBody.rConnectRep.sAuthenticatorSource);
		break;
	case CMPP_SUBMIT_RESP: //	0x80000004		// 提交短信應答
		ProcessSubmitRespone(rPacket);
		break;
	case CMPP_DELIVER: //		0x00000005		// 短信下發
		ProcessDeliverRequest(rPacket);
		break;
	case CMPP_QUERY_RESP: //	0x80000006		// 發送短信狀態查詢應答
		break;
	case CMPP_CANCEL_RESP: //	0x80000007		// 刪除短信應答
		break;
	case CMPP_TERMINATE: //		0x00000002		// 終止連接
		break;
	case CMPP_TERMINATE_RESP:	// 0x80000002		// 終止連接應答
		break;
	case CMPP_ACTIVE_TEST: //	0x00000008		// 激活測試
		break;
	case CMPP_ACTIVE_TEST_RESP: //	0x80000008	// 激活測試應答
		break;
	default:
		break;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产乱码久久久久久1区2区 | 99国产精品久| 99精品视频免费在线观看| 欧美色区777第一页| 精品剧情在线观看| 亚洲三级在线免费| 美腿丝袜亚洲一区| 99综合电影在线视频| 欧美日韩大陆一区二区| 久久免费电影网| 一区二区在线观看免费视频播放| 午夜婷婷国产麻豆精品| 精品亚洲aⅴ乱码一区二区三区| 成人a免费在线看| 欧美群妇大交群中文字幕| 久久久久久久久蜜桃| 亚洲一区二区不卡免费| 国产风韵犹存在线视精品| 欧美老肥妇做.爰bbww视频| 久久众筹精品私拍模特| 欧美三级韩国三级日本三斤| 国产91精品在线观看| 成人性生交大合| 97久久久精品综合88久久| 91蝌蚪porny九色| 欧美日韩国产综合久久| 91精品国产91久久久久久一区二区| 日韩欧美一区在线| 国产欧美一区在线| 怡红院av一区二区三区| 国产91精品精华液一区二区三区| 欧美日韩dvd在线观看| 蜜臀av性久久久久蜜臀av麻豆| 在线观看日韩一区| 99精品欧美一区二区三区小说| 欧美男同性恋视频网站| 国产精品久久久久久久午夜片| 午夜精品久久久久影视| 99精品视频中文字幕| 欧美精品一区二区三区蜜臀 | 看国产成人h片视频| 亚洲精品免费在线观看| 91久久奴性调教| 亚洲精品在线观| 日韩国产在线观看一区| 色哟哟日韩精品| 亚洲国产精品黑人久久久| 精品一区二区免费视频| 91精品国产综合久久蜜臀| 亚洲男女一区二区三区| 国产99久久久国产精品免费看 | 捆绑调教美女网站视频一区| 欧美影院一区二区| 亚洲欧美日韩电影| 国产成人免费视| 久久综合丝袜日本网| 另类人妖一区二区av| 欧美一个色资源| 亚洲不卡在线观看| 欧美午夜一区二区三区| 亚洲影院久久精品| 欧美影片第一页| 一区二区三区高清在线| 色八戒一区二区三区| 亚洲精品伦理在线| 色综合久久66| 亚洲在线观看免费视频| 欧美艳星brazzers| 亚洲成人福利片| 欧美日韩国产综合一区二区三区 | 欧美三级在线看| 一区二区三区在线观看网站| 91蜜桃免费观看视频| 日韩一区在线播放| 91亚洲大成网污www| 亚洲色图另类专区| 91免费在线看| 亚洲欧美国产三级| 欧美色视频一区| 三级久久三级久久久| 91精品国产综合久久久久| 男女激情视频一区| 欧美成人video| 国产精品主播直播| 国产偷国产偷亚洲高清人白洁| 国产成人久久精品77777最新版本| 亚洲国产精品99久久久久久久久| av成人免费在线观看| 一区二区三区在线视频免费观看| 欧美特级限制片免费在线观看| 同产精品九九九| 日韩免费高清视频| 风间由美性色一区二区三区| 亚洲摸摸操操av| 7777精品久久久大香线蕉 | 国产偷国产偷精品高清尤物| 成人av网站在线| 亚洲综合丝袜美腿| 欧美一区二区私人影院日本| 蜜桃av噜噜一区| 欧美精品一区在线观看| 成人av免费在线播放| 亚洲影院在线观看| 欧美一区二区三区免费观看视频| 国产一区 二区| 中文字幕亚洲在| 欧美午夜一区二区三区| 青青草91视频| 国产精品免费免费| 欧美日本一道本在线视频| 狠狠色狠狠色综合系列| 综合久久久久久| 91精品国产91久久久久久最新毛片| 国产精品影音先锋| 亚洲无线码一区二区三区| 精品国产乱码久久久久久图片| av影院午夜一区| 男人的天堂久久精品| 中文字幕av不卡| 欧美欧美欧美欧美| 成人福利视频在线看| 五月天激情综合网| 欧美国产一区视频在线观看| 欧美三级日韩三级国产三级| 国产精品影视网| 偷窥少妇高潮呻吟av久久免费| 欧美激情一区二区三区不卡| 欧美乱妇一区二区三区不卡视频| 国产成a人亚洲| 日本va欧美va欧美va精品| 亚洲婷婷综合久久一本伊一区 | 国产乱子伦视频一区二区三区| 亚洲一区二区三区在线| 国产欧美1区2区3区| 91精品国产欧美日韩| 99re成人精品视频| 国产中文一区二区三区| 亚洲国产日韩av| 国产精品色呦呦| 日韩免费观看2025年上映的电影| 91黄视频在线观看| 国产精品亚洲成人| 日本亚洲最大的色成网站www| 亚洲嫩草精品久久| 国产欧美日韩亚州综合| 日韩一级完整毛片| 欧美亚洲动漫精品| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 美女在线观看视频一区二区| 亚洲欧洲综合另类在线| 久久中文字幕电影| 91精品欧美久久久久久动漫 | 亚洲一区电影777| 日韩一区欧美一区| 中文字幕高清一区| 日韩精品一区二区三区老鸭窝| 日本一区二区三区四区在线视频| 欧美一区二区三区在线电影| 日韩一级二级三级精品视频| www.欧美.com| 国产精品1024| 久久av老司机精品网站导航| 亚洲第一在线综合网站| 亚洲欧洲制服丝袜| 中文字幕一区二区不卡| 国产人久久人人人人爽| 久久亚洲一级片| 欧美mv日韩mv亚洲| 97se亚洲国产综合在线| 国产成人激情av| 国产精品自拍一区| 在线观看日韩国产| 国产精品自在在线| 久久精品无码一区二区三区| 欧美成人性战久久| 欧美大片在线观看一区| 日韩一区二区免费电影| 日韩一区二区三| 日韩欧美一级片| 精品福利一区二区三区 | 麻豆91在线观看| 蜜臀av亚洲一区中文字幕| 美女脱光内衣内裤视频久久影院| 青青草成人在线观看| 精品中文字幕一区二区| 国内精品视频666| 国产一区二区伦理| 风流少妇一区二区| 成人国产在线观看| 91在线视频18| 在线观看91视频| 欧美高清视频一二三区| 日韩色在线观看| 国产夜色精品一区二区av| 国产精品久久久久久久久免费桃花| 日韩伦理电影网| 亚洲五月六月丁香激情| 人人超碰91尤物精品国产| 久久精品国产精品亚洲红杏| 国产精品123|