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

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

?? win32district.c

?? IBE是一種非對稱密碼技術
?? C
字號:
/* Copyright 2003-2006, Voltage Security, all rights reserved.
 */

#include "vibe.h"
#include "environment.h"
#include "base.h"
#include "libctx.h"
#include "vsdistrict.h"
#include "derhelp.h"
#include "oidlist.h"
#include "ibe.h"
#include "vtime.h"
#include "errorctx.h"

#if VOLT_OS == VOLT_WINDOWS_32

#include <windows.h>
#include <tchar.h>
#include <wininet.h>
#include <stdio.h>
#include <process.h>

typedef struct
{
  HINTERNET hReq;
  int err;
  const char *header;
  const char *postData;
} sendRequestDataT;

typedef struct
{
  HINTERNET hReq;
  char *data;
  ULONG space;
  VoltLibCtx *libCtx;
} doReadDataT;

static unsigned __stdcall DoSendRequest (
   LPVOID pParam
);

static unsigned __stdcall DoReadData (
   LPVOID pParam
);

static unsigned __stdcall DoCheckNetwork (
   LPVOID pParam
);

static int ConfirmConnected (
   HWND uiOwner
);

static unsigned __stdcall DoSendRequest (
   LPVOID pParam
   )
{
  sendRequestDataT *data = (sendRequestDataT *)pParam;

  HttpSendRequestA (
    data->hReq, data->header,
    (data->header != (void *) 0 ? strlen(data->header) : 0), 
    (void *)data->postData,
    (data->postData != (void *) 0 ? strlen(data->postData) : 0));
  data->err = GetLastError();

  return (0);
}

/* This is a callback, a Windows function will call this routine.
 * Therefore, we'll treat this as a Windows function call and not log
 * any errors.
 */
static unsigned __stdcall DoReadData (
   LPVOID pParam
   )
{
  ULONG num, len, read, space;
  VoltLibCtx *libCtx;

  doReadDataT *data = (doReadDataT *)pParam;
  libCtx = data->libCtx;
  space = data->space;

  len = 0;
  num = 1;

  while (num > 0)
  {
    InternetQueryDataAvailable (data->hReq, &num, 0, 0);
    if ((len + num + 1) > space)
    {
      space = len + num + 1;
      data->data = (char *)Z2Realloc (data->data, space);
      if (data->data == (char *)0)
      {
        data->space = 0;
        return (-1);
      }

      data->space = space;
    }

    if (!InternetReadFile (data->hReq, data->data + len, num, &read))
    {
      Z2Free (data->data);
      data->data = (char *)0;
      data->space = 0;
      return (-1);
    }

    len += read;
  }

  data->data[len] = 0;

  return (0);
}

static unsigned __stdcall DoCheckNetwork( LPVOID pParam )
{
  return (0);
}

static int ConfirmConnected (
   HWND uiOwner
   )
{
  return (0);
}

