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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? x7229.htm

?? Its a xmpp protocol book
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<HTML
><HEAD
><TITLE
>Dialup system watch</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.64
"><LINK
REL="HOME"
TITLE="Programming Jabber"
HREF="book1.htm"><LINK
REL="UP"
TITLE="Messages, Presence, and Presence Subscription"
HREF="c6941.htm"><LINK
REL="PREVIOUS"
TITLE="CVS notification"
HREF="x6950.htm"><LINK
REL="NEXT"
TITLE="Presence-sensitive CVS notification"
HREF="x7499.htm"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Programming Jabber</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="x6950.htm"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 7. Messages, Presence, and Presence Subscription</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="x7499.htm"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="JABTDG-CH-7-SECT-2"
>Dialup system watch</A
></H1
><P
>When working from home, my Linux server, which acts as a file server
and router for the rest of the house, is connected to the Internet
for pretty much most of the time. To my wife, I can justify the 
pay-per-minute dialup expense with work-related reasons. But when 
I'm away, those reasons aren't relevant. So
for most of the time, the connection is down.
Now and again though, I do need access to things on the server
at home. After my wife grew tired of answering the phone and have
me talk her through going downstairs into the cellar, getting the
server to dial up, and finding out the IP address, I decided there
was a better way. I could take one step in the right direction by
getting the server to dial up at specified intervals and I would hop
on at the pre-ordained times if I needed to. But there was a problem
with this, which I'll describe in a second.</P
><P
>Most of the time at customer sites, I'm running a Jabber client of some
sort. Whether it's WinJab on Windows, or Jarl in <I
CLASS="EMPHASIS"
>cli</I
>
(command line) mode on a remote server over an <B
CLASS="COMMAND"
>ssh</B
>
connection, I can get my fix. This platform&mdash;my Jabber client&mdash;turns
out to be an ideal ready-made component for my solution. </P
><P
>Here's how it would work:</P
><P
></P
><UL
><LI
><P
>Get the server to dial up and connect to the Internet regularly</P
></LI
><LI
><P
>On connection, start a script that sends Jabber presence to me</P
></LI
><LI
><P
>On disconnection, get the script to end</P
></LI
></UL
><P
>While the Jabber client sits on my desktop screen, I am aware
of things going on in the Jabber-based conversation world; people would
send me messages, my email alert mechanism would punt the subject line
of important incoming mails to me, and I could see who (and what) was coming
and going in my roster&mdash;the collection of people and services I have in
my contact list. If I could somehow add to my roster a JID that represented
my server at home, I could subscribe to the server's presence and 
know when it was available&mdash;connected to the Internet&mdash;and
when it wasn't.</P
><P
>This would solve the problem I'd previously had with the timing of the
automated dialup: I'd set the server to dial up every hour, or every
two hours, and to stay online for ten minutes or so each time, but
invariably due to timekeeping discrepancies, eddies in the space-time
continuum, and the fact that I don't wear a watch, the poor timing between
me and the server meant that I often missed the online window.</P
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="JABTDG-CH-7-SECT-2.1"
>The preparation</A
></H2
><P
>Before diving into the script, it's necessary to do a bit of preparation.
We're going to be using the <I
CLASS="EMPHASIS"
>presence subscription</I
>
concept, which is is described in <A
HREF="c3612.htm"
>Chapter 5</A
>, and covered
in more detail in the next section in this chapter.
We're also going to have to get the script to run, and stay running, when
the dialup connection is made, and have it stop when the dialup connection
is ended.</P
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="JABTDG-CH-7-SECT-2.1.1"
>Presence</A
></H3
><P
>Rather than
get involved in the nitty gritty of presence subcriptions right now, let's
use the tools that are
around us to get things set up. In order for this to work, we need to be
subscribed to the presence of the script that will be invoked when the server
dials up and connects to the Internet. The script will connect to the
Jabber server using a JID with a username that represents the Linux
server: <TT
CLASS="LITERAL"
>myserver@gnu.pipetree.com</TT
>. My JID in this
case is <TT
CLASS="LITERAL"
>dj@gnu.pipetree.com</TT
>, so we just use whatever
Jabber client happens to be at hand, say Jabber Instant Messenger (JIM),
to effect both sides of the subscription. </P
><P
></P
><DIV
CLASS="VARIABLELIST"
><DL
><DT
>Step 1: Create JID <TT
CLASS="LITERAL"
>myserver@gnu.pipetree.com</TT
></DT
><DD
><P
>We need to create the script's JID if it doesn't already exist. We can
use the <B
CLASS="COMMAND"
>reguser</B
> script we wrote in 
<A
HREF="x6787.htm"
>the section called <I
>User Registration Script</I
> in Chapter 6</A
> to do this:</P
><P
><PRE
CLASS="SCREEN"
>[dj@yak dj]$ <TT
CLASS="USERINPUT"
><B
>./reguser gnu.pipetree.com username=myserver password=secret</B
></TT
>
[Attempt] (myserver) Successful registration
[dj@yak dj]$ </PRE
></P
></DD
><DT
>Step 2: Subscribe to <I
CLASS="EMPHASIS"
>myserver</I
>'s presence</DT
><DD
><P
>We start JIM with the JID <TT
CLASS="LITERAL"
>dj@gnu.pipetree.com</TT
>, and add
<TT
CLASS="LITERAL"
>myserver@gnu.pipetree.com</TT
> to the
roster. This should automatically send a presence subscription request
to the JID. Adding the JID to the roster using JIM is shown in 
<A
HREF="x7229.htm#JABTDG-CH-7-FIG-2"
>Figure 7-2</A
>.</P
></DD
><DT
>Step 3: Accept presence subscription as <I
CLASS="EMPHASIS"
>myserver</I
></DT
><DD
><P
>Now connecting with the <I
CLASS="EMPHASIS"
>myserver</I
> JID, again, using the
JIM client, we accept the presence subscription request from Step 2, so that
<TT
CLASS="LITERAL"
>dj@gnu.pipetree.com</TT
> will automatically receive
<TT
CLASS="LITERAL"
>myserver@gnu.pipetree.com</TT
>'s availability information.
Whether or not <I
CLASS="EMPHASIS"
>myserver</I
> subscribes to
<I
CLASS="EMPHASIS"
>dj</I
>'s presence is irrelevant in this case, as the script
itself is not interested in the availability of anyone at all.</P
></DD
></DL
></DIV
><DIV
CLASS="FIGURE"
><A
NAME="JABTDG-CH-7-FIG-2"
></A
><P
><B
>Figure 7-2. Adding <TT
CLASS="LITERAL"
>myserver@gnu.pipetree.com</TT
> to the roster</B
></P
><P
><IMG
SRC="CH-7-FIG-2.jpg"></P
></DIV
><P
>At this stage, the entry in <TT
CLASS="LITERAL"
>dj@gnu.pipetree.com</TT
>'s roster
that represents the Linux server will indicate whether the script run at
dialup time is active or not. If we continue to use the JIM client, we will
see that this is shown by a yellow bulb, or no icon at all, respectively.</P
></DIV
><DIV
CLASS="SECT3"
><H3
CLASS="SECT3"
><A
NAME="JABTDG-CH-7-SECT-2.1.2"
>Starting and stopping the script</A
></H3
><P
>The dialup connection is set up using the Point to Point Protocol
daemon <B
CLASS="COMMAND"
>pppd</B
>. This uses a program such as 
<B
CLASS="COMMAND"
>chat</B
> to talk to the modem and get it to dial
the ISP. The <B
CLASS="COMMAND"
>pppd</B
> mechanism
affords us an idea way to start and stop a script on the
respective connection and disconnection of the line. When the 
connection has been made, the script <TT
CLASS="LITERAL"
>/etc/ppp/ip-up</TT
>
is invoked and passed a number of connection-related parameters.
Similarly <TT
CLASS="LITERAL"
>/etc/ppp/ip-down</TT
> is invoked when the 
connection is closed. </P
><P
>Some implementations of <B
CLASS="COMMAND"
>pppd</B
> also offer 
<TT
CLASS="LITERAL"
>/etc/ppp/ip-up.local</TT
> and
<TT
CLASS="LITERAL"
>/etc/ppp/ip-down.local</TT
> which should be used 
in place of the <TT
CLASS="LITERAL"
>ip-up</TT
> and <TT
CLASS="LITERAL"
>ip-down</TT
>
scripts if they exist.</P
><P
>So what we want to do is start our script with 
<TT
CLASS="LITERAL"
>ip-up[.local]</TT
> and stop it with
<TT
CLASS="LITERAL"
>ip-down[.local]</TT
>. What these starter and stopper 
scripts might look like are shown in <A
HREF="x7229.htm#JABTDG-CH-7-EX-3"
>Example 7-3</A
>
and <A
HREF="x7229.htm#JABTDG-CH-7-EX-4"
>Example 7-4</A
>. They are simply shell scripts
that share the process id (PID) of the Jabber script via a temporary
file. The starter starts the Jabber script and writes the PID of that
script to a file. The stopper kills the script using the PID.</P
><DIV
CLASS="EXAMPLE"
><A
NAME="JABTDG-CH-7-EX-3"
></A
><P
><B
>Example 7-3. An <TT
CLASS="LITERAL"
>ip-up</TT
> starter script</B
></P
><P
><PRE
CLASS="SCREEN"
>#!/bin/sh
 
