亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
久久av老司机精品网站导航| 久久精品国产**网站演员| 日韩三级视频在线观看| 91网站在线观看视频| 开心九九激情九九欧美日韩精美视频电影 | 激情综合网av| 亚洲视频一区在线观看| 国产亚洲视频系列| 777午夜精品视频在线播放| av亚洲精华国产精华精华| 国模少妇一区二区三区| 香蕉久久一区二区不卡无毒影院| 欧美国产欧美综合| 日韩一级免费观看| 欧美性猛交xxxx乱大交退制版| 懂色av一区二区在线播放| 久色婷婷小香蕉久久| 亚洲香蕉伊在人在线观| 国产精品久久久久久久浪潮网站| 欧美电视剧免费观看| 欧美精品视频www在线观看| 99久久免费精品高清特色大片| 国产乱子轮精品视频| 免费在线观看一区| 亚洲国产中文字幕在线视频综合 | 欧美丰满少妇xxxxx高潮对白| aaa欧美色吧激情视频| 国产成人夜色高潮福利影视| 日本aⅴ免费视频一区二区三区 | 亚洲电影激情视频网站| 亚洲男女一区二区三区| 亚洲欧洲国产日韩| 欧美国产一区二区在线观看| 中文字幕精品一区二区精品绿巨人 | 国产色产综合产在线视频| 精品久久免费看| 欧美变态tickle挠乳网站| 日韩一级片在线播放| 91精品国产综合久久精品| 欧美久久久久久蜜桃| 欧美日韩国产高清一区二区三区| 欧美日韩亚洲高清一区二区| 欧美色视频在线观看| 91电影在线观看| 色婷婷av一区二区三区软件| 色吧成人激情小说| 欧美性受极品xxxx喷水| 精品视频在线免费看| 欧美日韩国产综合一区二区| 欧美老肥妇做.爰bbww| 欧美丰满一区二区免费视频| 日韩午夜电影在线观看| 日韩欧美国产综合| 久久午夜国产精品| 国产精品久久三| 亚洲精品中文字幕乱码三区| 亚洲第一搞黄网站| 青青草精品视频| 国产激情精品久久久第一区二区| 成人国产精品免费观看| 欧美中文字幕一区二区三区 | 久久久另类综合| 国产精品成人一区二区艾草| 亚洲最色的网站| 免费高清在线一区| 国产精品123| 91小视频免费观看| 91精品久久久久久久91蜜桃| 国产婷婷一区二区| 夜夜嗨av一区二区三区四季av| 午夜精品福利一区二区三区av | 在线影院国内精品| 3751色影院一区二区三区| 2023国产精品视频| 亚洲免费在线视频| 日本在线不卡视频一二三区| 国产主播一区二区| 色婷婷av一区二区三区gif| 日韩限制级电影在线观看| 国产精品久久免费看| 日韩精品一级中文字幕精品视频免费观看 | 99re66热这里只有精品3直播 | 亚洲午夜免费福利视频| 久久超级碰视频| 色综合久久综合网97色综合| 精品毛片乱码1区2区3区| 亚洲综合一区二区精品导航| 毛片不卡一区二区| 99国产精品一区| 亚洲精品在线观| 一区二区三区在线免费播放| 国产在线精品一区二区夜色| 色综合久久六月婷婷中文字幕| 欧美大白屁股肥臀xxxxxx| 亚洲靠逼com| 国产91对白在线观看九色| 欧美精品视频www在线观看 | 久久精品视频在线看| 五月天亚洲婷婷| 91在线观看下载| 久久综合色8888| 三级不卡在线观看| av资源站一区| 欧美精品一区二| 日韩中文欧美在线| 99九九99九九九视频精品| 久久综合久久综合亚洲| 日韩精品电影一区亚洲| 色噜噜狠狠成人中文综合| 国产网红主播福利一区二区| 欧美a级一区二区| 精品视频一区二区三区免费| 国产精品久久久久久户外露出| 日本欧洲一区二区| 欧美日韩国产电影| 亚洲图片欧美色图| 日本韩国一区二区三区| 国产精品二三区| 国产精品一二三四| 日韩色视频在线观看| 亚洲成av人片观看| 在线免费观看不卡av| 玉米视频成人免费看| 91免费在线看| 国产精品女主播av| 国产69精品久久久久777| 久久久精品国产99久久精品芒果| 美女在线视频一区| 日韩一区二区精品葵司在线| 免费观看30秒视频久久| 欧美一区二区成人6969| 蜜臀精品久久久久久蜜臀| 制服丝袜激情欧洲亚洲| 午夜视频在线观看一区二区| 欧美天天综合网| 亚洲高清三级视频| 欧美日韩国产首页在线观看| 亚洲超碰精品一区二区| 精品视频在线免费观看| 午夜欧美一区二区三区在线播放| 欧美日韩一区二区三区在线| 亚洲成人免费在线观看| 在线不卡中文字幕播放| 亚洲成人免费视| 欧美人与禽zozo性伦| 免费在线看成人av| 26uuu国产日韩综合| 成人精品国产免费网站| **网站欧美大片在线观看| 91久久精品一区二区三| 亚欧色一区w666天堂| 欧美一级久久久| 国产精品1区2区| 亚洲欧美激情一区二区| 91香蕉视频mp4| 婷婷夜色潮精品综合在线| 日韩女优视频免费观看| 国产精品亚洲午夜一区二区三区 | 中文字幕乱码日本亚洲一区二区| 99久久精品免费看国产免费软件| 亚洲一区二区精品3399| 精品少妇一区二区三区在线播放| 韩国精品久久久| 亚洲男同性恋视频| 在线播放中文字幕一区| 国产一二精品视频| 综合久久一区二区三区| 欧美精品99久久久**| 国产一区二区按摩在线观看| 国产精品久久久久三级| 欧美美女激情18p| 国产精品一区二区三区网站| 夜色激情一区二区| 久久久久久久精| 欧美吞精做爰啪啪高潮| 国产一区二区福利视频| 亚洲一区二区视频在线观看| 欧美成人精品二区三区99精品| av激情综合网| 日韩黄色一级片| 亚洲欧洲精品天堂一级| 欧美一级日韩免费不卡| 成人免费视频播放| 日韩av不卡一区二区| 亚洲人吸女人奶水| 日韩美女视频在线| 色婷婷av一区二区| 国产精品一区二区三区99| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美一a一片一级一片| 国产精品 日产精品 欧美精品| 午夜精品福利一区二区三区蜜桃| 中文字幕av免费专区久久| 3d成人h动漫网站入口| 色综合久久综合| 国产91精品入口| 国产综合色视频| 日本欧美一区二区三区乱码| 一级中文字幕一区二区| 中文字幕国产一区二区|