int mDoHTTP (
  VoltHttpRequestInfo *requestInfo,
  char **response,
  int *responseCode,   
  unsigned char *url,  
  int allowBadCert,
  unsigned char *trustStore,
  unsigned long timeOut,
  void *appData
   )
{
  int status, sysRet, tries, err;
  unsigned long len;  
  HINTERNET hInt = (HINTERNET)0;
  HINTERNET hCon = (HINTERNET)0;
  HINTERNET hReq = (HINTERNET)0;
  char header[128];
  char *headerPtr;
  unsigned int threadID;  
  HANDLE hThread = (HANDLE)0;
  VtWinINetTransportInfo *transInfo = (VtWinINetTransportInfo *)0;
  VoltLibCtx *libCtx = (VoltLibCtx *)0;
  VoltTransportCtx *transCtx = (VoltTransportCtx *)0;
  VoltHttpRequestInfoPost *postInfo = (VoltHttpRequestInfoPost *)0;
  VoltIdentityObject *idObj = (VoltIdentityObject *)0;
  sendRequestDataT *reqData = (sendRequestDataT *)0;
  doReadDataT *readData = (doReadDataT *)0;  
  HWND uiOwner = (HWND)0;
  char safeHost[512];
  char safeURL[512];
  char *relative_url = (char *)0;
  char *hostName = (char *)0;
  unsigned char *parsedURL = (unsigned char *)0;  
  unsigned char *postData = (unsigned char *)0;
  URL_COMPONENTSA URLparts ;
  /* HTTPS is the default
   */
  INTERNET_PORT serverPort = INTERNET_DEFAULT_HTTPS_PORT;
  DWORD flags = INTERNET_FLAG_KEEP_CONNECTION | INTERNET_FLAG_SECURE ;   
  VOLT_DECLARE_ERROR_TYPE (errorType)
  VOLT_DECLARE_FNCT_LINE (fnctLine)

  /* First check the type of request and set some variables accordingly
   */
   if (requestInfo->requestType == VOLT_REQUEST_TYPE_GET)
   {
     libCtx = (VoltLibCtx *)requestInfo->requestData;
   }
   else
   {
     postInfo = (VoltHttpRequestInfoPost *)requestInfo->requestData;
     transCtx = postInfo->transCtx;
     idObj = postInfo->idObj;
     libCtx = (VoltLibCtx *)(transCtx->voltObject.libraryCtx);
     postData = postInfo->postData;
   }

  /* Get the user specified values from the app data.
   * if appData is NULL use the default values.
   */
  if (appData != (void *)0)
    uiOwner = (HANDLE)appData;  

  /* First parse the URL to get the protocol, server and
   *  relative resource locations. Following determines what values
   *  are extracted from the URL. 
   */
  URLparts.dwStructSize = sizeof(URLparts);
  URLparts.dwSchemeLength    = 1;
  URLparts.dwHostNameLength  = 1;
  URLparts.dwUserNameLength  = 1;
  URLparts.dwPasswordLength  = 1;
  URLparts.dwUrlPathLength   = 1;
  URLparts.dwExtraInfoLength = 1;

  /* Initialize the values to NULL. These will be filled when 
   *  InternetCrackUrl function is called.
   */
  URLparts.lpszScheme     = NULL;
  URLparts.lpszHostName   = NULL;
  URLparts.lpszUserName   = NULL;
  URLparts.lpszPassword   = NULL;
  URLparts.lpszUrlPath    = NULL;
  URLparts.lpszExtraInfo  = NULL;

  sysRet = 0;  
  VOLT_SET_FNCT_LINE (fnctLine)
  status = VT_ERROR_MEMORY;
  reqData = (sendRequestDataT *)Z3Malloc (sizeof (sendRequestDataT));
  if (reqData == (sendRequestDataT *)0 )
    goto endWin32DistrictFunction;
  Z2Memset (reqData, 0, sizeof (sendRequestDataT));

  VOLT_SET_FNCT_LINE (fnctLine)
  readData = (doReadDataT *)Z3Malloc (sizeof (doReadDataT));
  if (readData == (doReadDataT *) 0 )
    goto endWin32DistrictFunction;
  Z2Memset (readData, 0, sizeof (doReadDataT));
  readData->libCtx = libCtx;

  status = 0;

  VOLT_SET_FNCT_LINE (fnctLine)
  if (!InternetCrackUrlA (url, 0, 0, &URLparts))
  {
    sysRet = GetLastError ();
    goto endWin32DistrictFunction;
  }

  /* Allocate the memory to hold the parsed info
   */
  VOLT_SET_FNCT_LINE (fnctLine)
  status = VT_ERROR_MEMORY;
  parsedURL = (unsigned char *)Z2Malloc (
    URLparts.dwHostNameLength + URLparts.dwUrlPathLength + 2, 0);
  if (parsedURL == (unsigned char *)0 )
    goto endWin32DistrictFunction;
  status = 0;

  hostName = parsedURL ;
  relative_url = parsedURL + URLparts.dwHostNameLength + 1;

  Z2Memcpy (hostName, URLparts.lpszHostName, URLparts.dwHostNameLength);
  hostName [URLparts.dwHostNameLength] = 0 ;
  Z2Memcpy (relative_url , URLparts.lpszUrlPath, URLparts.dwUrlPathLength);
  relative_url[URLparts.dwUrlPathLength] = 0;

  /* Canonicalize the URLs just in case they have unsafe chars
   */
  VOLT_SET_FNCT_LINE (fnctLine)
  len = sizeof (safeHost);
  if (!InternetCanonicalizeUrlA (hostName, safeHost, &len, 0))
  {
    sysRet = GetLastError ();
    goto endWin32DistrictFunction;
  }

  VOLT_SET_FNCT_LINE (fnctLine)
  len = sizeof (safeURL);
  if (!InternetCanonicalizeUrlA (relative_url, safeURL, &len, 0))
  {
    sysRet = GetLastError ();
    goto endWin32DistrictFunction;
  }

  /* Set the type of connection and Escape both 
   *  hostname and relative path.  
   */
  if (URLparts.nPort == 80)
  {
    flags = INTERNET_FLAG_KEEP_CONNECTION ;
    serverPort = INTERNET_DEFAULT_HTTP_PORT;  
  }  

  VOLT_SET_FNCT_LINE (fnctLine)
  hInt = InternetOpenA (
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)",
    INTERNET_OPEN_TYPE_PRECONFIG, (void *) 0, (void *) 0, 0);
  if (!hInt)
  {
    sysRet = GetLastError ();
    goto endWin32DistrictFunction;
  }

  VOLT_SET_FNCT_LINE (fnctLine)  
  hCon = InternetConnectA (
    hInt, safeHost, serverPort, (void *) 0, (void *) 0,
    INTERNET_SERVICE_HTTP, 0, 0);
  if (!hCon)
  {    
    sysRet = GetLastError ();
    goto endWin32DistrictFunction;
  }

  if (postData != (void *) 0)
  {
    sprintf (header, "Content-Type: application/x-www-form-urlencoded");
    headerPtr = header;
  }
  else
  {
    headerPtr = (void *)0;
  }

  tries = 0;

