青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

xiaoguozi's Blog
Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····
     摘要: JavaSript模塊化    在了解AMD,CMD規范前,還是需要先來簡單地了解下什么是模塊化,模塊化開發?    模塊化是指在解決某一個復雜問題或者一系列的雜糅問題時,依照一種分類的思維把問題進行系統性的分解以之處理。模塊化是一種處理復雜系統分解為代碼結構更合理,可維護性更高的可管理的模塊的方式。可以想象一個巨大的...  閱讀全文
posted @ 2014-09-10 18:09 小果子 閱讀(2161) | 評論 (0)編輯 收藏

/**

* Shiro-1.2.2內置的FilterChain

* @see =============================================================================================================================

* @see 1)Shiro驗證URL時,URL匹配成功便不再繼續匹配查找(所以要注意配置文件中的URL順序,尤其在使用通配符時)

* @see   故filterChainDefinitions的配置順序為自上而下,以最上面的為準

* @see 2)當運行一個Web應用程序時,Shiro將會創建一些有用的默認Filter實例,并自動地在[main]項中將它們置為可用

* @see   自動地可用的默認的Filter實例是被DefaultFilter枚舉類定義的,枚舉的名稱字段就是可供配置的名稱

* @see   anon---------------org.apache.shiro.web.filter.authc.AnonymousFilter

* @see   authc--------------org.apache.shiro.web.filter.authc.FormAuthenticationFilter

* @see   authcBasic---------org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter

* @see   logout-------------org.apache.shiro.web.filter.authc.LogoutFilter

* @see   noSessionCreation--org.apache.shiro.web.filter.session.NoSessionCreationFilter

* @see   perms--------------org.apache.shiro.web.filter.authz.PermissionAuthorizationFilter

* @see   port---------------org.apache.shiro.web.filter.authz.PortFilter

* @see   rest---------------org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter

* @see   roles--------------org.apache.shiro.web.filter.authz.RolesAuthorizationFilter

* @see   ssl----------------org.apache.shiro.web.filter.authz.SslFilter

 *@see   user---------------org.apache.shiro.web.filter.authz.UserFilter

* @see =============================================================================================================================

* @see 3)通常可將這些過濾器分為兩組

* @see   anon,authc,authcBasic,user是第一組認證過濾器

* @see   perms,port,rest,roles,ssl是第二組授權過濾器

* @see   注意user和authc不同:當應用開啟了rememberMe時,用戶下次訪問時可以是一個user,但絕不會是authc,因為authc是需要重新認證的

* @see                      user表示用戶不一定已通過認證,只要曾被Shiro記住過登錄狀態的用戶就可以正常發起請求,比如rememberMe

* @see                      說白了,以前的一個用戶登錄時開啟了rememberMe,然后他關閉瀏覽器,下次再訪問時他就是一個user,而不會authc

* @see =============================================================================================================================

* @see 4)舉幾個例子

* @see   /admin=authc,roles[admin]      表示用戶必需已通過認證,并擁有admin角色才可以正常發起'/admin'請求

* @see   /edit=authc,perms[admin:edit]  表示用戶必需已通過認證,并擁有admin:edit權限才可以正常發起'/edit'請求

* @see   /home=user                     表示用戶不一定需要已經通過認證,只需要曾經被Shiro記住過登錄狀態就可以正常發起'/home'請求

* @see =============================================================================================================================

* @see 5)各默認過濾器常用如下(注意URL Pattern里用到的是兩顆星,這樣才能實現任意層次的全匹配)

* @see   /admins/**=anon             無參,表示可匿名使用,可以理解為匿名用戶或游客

* @see   /admins/user/**=authc       無參,表示需認證才能使用

* @see   /admins/user/**=authcBasic  無參,表示httpBasic認證

* @see   /admins/user/**=user        無參,表示必須存在用戶,當登入操作時不做檢查

* @see   /admins/user/**=ssl         無參,表示安全的URL請求,協議為https

* @see   /admins/user/**=perms[user:add:*]

* @see       參數可寫多個,多參時必須加上引號,且參數之間用逗號分割,如/admins/user/**=perms["user:add:*,user:modify:*"]

* @see       當有多個參數時必須每個參數都通過才算通過,相當于isPermitedAll()方法

* @see   /admins/user/**=port[8081]

* @see       當請求的URL端口不是8081時,跳轉到schemal://serverName:8081?queryString

* @see       其中schmal是協議http或https等,serverName是你訪問的Host,8081是Port端口,queryString是你訪問的URL里的?后面的參數

* @see   /admins/user/**=rest[user]

* @see       根據請求的方法,相當于/admins/user/**=perms[user:method],其中method為post,get,delete等

* @see   /admins/user/**=roles[admin]

* @see       參數可寫多個,多個時必須加上引號,且參數之間用逗號分割,如/admins/user/**=roles["admin,guest"]

* @see       當有多個參數時必須每個參數都通過才算通過,相當于hasAllRoles()方法

* @see

http://liureying.blog.163.com/blog/static/61513520136205574873/

spring中 shiro logout 配置方式
有兩種方式實現logout
1. 普通的action中 實現自己的logout方法,取到Subject,然后logout
這種需要在ShiroFilterFactoryBean 中配置 filterChainDefinitions
對應的action的url為anon
<property name="filterChainDefinitions">
            <value>
                # some example chain definitions:
                /index.htm = anon
                /logout = anon
                /unauthed = anon
                /console/** = anon
                /css/** = anon
                /js/** = anon
                /lib/** = anon
                /admin/** = authc, roles[admin]
                /docs/** = authc, perms[document:read]
                /** = authc
                # more URL-to-FilterChain definitions here
            </value>

2. 使用shiro提供的logout filter
需要定義 相應的bean
<bean id="logout" class="org.apache.shiro.web.filter.authc.LogoutFilter">
        <property name="redirectUrl" value="/loginform" />
    </bean>

然后將相應的url filter配置為logout如下
<property name="filterChainDefinitions">
            <value>
                # some example chain definitions:
                /index.htm = anon
                /logout = logout
                /unauthed = anon
                /console/** = anon
                /css/** = anon
                /js/** = anon
                /lib/** = anon
                /admin/** = authc, roles[admin]
                /docs/** = authc, perms[document:read]
                /** = authc
                # more URL-to-FilterChain definitions here
            </value>

http://kdboy.iteye.com/blog/1154652
http://blog.csdn.net/peterwanghao/article/details/8084126
http://www.oschina.net/question/593111_62454
http://blog.csdn.net/shadowsick/article/details/17265625

posted @ 2014-05-14 11:57 小果子 閱讀(72246) | 評論 (4)編輯 收藏

確保安裝了python,大部分安裝失敗都是由于python版本過低導致。安裝之前,升級python版本,升級步驟 http://www.tomtalk.net/wiki/Python

[root@SNDA-192-168-15-161 ~]# python -V
Python 2.7.3
開始安裝:

1).下載nodejs到本地并解壓縮
[root@SNDA-192-168-15-161 node]# wget http://nodejs.org/dist/v0.9.0/node-v0.9.0.tar.gz
[root@SNDA-192-168-15-161 node]# tar zxvf node-v0.9.0.tar.gz
2).進入到該目錄編譯和安裝
[root@SNDA-192-168-15-161 node-v0.9.0]# cd node-v0.9.0
[root@SNDA-192-168-15-161  node-v0.9.0]# ./configure --prefix=/usr/local/node/0.9.0
這里安裝在了/usr/local/node/0.9.0目錄下
[root@SNDA-192-168-15-161 node-v0.9.0]# make
[root@SNDA-192-168-15-161 node-v0.9.0]# make install
3).配置NODE_HOME
[root@SNDA-192-168-15-161 node-v0.9.0]# vi /etc/profile
在export PATH USER 。。。一行的上面添加如下內容,并將NODE_HOME/bin設置到系統path中
#set for nodejs
export NODE_HOME=/usr/local/node/0.9.0
export PATH=$NODE_HOME/bin:$PATH
保存退出后執行如下命令,使剛才的配置生效
[root@SNDA-192-168-15-161 node-v0.9.0]# source /etc/profile

執行node -h命令驗證設置成功

[root@SNDA-192-168-15-161 ~]# node -h
Usage: node [options] [ -e script | script.js ] [arguments]
       node debug script.js [arguments]

Options:
  -v, --version        print node's version
  -e, --eval script    evaluate script
  -p, --print          print result of --eval
  -i, --interactive    always enter the REPL even if stdin
                       does not appear to be a terminal
  --no-deprecation     silence deprecation warnings
  --trace-deprecation  show stack traces on deprecations
  --v8-options         print v8 command line options
  --max-stack-size=val set max v8 stack size (bytes)

Environment variables:
NODE_PATH              ':'-separated list of directories
                       prefixed to the module search path.
NODE_MODULE_CONTEXTS   Set to 1 to load modules in their own
                       global contexts.
NODE_DISABLE_COLORS    Set to 1 to disable colors in the REPL

Documentation can be found at http://nodejs.org/
至此安裝設置完畢。

運行一個簡單的node應用程序 + socket.io,首先需要安裝socket.io模塊

[root@SNDA-192-168-15-161 ~]# npm install socket.io

[root@SNDA-192-168-15-161 ~]# vi app.js

var http=require('http');
var io =require('socket.io');
var server = http.createServer(function(req,res){

    res.writeHead(200,{'Content-Type':'text/plain'});
    res.end('Hello world');
});

server.listen(process.argv[2]);

var socket = io.listen(server);
socket.on('connection',function(client){
    console.log('client has connected');
    client.on('message',function(){ });
});
 

[root@SNDA-192-168-15-161 ~]# nodejs ./app.js 8001 &

[root@SNDA-192-168-15-161 ~]# nodejs ./app.js 8002 &

[root@SNDA-192-168-15-161 ~]# nodejs ./app.js 8003 &

[root@SNDA-192-168-15-161 ~]# nodejs ./app.js 8004 &

更詳細的參照socket.io的官網的例子。

websocket與node.js的完美結合

http://wanshuiqianshan.iteye.com/blog/1618498

posted @ 2014-01-20 10:11 小果子 閱讀(606) | 評論 (0)編輯 收藏

前言: Nagios是相當不錯的監控工具,被稱作是“監控之神”,但同樣也有“難搞死”頭銜。發揮Nagios一切魅力的都是他的插件,正因為豐富多樣的插件讓 nagios有血有肉。監控的內容不斷在變化,插件也不斷變化,默認的一些插件可能越來越不能滿足需求,這個時候就要自己來寫些插件了。

以下就是用我的第一個Nagios插件來說明編寫方法和我遇到一些問題調試方法。如果你有耐心可以通篇看完,應該對第一次寫的人來說會有很大幫助(如果你看不懂,可能是我寫得不清楚 那就沒辦法了 表達能力有限)

需求:

監控普通磁盤的健康狀況(普通磁盤以外還有RAID、陣列的監控是不同方法來做的,這里先不討論,先從最簡單的入手),定期進行檢測,并進行報警,報警內容磁盤是否正常,不正常是什么狀態。

分析編寫過程:

我寫腳本的前提都是先從手動成功完成,再到自動化(我想其它人的思路應該都一樣的)

1、找到監控磁盤的方法

通過一番查找 smartctl 這個命令是比較不錯的  centos slackware一般的默認都有這個

smartctl -H /dev/sda  只檢測狀態

smartctl -i /dev/sda   只檢測硬盤信息

smartctl -a /dev/sda 檢測所有信息

2、獲取檢測信息

# smartctl -H /dev/sda

smartctl version 5.38 [x86_64-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen

Home page is http://smartmontools.sourceforge.net/

SMART Health Status: OK

關鍵的最后一行說明磁盤的情況       截取  DISK_HEALTH=`smartctl -H /dev/sda | tail -1 | cut -d: -f2-  `

3、 進行關鍵判斷

據我所知道的 smartctl 5.38  是出以上的結果 為OK

而 smartctl 5.39 是出以下結果

=== START OF READ SMART DATA SECTION ===

SMART overall-health self-assessment test result: PASSED

關鍵詞是PASSED

所以要分析判斷多種情況

4、腳本編寫步驟

1)了解nagios插件編寫規范

Nagios的插件可以用腳本(shell、Perl)C編譯后的可執行程序,但必須滿足以下兩件事:

A、既出時有一個返回值

B、至少向標準輸出設備(STDOUT)輸出一行文件。(但也不能太大,默認是4K,如果想大些,修改源程序吧,方法搜。)

返回值定義:

Plugin Return Code Service State DISK State
0 OK OK 或者PASSED
1 WARNING 插件警告  DISK報警只分OK或者CRITICAL
2 CRITICAL  DISK檢測非OK 或者PASSED
3 UNKNOWN  未知狀態

2)插件編寫SHELL速成法

在這里我選用我最熟悉的SHELL進行腳本編寫 ,

我的速成法就是,直接去nagios exchange 去下比較成熟的比較簡單的shell腳本,這樣會從一開始借鑒別人好的方法,養成好的習慣,而且只要你有一點SHELL編程經驗也可以很快寫得像一個老手。(不過不要把自己搞暈了就行)

3)以下是我的check_disk_health.sh

#!/bin/bash
# ========================================================================================
# disk health  plugin for Nagios
#
# Written by    : Ajian
# Release       : 1.2.0
# Creation date : 2009-07-28
# Revision date : 2009-07-30
# Description   : Nagios plugin (script) to check disk health .
#               This script has been designed and written on Linux System.
#
# USAGE         : ./check_disk_health.sh [-d (disk)]
#
# Exemple: ./check_cpu_stats.sh
#          ./check_cpu_stats.sh -d /dev/sda
#
#
# HISTORY :
#     Release   |     Date      |    Authors            |       Description
# --------------+---------------+----------------------+-----------------------------------
#  1.0.0        | 2009-07-28     | Ajian                | Create the script
#  1.2.0        | 2009-07-30    |  Ajian                | modify the script and run well ,fix a bug.
# -----------------------------------------------------------------------------------------
# NOTICE:
#-----------------------------------------------------------------------------------------
#     You should have the root Permissions ,You can use sudo to realize .
# -----------------------------------------------------------------------------------------                                  
 
# Nagios return codes
#定義 nagios返回的狀態變量
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3     
 
# Paths to commands used in this script.  These may have to be modified to match your system setup.
# 定義關鍵的核心命令smartctl 路徑 如果你的系統不是這個地址,請更改。 以下注釋的是調試的信息,是自動獲取命令路徑的方法。
SMARTCTL="/usr/sbin/smartctl"
#SMARTCTL=`which smartctl`
#if [ $? -ne 0 ]; then
#        echo " smartctl is found in $SMARTCTL ; Go on ... "
#        echo "smartctl the command cannot find"
#        exit $STATE_UNKNOWN
#fi
# Plugin parameters value if not define
# 定義默認的檢測硬盤
CHECK_DISK="/dev/sda"                 
 
# Plugin variable description
# 插件描述信息
PROGNAME=$(basename $0)
RELEASE="Revision 1.2.0"
AUTHOR="(c) 2009 Ajian ()"
 
# Functions plugin usage
# 插件的使用方法函數
print_release() {
    echo "$RELEASE $AUTHOR"
}                         
 
print_usage() {
        echo ""
        echo "$PROGNAME $RELEASE - Disk health check script for Nagios"
        echo ""
        echo "Usage: check_disk_health.sh -d /dev/sdb"
        echo ""
        echo "  -d  the disk (/dev/sda) "
        echo "          not the Hard disk partition(sda2 is wrong)"
        echo "  -v  check the version"
        echo "  -h  Show this page"
        echo ""
    echo "Usage: $PROGNAME"
    echo "Usage: $PROGNAME --help"
    echo ""
    exit 0
}                                                                                                         
 
print_help() {
        print_usage
        echo ""
        echo "This plugin will check disk health  "
        echo ""
        exit 0
}                                                 
 
# Parse parameters
# 傳遞參數
while [ $# -gt 0 ]; do
    case "$1" in
        -h | --help)
            print_help
            exit $STATE_OK
            ;;
        -v | --version)
                print_release
                exit $STATE_OK
                ;;
        -d | --disk)
                shift
                CHECK_DISK=$1
                #判斷磁盤是否存在
                if [ ! -b $CHECK_DISK ];then
                        echo "$CHECK_DISK is no exsit,Please change it "
                        exit $STATE_CRITICAL
                fi
                ;;
        *)  echo "Unknown argument: $1"
            print_usage
            exit $STATE_UNKNOWN
            ;;
        esac
shift
done
 
#根據不同的操作進行不同的操作,這里暫時只支持Linux
case `uname` in
        Linux )
             #最核心的部分 前面都是些腳本的基本功能 一個框架 因為第一個腳本牽扯到了很多東西,雖然功能很簡單,
             #但折騰了我不少,在后面的分析中會具體說到 總之注意sudo用法 腳本一開始就有說哦
                DISK_HEALTH=`$SMARTCTL  -H $CHECK_DISK | tail -1 | cut -d: -f2- `
                #DISK_HEALTH="OK"
        #       DISK_INFO=`/usr/bin/sudo $SMARTCTL -i $CHECK_DISK | grep "Device:"`
                if [ "$DISK_HEALTH" = " OK" ]|| [  "$DISK_HEALTH" = " PASSED" ];then
                        echo "OK - $CHECK_DISK status is $DISK_HEALTH "
                        #echo "OK - $CHECK_DISK status is $DISK_HEALTH | $DISK_INFO"
                        exit $STATE_OK
                else
                        echo "CRITICAL - $CHECK_DISK status is $DISK_HEALTH "
                        #echo "CRITICAL - $CHECK_DISK status is $DISK_HEALTH | $DISK_INFO"
                        exit $STATE_CRITICAL
        fi
            ;;
 
        *)              echo "UNKNOWN: `uname` not yet supported by this plugin. Coming soon !"
                        exit $STATE_UNKNOWN
            ;;
        esac4)運行腳本

(注意:在最開始自己寫的腳本是沒有sudo的,以上腳本是已經調試過后的,還需要配置一些其它的東西,慢慢看吧)
給與腳本執行權限,手動執行

# ./check_disk_health.sh
OK – /dev/sda status is  OK

結果正確了,其實這個時候,高興得太早了。 我先不說問題、繼續正常的一般流程。

5、配置Nagios 調用插件

1)在遠程NRPE 被監控服務器上修改nrpe.conf
# vim /usr/local/nagios/etc/nrpe.cfg
添加 command[check_sda_health]=/usr/local/nagios/libexec/check_disk_health.sh -d /dev/sda
(注意這里了,先提醒下,這里是錯誤的,一般是正確的,是這個腳本的特殊性造成的)

2)在Nagios 監控服務器上添加一些配置

定義服務

define service{
use                             Disk-Health
host_name                       DB-56
servicegroups                   Disk-Health
service_description            check sda disk health
contact_groups                  admins
check_command               check_nrpe!check_sda_health
}
如果像上面定義一個服務 那么就要注意相關的定義了 ,
定義Disk-Health 模版  把硬盤檢測定義一個模版會比較好控制,因為硬盤的檢測不像其它服務一樣需要準確的及時性反正檢測得太多可能會造成壓力,一般一天檢測幾次就夠了。
定義DB-56 主機需要定義
定義組 admins
以上這些只要安裝過nagios 一般都知道的了 只是強調下模版的單獨定義

3)通過WEB控制檢測 查看結果

結果是失敗 報警CRITCTL 但是狀態里面的信息都是空的  CRITCTL – /dev/sda status is

6、調試

從Nagios的遠程監控來看是失敗的,并且沒有獲取到任務有用的信息。

分析可以看到,說明nrpe調用  這個變量獲取到的是為空的信息
DISK_HEALTH=`$SMARTCTL -H $CHECK_DISK | tail -1 | cut -d: -f2- `
即是空的 只有一個原因,肯定是沒有執行 如果執行了 肯定會有字段 不管這個字段是否相符。
但是手動執行是沒有問題。
經過對smartctl的查看 原來這個命令是只允許root進行調用的。
現在需要解決的問題是:非root 用戶 如何遠程調用含有需要有root權限命令的腳本進行監控。
(不要小看這一句話,每一個詞都是一個需要攻克的地方)
以下是調試步驟:
1)非root用戶
NRPE插件是用nagios這個用戶來執行的 所以要得到真實的情況需要
A: su nagios   再執行腳本 (這個方法比較好)
B: sudo -u nagios ./check_disk_health.sh
結果:

sudo -u nagios ./check_disk_health.sh
CRITICAL – /dev/sda status is
跟遠程的結果是一樣的了 沒有信息
2)需要有root權限
需要root權限只有一個辦法就是用sudo
將DISK_HEALTH=`$SMARTCTL -H $CHECK_DISK | tail -1 | cut -d: -f2- `
改為DISK_HEALTH=`/usr/bin/sudo $SMARTCTL -H $CHECK_DISK | tail -1 | cut -d: -f2- `
(最后發現這時加sudo 并不是關鍵 關鍵是很行腳本時用sudo )
結果:sudo -u nagios ./check_disk_health.sh
Password:
需要輸入密碼  sudo不用輸入密碼的方法
修改sudo配置文件
執行 visudo
添加
nagios ALL=(ALL) NOPASSWD:/usr/local/nagios/libexec/check_disk_health.sh
建議:最好進行sudo的一些控制,很多網方法就是nagios ALL=NOPASSWD:ALL
結果:
su nagios
/usr/bin/sudo check_disk_health.sh
OK – /dev/sda status is OK
那么在nrpe.conf配置文件中需要添加sudo
command[check_sda_health]=/usr/bin/sudo /usr/local/nagios/libexec/check_disk_health.sh
最開始那個是錯誤的 注意啊 這個是需要添加/usr/bin/sudo 就是說只要腳本中涉及到提升到root權限的命令那么就要用這個
3)遠程調用
遠程調用方法:./check_nrpe -H 192.168.0.56 -c check_sda_health
同上如果想模擬真實環境請切換到相應的執行用戶 su nagios 再執行以上操作
結果:   NRPE: Unable to read output
這個錯誤的原因一定要明白,之所以報這個錯意思是說NRPE沒有獲取到任何信息,也說是寫腳本之前說的其中第二條規范
問題:在沒有任何信息的情況下怎么來獲取NRPE執行的日志呢
就是要確定問題在哪,經過一大番的查找眼睛偶爾看到一個有趣的小方法
修復nrpe.conf配置文件 在要檢查的命令后面添加>>/tmp/output 2>&1 將錯誤導出到文件中進行查看
command[check_sda_health]=/usr/bin/sudo /usr/local/nagios/libexec/check_disk_health.sh -d /dev/sda >>/tmp/output 2>&1
重記nrpe服務
遠程調用 結果當然還是NRPE: Unable to read output
查看/tmp/output
sudo: sorry, you must have a tty to run sudo
有錯誤就簡單了  原來這個是默認不允許sudo 在后端進行
visudo
注釋Defaults requiretty 就OK了
結果通過WEB查看也正確了。
(注意:注釋后 檢測仍然會是Unable 不過看/tmp/output就會有正確的結果,所以有正確的結果后,一定要去掉 >>/tmp/outpt 2>&1 信息都導到文件中了 nagios還是得不到任何消息。)

一個腳本執行成功后,就是大批量應用,用生產環境驗證,出現問題繼續調試。

以上為所有的分析調試方法。如果你看到最后一步了,說明你很有耐心,你也一定會成功的,至于寫得好與壞、對與錯請盡管說,這不會影響你的成功。呵呵。
轉自:
http://blog.chinaunix.net/uid-20592013-id-2436813.html
posted @ 2013-09-03 09:39 小果子 閱讀(1422) | 評論 (0)編輯 收藏
     摘要: 一、Nagios簡介   Nagios是一款開源的電腦系統和網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復后發出正常的郵件或短信通知。   Nagios原名為NetSaint,由Ethan Galstad開發并維護至今。NAGIOS是一個縮寫形式: "Nagio...  閱讀全文
posted @ 2013-09-02 14:26 小果子 閱讀(667) | 評論 (0)編輯 收藏
僅列出標題  下一頁
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产精品一区二区三区| 久久久亚洲综合| 亚洲嫩草精品久久| 亚洲欧洲在线一区| 女同性一区二区三区人了人一 | 久久久久久久网站| 久久亚洲综合| 久久久久久网址| 老司机午夜免费精品视频 | 性欧美在线看片a免费观看| 亚洲一区二区视频在线观看| 亚洲综合国产| 亚洲在线播放电影| 亚洲欧洲日产国产网站| 91久久久在线| av成人国产| 性做久久久久久久免费看| 久久精品三级| 亚洲高清毛片| 一区二区三区产品免费精品久久75 | 久久精品亚洲精品国产欧美kt∨| 久久精品国产77777蜜臀| 蜜臀av性久久久久蜜臀aⅴ| 欧美日韩亚洲国产一区| 国产欧美日韩在线观看| 亚洲黄色毛片| 午夜精品一区二区三区在线视| 久久天天躁夜夜躁狠狠躁2022| 亚洲国产专区校园欧美| 午夜国产欧美理论在线播放 | 国产午夜亚洲精品羞羞网站| 亚洲第一搞黄网站| 亚洲伊人伊色伊影伊综合网| 噜噜噜噜噜久久久久久91| 亚洲精品少妇网址| 久久成人精品无人区| 欧美日韩专区| 亚洲精品乱码久久久久久日本蜜臀| 亚洲欧美制服中文字幕| 亚洲国产天堂久久国产91| 久久成人一区二区| 国产精品乱码妇女bbbb| 91久久精品日日躁夜夜躁欧美| 欧美一区二区三区久久精品茉莉花 | 亚洲午夜在线观看视频在线| 中文国产亚洲喷潮| 99热精品在线| 免费成人高清| 亚洲影院高清在线| 欧美日韩免费观看一区=区三区| 一区二区三区无毛| 久久久一区二区三区| 亚洲一区三区视频在线观看| 欧美精品性视频| 亚洲人成网站在线播| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲深夜福利在线| 欧美日韩日日夜夜| 亚洲精选在线观看| 香蕉亚洲视频| 亚洲区一区二| 久久综合中文色婷婷| 国产一区欧美| 久久久国产精彩视频美女艺术照福利 | 欧美激情一区二区在线| 136国产福利精品导航网址应用| 久久国产精品久久w女人spa| 亚洲欧美美女| 国产日韩亚洲| 久久亚洲免费| 久久精品视频在线观看| 一区二区在线视频播放| 免费久久99精品国产自| 男女激情视频一区| 欧美日韩黄视频| 99视频有精品| 一区二区三区免费观看| 国产精品久久久久婷婷| 欧美在线播放视频| 久久成人国产| 亚洲人成绝费网站色www| 亚洲激情在线播放| 欧美亚男人的天堂| 欧美有码视频| 久久人人爽人人爽爽久久| 亚洲欧洲精品天堂一级| 亚洲国产精品黑人久久久| 欧美日韩色一区| 久久精品日产第一区二区| 久久久国产精品一区| 亚洲精品一区二区三区蜜桃久| 99pao成人国产永久免费视频| 国产精品久久久久久超碰| 久久成人精品电影| 久久综合九色九九| 亚洲天堂av综合网| 欧美中文字幕不卡| 日韩一级在线| 亚欧美中日韩视频| 日韩午夜在线电影| 性久久久久久久| 9人人澡人人爽人人精品| 性欧美暴力猛交另类hd| 亚洲激情在线| 亚洲欧美一区二区精品久久久| 亚洲第一综合天堂另类专| 99精品热视频| 亚洲第一精品夜夜躁人人躁| 在线视频欧美日韩| 亚洲国产精品综合| 午夜久久久久久久久久一区二区| 亚洲欧洲在线免费| 欧美在线观看日本一区| 一区二区三区四区国产| 久久精品中文| 欧美一区二区三区免费看| 欧美激情日韩| 欧美xart系列在线观看| 国产欧美日韩精品一区| 日韩视频在线观看| 久久久久国产成人精品亚洲午夜| 欧美激情 亚洲a∨综合| 国产精品亚洲综合色区韩国| 蜜乳av另类精品一区二区| 国产精品男gay被猛男狂揉视频| 欧美激情成人在线| 国内伊人久久久久久网站视频| 一区二区日韩精品| 99国产精品一区| 美国十次了思思久久精品导航| 久久精品国产69国产精品亚洲| 国产精品mm| 一本色道久久99精品综合| 亚洲精品字幕| 免费日韩视频| 欧美成人精品在线播放| 国产午夜亚洲精品不卡| 亚洲欧美日韩成人高清在线一区| 亚洲视频国产视频| 欧美另类人妖| 99成人精品| 在线一区二区三区四区| 欧美日韩国产大片| 亚洲精品免费一区二区三区| 亚洲日本视频| 欧美日本精品| 亚洲少妇自拍| 久久国产精品毛片| 狠狠综合久久av一区二区老牛| 久久精品亚洲精品| 久热精品视频在线观看一区| 精品51国产黑色丝袜高跟鞋| 久久久噜噜噜久久久| 亚洲福利视频一区二区| 99热精品在线| 国产精品美女久久久免费| 欧美一级一区| 亚洲福利专区| 亚洲图片自拍偷拍| 国产精品视区| 久久蜜桃精品| 亚洲精品字幕| 久久九九精品99国产精品| 亚洲第一二三四五区| 欧美日韩国产一区二区三区| 中文国产一区| 久久久久久夜| 99精品国产在热久久下载| 国产精品私人影院| 乱码第一页成人| 一本色道久久综合亚洲二区三区 | 欧美99久久| 一区二区三区精品视频| 久久久久一区二区| 99精品视频免费观看视频| 国产精品一区二区久久久| 久久婷婷色综合| 亚洲视频图片小说| 玖玖在线精品| 亚洲欧美www| 亚洲欧洲综合另类| 国产精品免费一区二区三区在线观看| 久久不射中文字幕| 夜夜躁日日躁狠狠久久88av| 久久九九久精品国产免费直播 | 亚洲电影下载| 国产精品第一页第二页第三页| 国产色爱av资源综合区| 亚洲一区二区成人在线观看| 老**午夜毛片一区二区三区| 亚洲精品日韩综合观看成人91| 国产精品久久久久秋霞鲁丝| 美女日韩在线中文字幕| 午夜国产一区| 亚洲精品少妇| 亚洲国产精品999| 久久久久9999亚洲精品| 亚洲午夜激情网站| 亚洲人成网站影音先锋播放| 狠狠干成人综合网|