# Change to working directory
cd /jabber/java/

# Call the Jabber script and put to background
/usr/java/jdk1.3.1/bin/java -classpath jabberbeans.jar:. HostAlive $5 &#38;

# Write the running script's PID
echo $! &#62; /tmp/HostAlive.pid</PRE
></P
></DIV
><DIV
CLASS="EXAMPLE"
><A
NAME="JABTDG-CH-7-EX-4"
></A
><P
><B
>Example 7-4. An <TT
CLASS="LITERAL"
>ip-down</TT
> stopper script</B
></P
><P
><PRE
CLASS="SCREEN"
>#!/bin/sh

# Simply kill the process using the
# JID written by the starter script
/bin/kill `cat /tmp/HostAlive.pid`

# Remove the PID file
/bin/rm /tmp/HostAlive.pid&#13;</PRE
></P
></DIV
><P
><A
HREF="x7229.htm#JABTDG-CH-7-EX-3"
>Example 7-3</A
> shows that we're passing through
one of the parameters that <B
CLASS="COMMAND"
>pppd</B
> gives to the
<TT
CLASS="LITERAL"
>ip-up</TT
> script: the remote IP address&mdash;that
by which the server is known during its temporary connection to the
Internet&mdash;in the <TT
CLASS="LITERAL"
>$5</TT
> variable.
<A
NAME="AEN7325"
HREF="#FTN.AEN7325"
>[1]</A
>
This IP address can be passed along as part of the availability
information in the <TT
CLASS="LITERAL"
>&#60;presence/&#62;</TT
> element,
so that the recipient (<I
CLASS="EMPHASIS"
>dj</I
>) can see what IP address
has been assigned to the server.</P
></DIV
></DIV
><DIV
CLASS="SECT2"
><H2
CLASS="SECT2"
><A
NAME="JABTDG-CH-7-SECT-2.2"
>The Jabber script</A
></H2
><P
>As you might have guessed from looking at <A
HREF="x7229.htm#JABTDG-CH-7-EX-3"
>Example 7-3</A
>,
we're going to write this script in Java. We'll use the Jabberbeans 
library; see <A
HREF="x217.htm"
>the section called <I
>The Software</I
> in Chapter 1</A
> for details of where
to get this library and what the requirements are.</P
><P
>Let's start by importing the libraries (the classes) we would like to 
use:</P
><P
><PRE
CLASS="SCREEN"
>import org.jabber.jabberbeans.*;
import org.jabber.jabberbeans.Extension.*;
import java.net.InetAddress;&#13;</PRE
></P
><P
>The Jabberbeans Jabber library is highly modular and designed so
we can pick only the features that we need; in this case, however,
we're just going to import the whole set of classes within the 
<TT
CLASS="LITERAL"
>org.jabber.jabberbeans</TT
> and 
<TT
CLASS="LITERAL"
>org.jabber.jabberbeans.Extension</TT
> packages,
for simplicity.</P
><P
>We're also going to be manipulating the Jabber server's hostname,
so we pull in the <TT
CLASS="LITERAL"
>InetAddress</TT
> class for convenience.</P
><P
>The script must connect to the Jabber server on 
<TT
CLASS="LITERAL"
>gnu.pipetree.com</TT
> as the <I
CLASS="EMPHASIS"
>myserver</I
>
user. We define some constants for this:</P
><P
><PRE
CLASS="SCREEN"
>public class HostAlive
{
  public static final String SERVER   = "gnu.pipetree.com";
  public static final String USER     = "myserver";
  public static final String PASSWORD = "secret";
  public static final String RESOURCE = "alive";&#13;</PRE
></P
><P
>In the same way as our Python-based CVS notification script earlier
in this chapter, we also start off by building a connection to the
Jabber server. As before, it's a two-stage process.
The first stage is to create the connection object:</P
><P
><PRE
CLASS="SCREEN"
>  public static void main(String argv[])
  {

    ConnectionBean cb=new ConnectionBean();&#13;</PRE
></P
><P
>A <TT
CLASS="LITERAL"
>ConnectionBean</TT
> object represents the connection
between your script and the Jabber server. All XML fragments;&mdash;Jabber
elements&mdash;pass through this object.</P
><P
>Then it's time to attempt the socket connection and the exchange of
XML stream headers:</P
><P
><PRE
CLASS="SCREEN"
>    InetAddress addr;

    try
    {
      cb.connect(addr=InetAddress.getByName(SERVER));
    }
    catch (java.net.UnknownHostException e)
    { 
      //from getByName()
      System.out.println("Cannot resolve " + SERVER + ":" + e.toString());
      return;
    }
    catch (java.io.IOException e)
    {
      //from connect()
       System.out.println("Cannot connect to " + SERVER);
       return;
    }&#13;</PRE
></P
><P
>We create an Internet address object in <TT
CLASS="LITERAL"
>addr</TT
>
from the hostname assigned to the <TT
CLASS="LITERAL"
>SERVER</TT
> constant.
As the creation of the <TT
CLASS="LITERAL"
>addr</TT
> instance may throw
an exception (<I
CLASS="EMPHASIS"
>unknown host</I
>), we combine the 
instantiation with the <TT
CLASS="LITERAL"
>connection()</TT
> call on our
<TT
CLASS="LITERAL"
>ConnectionBean</TT
> object which may also throw an
exception of its own&mdash;if there is a problem connecting.</P
><P
>At this stage, we're connected and have successfully exchanged the
XML stream headers with the Jabber server. So now we must authenticate:</P
><P
><PRE
CLASS="SCREEN"
>    InfoQueryBuilder iqb=new InfoQueryBuilder();
    InfoQuery iq;
    IQAuthBuilder iqAuthb=new IQAuthBuilder();

    iqb.setType("set");


    iqAuthb.setUsername(USER);
    iqAuthb.setPassword(PASSWORD);
    iqAuthb.setResource(RESOURCE);

    try
    {
      iqb.addExtension(iqAuthb.build());
    }
    catch (InstantiationException e)
    {
      //building failed ?
      System.out.println("Fatal Error on Auth object build:");
      System.out.println(e.toString());
      System.exit(0);
    }


    try
    {
      //build the full InfoQuery packet
      iq=(InfoQuery)iqb.build();
    }
    catch (InstantiationException e)
    {
      //building failed ?
      System.out.println("Fatal Error on IQ object build:");
      System.out.println(e.toString());
      return;
    }

    cb.send(iq);&#13;</PRE
></P
><P
>Yes, that's an awful lot. Let's take it piece by piece.</P
><P
><A
HREF="x7229.htm#JABTDG-CH-7-FIG-3"
>Figure 7-3</A
> shows how the objects in this 
section of code interrelate and represent various parts of what
we're trying to do&mdash;which is to construct an authorization
element. This takes the form of an IQ-set containing a 
<TT
CLASS="LITERAL"
>&#60;query/&#62;</TT
> tag qualified by the
<TT
CLASS="LITERAL"
>jabber:iq:auth</TT
> namespace like this:
<A
NAME="AEN7379"
HREF="#FTN.AEN7379"
>[2]</A
>&#13;</P
><P
><PRE
CLASS="SCREEN"
>&#60;iq type='set'&#62;
  &#60;query xmlns='jabber:iq:auth'&#62;
    &#60;username&#62;myserver&#60;/username&#62;
    &#60;password&#62;secret&#60;/password&#62;
    &#60;resource&#62;alive&#60;/resource&#62;
  &#60;/query&#62;
&#60;/iq&#62;</PRE
></P
><P
>Constructing Jabber elements with Jabberbeans uses so-called
<I
CLASS="EMPHASIS"
>builders</I
> that allow individual element
components to be created separately and then fused together
into a final structure. In our code, we use two builders:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久人人97超碰com| 91.成人天堂一区| 国产婷婷色一区二区三区| 国产一区二区三区精品视频| 精品久久久久av影院 | 日本电影欧美片| 亚洲色图视频网站| 欧美日韩精品一区二区天天拍小说| 亚洲综合久久av| 日韩一区二区三区视频| 激情综合色丁香一区二区| 国产视频一区二区三区在线观看| 不卡一区中文字幕| 亚洲福利一区二区三区| 欧美成人精品1314www| 丁香激情综合五月| 亚洲国产精品一区二区www| 欧美福利电影网| 国产精品一二三四区| 最新国产精品久久精品| 欧美日韩二区三区| 国产精品一二三四| 一个色在线综合| 久久这里只有精品视频网| jizzjizzjizz欧美| 日韩国产高清在线| 成人欧美一区二区三区| 欧美疯狂做受xxxx富婆| 成人激情小说网站| 日韩精品一二三区| 中文字幕一区二区三区视频| 欧美精品123区| 91免费精品国自产拍在线不卡| 日韩影院精彩在线| 亚洲欧美偷拍卡通变态| 欧美电影免费提供在线观看| 色狠狠色狠狠综合| 国产乱码一区二区三区| 亚洲一区二区三区爽爽爽爽爽| 久久色.com| 欧美另类久久久品| 色综合久久中文综合久久97 | 亚洲综合男人的天堂| 欧美va亚洲va| 欧美系列亚洲系列| 福利一区在线观看| 美国十次综合导航| 视频在线观看91| 亚洲九九爱视频| 日本一区二区三区在线观看| 91麻豆精品国产91久久久| 色94色欧美sute亚洲13| aaa欧美大片| 成人免费的视频| 国产综合色产在线精品| 日韩av网站在线观看| 亚洲午夜一区二区三区| 成人免费在线视频| 亚洲国产精品激情在线观看| 精品国产91亚洲一区二区三区婷婷| 在线观看视频91| 91丨porny丨国产| 成人综合婷婷国产精品久久免费| 久久成人羞羞网站| 日本不卡中文字幕| 视频一区免费在线观看| 一区二区三区四区精品在线视频 | 91在线一区二区| 成人午夜av在线| 国产福利精品一区| 国产乱理伦片在线观看夜一区| 日韩国产欧美在线播放| 午夜精品久久久久久久久久| 亚洲一区二区三区不卡国产欧美| 亚洲精品乱码久久久久久久久| 1区2区3区精品视频| 中文字幕在线视频一区| 一区视频在线播放| 亚洲欧美日韩电影| 亚洲精品成人天堂一二三| 亚洲免费观看在线视频| 亚洲精品亚洲人成人网| 自拍偷拍亚洲欧美日韩| 亚洲欧美区自拍先锋| 亚洲黄一区二区三区| 亚洲综合自拍偷拍| 亚洲bt欧美bt精品| 免费观看一级欧美片| 精品在线观看视频| 国产aⅴ精品一区二区三区色成熟| 韩国在线一区二区| 丰满白嫩尤物一区二区| 99久久精品免费看| 精品视频1区2区| 欧美精品粉嫩高潮一区二区| 欧美tk—视频vk| 国产免费观看久久| 亚洲一区国产视频| 日韩精品福利网| 国产高清亚洲一区| 97se亚洲国产综合在线| 欧美二区三区91| 久久久久久久电影| 亚洲精品一二三区| 美腿丝袜在线亚洲一区| 国产成人一级电影| 色吧成人激情小说| 欧美白人最猛性xxxxx69交| 国产视频911| 曰韩精品一区二区| 美女诱惑一区二区| av成人免费在线观看| 91麻豆精品国产91| 国产精品久久久久久久久久免费看| 一区二区三区精密机械公司| 免费三级欧美电影| 99国产精品久| 日韩美女主播在线视频一区二区三区| 26uuu久久天堂性欧美| 亚洲自拍偷拍av| 国产精品夜夜爽| 欧美午夜精品久久久久久超碰 | 欧美男女性生活在线直播观看| 欧美成人伊人久久综合网| 成人免费在线观看入口| 精品在线亚洲视频| 在线观看免费一区| 国产日韩一级二级三级| 亚洲国产精品一区二区尤物区| 国产一区福利在线| 欧美精选一区二区| 国产精品久久久久影视| 日韩电影免费一区| 日本高清免费不卡视频| 久久久99精品久久| 日韩精品成人一区二区在线| 91污在线观看| 国产人成一区二区三区影院| 日韩高清不卡一区| 91久久精品一区二区三区| 国产午夜精品一区二区三区视频| 天天av天天翘天天综合网| 91蝌蚪porny九色| 久久精品欧美日韩| 精品影院一区二区久久久| 欧美日韩一区高清| 亚洲美女在线国产| 国产成人精品一区二| 日韩精品中午字幕| 天堂va蜜桃一区二区三区漫画版| 91片在线免费观看| 亚洲欧洲在线观看av| 成人做爰69片免费看网站| 久久久久久久久久久久久久久99 | 制服丝袜中文字幕亚洲| 亚洲精品成人悠悠色影视| av电影天堂一区二区在线| 亚洲国产岛国毛片在线| 国产精品99久久久久久久女警| 日韩一区二区三区四区五区六区| 一二三区精品视频| 欧美亚洲禁片免费| 亚洲制服丝袜一区| 欧美又粗又大又爽| 一区二区三区国产精品| 欧美在线免费播放| 亚洲一二三四在线观看| 91高清视频在线| 亚洲成人精品一区二区| 欧美日韩国产免费| 丝袜美腿一区二区三区| 欧美二区三区91| 九色porny丨国产精品| 亚洲精品在线一区二区| 美女免费视频一区二区| 精品国精品自拍自在线| 国产在线麻豆精品观看| 久久久精品影视| av激情成人网| 亚洲电影视频在线| 欧美一区二区网站| 激情欧美一区二区| 国产精品女主播在线观看| 视频一区在线视频| 欧美午夜一区二区三区免费大片| 亚洲一区二区四区蜜桃| 91精品国产日韩91久久久久久| 日韩av电影天堂| 精品国内二区三区| 99vv1com这只有精品| 午夜精品aaa| 久久久久久电影| 色综合中文字幕国产 | 欧美私模裸体表演在线观看| 亚洲777理论| 久久久亚洲午夜电影| 丁香亚洲综合激情啪啪综合| 亚洲女同一区二区| 日韩欧美一区二区免费| 国产成人超碰人人澡人人澡|