reopen:

  if (requestInfo->requestType == VOLT_REQUEST_TYPE_POST)
  {
    VOLT_SET_FNCT_LINE (fnctLine)
    hReq = HttpOpenRequestA (
      hCon, "POST", safeURL, (void *) 0, (void *) 0, (void *) 0, 
      flags, 0);
  }
  else
  {
    VOLT_SET_FNCT_LINE (fnctLine)
    hReq = HttpOpenRequestA (
      hCon, "GET", safeURL, (void *) 0, (void *) 0, (void *) 0, 
      flags, 0);
  }
  if (!hReq)
  {
    sysRet = GetLastError ();
    goto endWin32DistrictFunction;    
  }

resend:

  reqData->hReq = hReq;
  reqData->postData = postData;
  reqData->header = headerPtr;

  VOLT_SET_FNCT_LINE (fnctLine)
  hThread = (HANDLE)CreateThread (
    (void *) 0, 0, DoSendRequest, reqData, 0, &threadID);
  if (hThread == (void *) 0)
  {
    sysRet = GetLastError ();
    goto endWin32DistrictFunction;    
  }

  VOLT_SET_FNCT_LINE (fnctLine)
  if (WaitForSingleObject (hThread, timeOut) != WAIT_OBJECT_0)
  {
    TerminateThread (hThread, 0);
    CloseHandle (hThread);
    sysRet = ERROR_INTERNET_TIMEOUT;  
    goto endWin32DistrictFunction;
  }
  CloseHandle (hThread);

  err = reqData->err;  

  /* This part needs (a lot of) explanation:
   * There are two cases in which we need to call InternetErrorDlg : bad
   * auth and other (e.g. cert probs)
   * 1) In the bad auth case, if we try to just go back to the
   *    HttpSendRequest and use the same handle, wininet for some reason
   *    doesn't re-POST the data.  So we need to close the handle, and
   *    start again from HttpOpenRequest.  Fortunately, Windows caches the
   *    credentials on the machine, not in hReq, so this works.
   * 2) Unfortunately, for the other case, e.g. invalid CA, if the user
   *    hits OK, we still need to go retry, but wininet caches the user's
   *    OK selection in hReq, so if we close it and reopen, it keeps
   *    asking the user over and over again.
   * Fortunately for us, HttpSendRequest returns two different things in
   * case 1 and case 2.  In case 1, it returns TRUE, so for that case we
   * start over at HttpOpenRequest if InternetErrorDlg returns
   * ERROR_INTERNET_FORCE_RETRY (which basically means the user entered
   * their pass).  In case 2, it returns FALSE, so we just go back to
   * HttpSendRequest if InternetErrorDlg retursn ERROR_SUCCESS.
   *
   * Clearly, WinInet is very broken.  I believe all of the above to be
   * true, but it's very possible that there are cases I didn't account
   * for.  Time will tell.
   */

  if (tries < 3)
  {
    /* Last one is OCSP failure
     */
    if ( (err == ERROR_INTERNET_INVALID_CA) ||
         (err == ERROR_INTERNET_SEC_CERT_CN_INVALID) ||
         (err == ERROR_INTERNET_SEC_CERT_DATE_INVALID) || 
         (err == ERROR_INTERNET_SECURITY_CHANNEL_ERROR) )
    {
      if (allowBadCert == 1)
      {
        VOLT_SET_FNCT_LINE (fnctLine)
        sysRet = InternetErrorDlg (
          uiOwner, hReq, err,
          FLAGS_ERROR_UI_FILTER_FOR_ERRORS |
          FLAGS_ERROR_UI_FLAGS_GENERATE_DATA |
          FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS, (void *) 0);
        if (sysRet == ERROR_CANCELLED)
          goto endWin32DistrictFunction;

        goto resend;
      }
      else
      {
        sysRet = err;
        goto endWin32DistrictFunction;
      }
    }

    sysRet = InternetErrorDlg (
      uiOwner, hReq, err,
      FLAGS_ERROR_UI_FILTER_FOR_ERRORS |
      FLAGS_ERROR_UI_FLAGS_GENERATE_DATA |
      FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS, (void *) 0);

    if (sysRet == ERROR_INTERNET_FORCE_RETRY)
    {
      tries++;
      InternetCloseHandle (hReq);
      goto reopen;
    }
    else if ( (sysRet == ERROR_SUCCESS) &&
              (err == ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR) )
    {
      goto resend;
    }
  }

  VOLT_SET_FNCT_LINE (fnctLine)
  len = sizeof (int);
  if (!HttpQueryInfo (
    hReq, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, responseCode,
    &len, (void*) 0))
  {
    sysRet = GetLastError ();
    goto endWin32DistrictFunction;
  }

  if (*responseCode == 0)
  {
    /* We get here on connection errors, and err will actually contain
     * the error we want.
     */
    sysRet = err;
    goto endWin32DistrictFunction;
  }

  readData->hReq = hReq;

  VOLT_SET_FNCT_LINE (fnctLine)
  hThread = (HANDLE)CreateThread (
    (void*) 0, 0, DoReadData, readData, 0, &threadID);
  if (hThread == (void*) 0)
  {    
    sysRet = GetLastError ();
    goto endWin32DistrictFunction;
  }

  VOLT_SET_FNCT_LINE (fnctLine)
  if (WaitForSingleObject (hThread, timeOut) != WAIT_OBJECT_0)
  {
    TerminateThread (hThread, 0);
    CloseHandle (hThread);    
    sysRet = ERROR_INTERNET_TIMEOUT;
    goto endWin32DistrictFunction;
  }

  CloseHandle (hThread);
  *response = readData->data;
  readData->data = (char *)0;

  sysRet = 0;

endWin32DistrictFunction:
  /* If status is 0, but sysRet is not, figure out what status should
   * be.
   */
  VOLT_SET_ERROR_TYPE (errorType, VT_ERROR_TYPE_PRIMARY)
  if (status == 0)
  {
    VOLT_SET_ERROR_TYPE (
      errorType, VT_ERROR_TYPE_PRIMARY | VT_ERROR_TYPE_OUTSIDE)
    switch (sysRet)
    {
      case 0:
        break;

      case ERROR_INTERNET_INVALID_CA:
      case ERROR_INTERNET_SEC_CERT_CN_INVALID:
      case ERROR_INTERNET_SEC_CERT_DATE_INVALID:
      case ERROR_INTERNET_SECURITY_CHANNEL_ERROR:
        status = VT_ERROR_DISTRICT_NOT_VERIFIED;
        break;

      case ERROR_INTERNET_INVALID_URL:
      case ERROR_INTERNET_UNRECOGNIZED_SCHEME:
      case ERROR_INTERNET_NAME_NOT_RESOLVED:
        status = VT_ERROR_URL;
        break;

      case ERROR_INTERNET_CANNOT_CONNECT :
      case ERROR_INTERNET_CONNECTION_ABORTED :
      case ERROR_INTERNET_NO_DIRECT_ACCESS :
      case ERROR_INTERNET_CONNECTION_RESET :
        status = VT_ERROR_NETWORK_CONNECT;
        break;
      
      case ERROR_INTERNET_TIMEOUT :
        status = VT_ERROR_TIMEOUT;
        break;

      default:
        status = VT_ERROR_UNKNOWN_DISTRICT;
    }
  }
  else
  {
    /* If status is not 0, then sysRet is. Set sysRet to status so that
     * we can return log sysRet as the error.
     */
    sysRet = status;
  }

  if (reqData != (sendRequestDataT *)0 )
    Z2Free (reqData);
  if (parsedURL != (unsigned char *)0 )
    Z2Free (parsedURL);
  if (readData != (doReadDataT *)0 )
  {
    if (readData->data != (char *)0)
      Z2Free (readData->data);
    Z2Free (readData);
  }
  InternetCloseHandle (hReq);
  InternetCloseHandle (hCon);
  InternetCloseHandle (hInt);

  if (status == 0)
    return (0);

  /* If the error is a system error, it is in sysRet and errorType is
   * set to OUTSIDE. If the error is toolkit, sysRet was set to status,
   * so it does indeed contain the appropriate value for the call to
   * Log. And errorType is PRIMARY.
   */
  VOLT_LOG_ERROR (
    (VtLibCtx)libCtx, sysRet, errorType, fnctLine, "mDoHTTP", (char *)0)

  return (status);
}

#endif  /* VOLT_OS == VOLT_WINDOWS_32 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片| 91视频com| 成人免费精品视频| 91精品国产91热久久久做人人| 久久亚区不卡日本| 亚洲国产欧美另类丝袜| 国产精品亚洲一区二区三区妖精 | 日韩精品一区在线观看| 国产精品每日更新| 乱中年女人伦av一区二区| 99re免费视频精品全部| 精品欧美乱码久久久久久| 亚洲小说欧美激情另类| 不卡的av网站| 国产片一区二区| 韩国理伦片一区二区三区在线播放 | 97成人超碰视| 久久久www成人免费毛片麻豆| 五月婷婷久久丁香| 色先锋aa成人| 亚洲免费av网站| 波多野结衣91| 国产日韩欧美一区二区三区乱码| 蜜臀av亚洲一区中文字幕| 色美美综合视频| 亚洲视频在线观看一区| 成人教育av在线| 国产精品亲子伦对白| 国产精品一区专区| 久久亚洲精精品中文字幕早川悠里 | 久久久一区二区三区捆绑**| 日韩中文字幕区一区有砖一区| 在线视频一区二区三区| 国产福利一区二区三区视频在线| 麻豆国产欧美一区二区三区| 日韩久久久精品| 在线一区二区三区| 99精品久久久久久| 国产精品私人自拍| 高清视频一区二区| 成人欧美一区二区三区| 欧美一级久久久久久久大片| 亚洲免费观看在线观看| 在线免费一区三区| 亚洲成精国产精品女| 91麻豆国产精品久久| 亚洲伦理在线精品| 欧美日韩在线直播| 免费观看日韩电影| 久久精品人人做人人综合| 国产91富婆露脸刺激对白| 国产精品久久网站| 欧洲精品中文字幕| 日韩**一区毛片| 久久伊人中文字幕| 91免费看视频| 丝袜美腿亚洲一区| 久久精品一区二区三区不卡牛牛| 成人综合在线网站| 亚洲韩国精品一区| 精品久久久久av影院| 成人一区二区在线观看| 亚洲国产婷婷综合在线精品| 91精品国产91久久综合桃花| 国产在线不卡一区| 亚洲免费av高清| 欧美www视频| 99视频精品在线| 日韩av一二三| 国产精品福利一区| 欧美日韩不卡在线| 国产成人精品免费在线| 午夜久久久影院| 国产欧美一区二区精品秋霞影院| 欧美亚洲一区三区| 国产成人综合视频| 天天做天天摸天天爽国产一区| 国产欧美一区二区精品婷婷| 制服丝袜亚洲色图| www.视频一区| 国产在线视频一区二区| 亚洲国产精品一区二区www | 久久人人超碰精品| 在线一区二区三区四区| 国产河南妇女毛片精品久久久| 亚洲永久精品国产| 国产色产综合色产在线视频| 欧美精品久久久久久久多人混战| 成人激情免费视频| 狠狠色2019综合网| 日韩在线播放一区二区| 亚洲尤物视频在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩欧美在线1卡| 欧美性色黄大片| 91免费国产视频网站| 国产精品亚洲人在线观看| 午夜a成v人精品| 亚洲国产日韩在线一区模特| 国产精品国产成人国产三级| 国产午夜精品久久久久久久| 日韩欧美国产综合| 91精品在线麻豆| 欧美三级午夜理伦三级中视频| 99久久国产免费看| 成人国产在线观看| 国产大陆a不卡| 国产成人av影院| 床上的激情91.| 成人一区二区视频| youjizz国产精品| 99久久精品国产精品久久| www.日韩精品| 色婷婷综合在线| 日本伦理一区二区| 欧美日韩一区不卡| 欧美三级乱人伦电影| 欧美性大战久久| 欧美日韩中文国产| 欧美另类一区二区三区| 5858s免费视频成人| 制服丝袜亚洲播放| 欧美电视剧免费观看| 精品sm捆绑视频| 精品国产一区二区三区忘忧草| xvideos.蜜桃一区二区| 国产欧美精品一区aⅴ影院| 国产女主播视频一区二区| 国产精品乱人伦| 亚洲人成网站精品片在线观看| 亚洲日本电影在线| 亚洲成av人片一区二区梦乃| 日本免费新一区视频| 激情国产一区二区| 99热这里都是精品| 欧美亚洲禁片免费| 日韩精品中文字幕一区| 久久久久久久久99精品| 中文字幕欧美一| 亚洲国产另类av| 久久66热re国产| 福利视频网站一区二区三区| 91在线视频播放| 欧美一区二区成人| 国产女人18毛片水真多成人如厕 | 国产日韩欧美高清| 一级日本不卡的影视| 蜜桃av一区二区三区| 国产激情91久久精品导航| 欧亚一区二区三区| 欧美精品一区二区在线观看| 亚洲视频综合在线| 免费在线观看日韩欧美| 成人avav影音| 欧美一区二区福利视频| 中文字幕一区二区三区av| 亚洲高清免费一级二级三级| 国产精品888| 在线免费观看日韩欧美| www国产亚洲精品久久麻豆| 亚洲男人的天堂在线观看| 久久国产乱子精品免费女| 99久久精品费精品国产一区二区| 91精品国产色综合久久ai换脸| 国产午夜亚洲精品午夜鲁丝片| 亚洲午夜激情网站| 国产99久久久国产精品| 日韩一区二区三区免费观看| 自拍偷拍国产精品| 国产乱子伦视频一区二区三区| 91成人在线观看喷潮| 国产精品色婷婷久久58| 欧美aⅴ一区二区三区视频| 色综合久久久久网| 欧美国产激情二区三区| 日本特黄久久久高潮| 在线免费精品视频| 国产精品久久久久婷婷| 国产中文一区二区三区| 欧美一区二区视频网站| 一区二区三区小说| 成人av网址在线| 久久婷婷国产综合国色天香 | 国产高清在线观看免费不卡| 欧美一区二区成人6969| 婷婷综合另类小说色区| 一本色道综合亚洲| 国产精品高清亚洲| a级高清视频欧美日韩| 国产视频一区二区在线观看| 精油按摩中文字幕久久| 日韩一区和二区| 午夜精品久久久久久久久久| 欧美在线视频全部完| 亚洲黄色av一区| 欧美性高清videossexo| 夜夜爽夜夜爽精品视频| 91蜜桃在线观看| 一区二区免费在线| 在线观看免费视频综合|