久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

用PHP構(gòu)建一個簡易監(jiān)視引擎

瀏覽:79日期:2024-02-10 08:10:38

摘要:在本文中,讓我們共同探討基于PHP語言構(gòu)建一個基本的服務(wù)器端監(jiān)視引擎的諸多技巧及注意事項,并給出完整的源碼實現(xiàn)。

一. 更改工作目錄的問題

當(dāng)你編寫一個監(jiān)視程序時,讓它設(shè)置自己的工作目錄通常更好些。這樣以來,如果你使用一個相對路徑讀寫文件,那么,它會根據(jù)情況自動處理用戶期望存放文件的位置。總是限制程序中使用的路徑盡管是一種良好的實踐;但是,卻失去了應(yīng)有的靈活性。因此,改變你的工作目錄的最安全的方法是,既使用chdir()也使用chroot()。

chroot()可用于PHP的CLI和CGI版本中,但是卻要求程序以根權(quán)限運行。chroot()實際上把當(dāng)前進程的路徑從根目錄改變到指定的目錄。這使得當(dāng)前進程只能執(zhí)行存在于該目錄下的文件。經(jīng)常情況下,chroot()由服務(wù)器作為一個'安全設(shè)備'使用以確保惡意代碼不會修改一個特定的目錄之外的文件。請牢記,盡管chroot()能夠阻止你訪問你的新目錄之外的任何文件,但是,任何當(dāng)前打開的文件資源仍然能夠被存取。例如,下列代碼能夠打開一個日志文件,調(diào)用chroot()并切換到一個數(shù)據(jù)目錄;然后,仍然能夠成功地登錄并進而打開文件資源:

<?php$logfile = fopen('/var/log/chroot.log', 'w');chroot('/Users/george');fputs($logfile, 'Hello From Inside The Chrootn');?>

如果一個應(yīng)用程序不能使用chroot(),那么你可以調(diào)用chdir()來設(shè)置工作目錄。例如,當(dāng)代碼需要加載特定的代碼(這些代碼能夠在系統(tǒng)的任何地方被定位時),這是很有用的。注意,chdir()沒有提供安全機制來防止打開未授權(quán)的文件。

二. 放棄特權(quán)

當(dāng)編寫Unix守護程序時,一種經(jīng)典的安全預(yù)防措施是讓它們放棄所有不需要的特權(quán);否則,擁有不需要的特權(quán)容易招致不必要的麻煩。在代碼(或PHP本身)中含有漏洞的情況下,通過確保一個守護程序以最小權(quán)限用戶身份運行,往往能夠使損失減到最小。

一種實現(xiàn)此目的的方法是,以非特權(quán)用戶身份執(zhí)行該守護程序。然而,如果程序需要在一開始就打開非特權(quán)用戶無權(quán)打開的資源(例如日志文件,數(shù)據(jù)文件,套接字,等等)的話,這通常是不夠的。

如果你以根用戶身份運行,那么你能夠借助于posix_setuid()和posiz_setgid()函數(shù)來放棄你的特權(quán)。下面的示例把當(dāng)前運行程序的特權(quán)改變?yōu)橛脩鬾obody所擁有的那些權(quán)限:

$pw=posix_getpwnam('nobody');posix_setuid($pw['uid']);posix_setgid($pw['gid']);

就象chroot()一樣,任何在放棄特權(quán)之前被打開的特權(quán)資源都會保持為打開,但是不能創(chuàng)建新的資源。

三. 保證排它性

你可能經(jīng)常想實現(xiàn):一個腳本在任何時刻僅運行一個實例。為了保護腳本,這是特別重要的,因為在后臺運行容易導(dǎo)致偶然情況下調(diào)用多個實例。

保證這種排它性的標(biāo)準(zhǔn)技術(shù)是,通過使用flock()來讓腳本鎖定一個特定的文件(經(jīng)常是一個加鎖文件,并且被排它式使用)。如果鎖定失敗,該腳本應(yīng)該輸出一個錯誤并退出。下面是一個示例:

$fp=fopen('/tmp/.lockfile','a');if(!$fp || !flock($fp, LOCK_EX | LOCK_NB)) { fputs(STDERR, 'Failed to acquire lockn'); exit; }/*成功鎖定以安全地執(zhí)行工作*/

注意,有關(guān)鎖機制的討論涉及較多內(nèi)容,在此不多加解釋。

四. 構(gòu)建監(jiān)視服務(wù)

在這一節(jié)中,我們將使用PHP來編寫一個基本的監(jiān)視引擎。因為你不會事先知道怎樣改變,所以你應(yīng)該使它的實現(xiàn)既靈活又具可能性。該記錄程序應(yīng)該能夠支持任意的服務(wù)檢查(例如,HTTP和FTP服務(wù))并且能夠以任意方式(通過電子郵件,輸出到一個日志文件,等等)記錄事件。你當(dāng)然想讓它以一個守護程序方式運行;所以,你應(yīng)該請求它輸出其完整的當(dāng)前狀態(tài)。

一個服務(wù)需要實現(xiàn)下列抽象類:

abstract class ServiceCheck { const FAILURE = 0; const SUCCESS = 1; protected $timeout = 30; protected $next_attempt; protected $current_status = ServiceCheck::SUCCESS; protected $previous_status = ServiceCheck::SUCCESS; protected $frequency = 30; protected $description; protected $consecutive_failures = 0; protected $status_time; protected $failure_time; protected $loggers = array(); abstract public function __construct($params); public function __call($name, $args) {if(isset($this->$name)) { return $this->$name;} } public function set_next_attempt() {$this->next_attempt = time() + $this->frequency; } public abstract function run(); public function post_run($status) {if($status !== $this->current_status) { $this->previous_status = $this->current_status;}if($status === self::FAILURE) { if( $this->current_status === self::FAILURE ) {$this->consecutive_failures++; } else {$this->failure_time = time(); }}else { $this->consecutive_failures = 0;}$this->status_time = time();$this->current_status = $status;$this->log_service_event(); }  public function log_current_status() {foreach($this->loggers as $logger) { $logger->log_current_status($this);} } private function log_service_event() {foreach($this->loggers as $logger) { $logger->log_service_event($this);} } public function register_logger(ServiceLogger $logger) {$this->loggers[] = $logger; }}

上面的__call()重載方法提供對一個ServiceCheck對象的參數(shù)的只讀存取操作:

· timeout-在引擎終止檢查之前,這一檢查能夠掛起多長時間。

· next_attempt-下次嘗試連接到服務(wù)器的時間。

· current_status-服務(wù)的當(dāng)前狀態(tài):SUCCESS或FAILURE。

· previous_status-當(dāng)前狀態(tài)之前的狀態(tài)。

· frequency-每隔多長時間檢查一次服務(wù)。

· description-服務(wù)描述。

· consecutive_failures-自從上次成功以來,服務(wù)檢查連續(xù)失敗的次數(shù)。

· status_time-服務(wù)被檢查的最后時間。

· failure_time-如果狀態(tài)為FAILED,則它代表發(fā)生失敗的時間。

這個類還實現(xiàn)了觀察者模式,允許ServiceLogger類型的對象注冊自身,然后當(dāng)調(diào)用log_current_status()或log_service_event()時調(diào)用它。

這里實現(xiàn)的關(guān)鍵函數(shù)是run(),它負(fù)責(zé)定義應(yīng)該怎樣執(zhí)行檢查。如果檢查成功,它應(yīng)該返回SUCCESS;否則返回FAILURE。

當(dāng)定義在run()中的服務(wù)檢查返回后,post_run()方法被調(diào)用。它負(fù)責(zé)設(shè)置對象的狀態(tài)并實現(xiàn)記入日志。

ServiceLogger接口:指定一個日志類僅需要實現(xiàn)兩個方法:log_service_event()和log_current_status(),它們分別在當(dāng)一個run()檢查返回時和當(dāng)實現(xiàn)一個普通狀態(tài)請求時被調(diào)用。

該接口如下所示:

interface ServiceLogger { public function log_service_event(ServiceCheck$service); public function log_current_status(ServiceCheck$service);}

最后,你需要編寫引擎本身。該想法類似于在前一節(jié)編寫簡單程序時使用的思想:服務(wù)器應(yīng)該創(chuàng)建一個新的進程來處理每一次檢查并使用一個SIGCHLD處理器來檢測當(dāng)檢查完成時的返回值。可以同時檢查的最大數(shù)目應(yīng)該是可配置的,從而可以防止對系統(tǒng)資源的過渡使用。所有的服務(wù)和日志都將在一個XML文件中定義。

下面是定義該引擎的ServiceCheckRunner類:

class ServiceCheckRunner { private $num_children; private $services = array(); private $children = array(); public function _ _construct($conf, $num_children) {$loggers = array();$this->num_children = $num_children;$conf = simplexml_load_file($conf);foreach($conf->loggers->logger as $logger) { $class = new Reflection_Class('$logger->class'); if($class->isInstantiable()) {$loggers['$logger->id'] = $class->newInstance(); } else {fputs(STDERR, '{$logger->class} cannot be instantiated.n');exit; }}foreach($conf->services->service as $service) { $class = new Reflection_Class('$service->class'); if($class->isInstantiable()) {$item = $class->newInstance($service->params);foreach($service->loggers->logger as $logger) { $item->register_logger($loggers['$logger']);}$this->services[] = $item; } else {fputs(STDERR, '{$service->class} is not instantiable.n');exit; }} } private function next_attempt_sort($a, $b){if($a->next_attempt() == $b->next_attempt()) { return 0;}return ($a->next_attempt() < $b->next_attempt())? -1 : 1; } private function next(){usort($this->services,array($this,'next_attempt_sort'));return $this->services[0]; } public function loop(){declare(ticks=1);pcntl_signal(SIGCHLD, array($this, 'sig_child'));pcntl_signal(SIGUSR1, array($this, 'sig_usr1'));while(1) { $now = time(); if(count($this->children)< $this->num_children) {$service = $this->next();if($now < $service->next_attempt()) { sleep(1); continue;}$service->set_next_attempt();if($pid = pcntl_fork()) { $this->children[$pid] = $service;} else { pcntl_alarm($service->timeout()); exit($service->run());} } }  } public function log_current_status(){foreach($this->services as $service) { $service->log_current_status();} } private function sig_child($signal){$status = ServiceCheck::FAILURE;pcntl_signal(SIGCHLD, array($this, 'sig_child'));while(($pid = pcntl_wait($status, WNOHANG)) > 0){ $service = $this->children[$pid]; unset($this->children[$pid]); if(pcntl_wifexited($status) && pcntl_wexitstatus($status) ==ServiceCheck::SUCCESS)  {$status = ServiceCheck::SUCCESS; } $service->post_run($status);} } private function sig_usr1($signal){pcntl_signal(SIGUSR1, array($this, 'sig_usr1'));$this->log_current_status(); }}

這是一個很復(fù)雜的類。其構(gòu)造器讀取并分析一個XML文件,創(chuàng)建所有的將被監(jiān)視的服務(wù),并創(chuàng)建記錄它們的日志程序。

loop()方法是該類中的主要方法。它設(shè)置請求的信號處理器并檢查是否能夠創(chuàng)建一個新的子進程。現(xiàn)在,如果下一個事件(以next_attempt時間CHUO排序)運行良好,那么一個新的進程將被創(chuàng)建。在這個新的子進程內(nèi),發(fā)出一個警告以防止測試持續(xù)時間超出它的時限,然后執(zhí)行由run()定義的測試。

還存在兩個信號處理器:SIGCHLD處理器sig_child(),負(fù)責(zé)收集已終止的子進程并執(zhí)行它們的服務(wù)的post_run()方法;SIGUSR1處理器sig_usr1(),簡單地調(diào)用所有已注冊的日志程序的log_current_status()方法,這可以用于得到整個系統(tǒng)的當(dāng)前狀態(tài)。

當(dāng)然,這個監(jiān)視架構(gòu)并不沒有做任何實際的事情。但是首先,你需要檢查一個服務(wù)。下列這個類檢查是否你從一個HTTP服務(wù)器取回一個'200 Server OK'響應(yīng):

class HTTP_ServiceCheck extends ServiceCheck{ public $url; public function _ _construct($params){foreach($params as $k => $v) { $k = '$k'; $this->$k = '$v';} } public function run(){if(is_resource(@fopen($this->url, 'r'))) { return ServiceCheck::SUCCESS;}else { return ServiceCheck::FAILURE;} }}

與你以前構(gòu)建的框架相比,這個服務(wù)極其簡單,在此恕不多描述。

五. 示例ServiceLogger進程

下面是一個示例ServiceLogger進程。當(dāng)一個服務(wù)停用時,它負(fù)責(zé)把一個電子郵件發(fā)送給一個待命人員:

class EmailMe_ServiceLogger implements ServiceLogger { public function log_service_event(ServiceCheck$service) {if($service->current_status ==ServiceCheck::FAILURE) { $message = 'Problem with{$service->description()}rn'; mail('oncall@example.com', 'Service Event',$message); if($service->consecutive_failures() > 5) {mail('oncall_backup@example.com', 'Service Event', $message); }} } public function log_current_status(ServiceCheck$service){return; }}

如果連續(xù)失敗五次,那么該進程還把一個消息發(fā)送到一個備份地址。注意,它并沒有實現(xiàn)一個有意義的log_current_status()方法。

無論何時象如下這樣改變一個服務(wù)的狀態(tài),你都應(yīng)該實現(xiàn)一個寫向PHP錯誤日志的ServiceLogger進程:

class ErrorLog_ServiceLogger implements ServiceLogger { public function log_service_event(ServiceCheck$service) {if($service->current_status() !==$service->previous_status()) { if($service->current_status() ===ServiceCheck::FAILURE) {$status = 'DOWN'; } else {$status = 'UP'; } error_log('{$service->description()} changed status to $status');} } public function log_current_status(ServiceCheck$service) {error_log('{$service->description()}: $status'); }}

該log_current_status()方法意味著,如果進程發(fā)送一個SIGUSR1信號,它將把其完整的當(dāng)前狀態(tài)復(fù)制到你的PHP錯誤日志中。 該引擎使用如下的一個配置文件:

<config> <loggers><logger> <id>errorlog</id> <class>ErrorLog_ServiceLogger</class></logger><logger> <id>emailme</id> <class>EmailMe_ServiceLogger</class></logger> </loggers> <services><service> <class>HTTP_ServiceCheck</class> <params><description>OmniTI HTTP Check</description><url>http://www.omniti.com</url><timeout>30</timeout><frequency>900</frequency> </params> <loggers><logger>errorlog</logger><logger>emailme</logger> </loggers></service> <service> <class>HTTP_ServiceCheck</class> <params><description>Home Page HTTP Check</description><url>http://www.schlossnagle.org/~george</url><timeout>30</timeout><frequency>3600</frequency> </params> <loggers><logger>errorlog</logger> </loggers></service></services></config>

當(dāng)傳遞這個XML文件時,ServiceCheckRunner的構(gòu)造器對于每一個指定的日志實例化一個日志記錄程序。然后,它相應(yīng)于每一個指定的服務(wù)實例化一個ServiceCheck對象。

注意 該構(gòu)造器使用Reflection_Class類來實現(xiàn)該服務(wù)和日志類的內(nèi)在檢查-在你試圖實例化它們之前。盡管這是不必要的,但是它很好地演示了PHP 5中新的反射(Reflection)API的使用。除了這些類以外,反射API還提供一些類來實現(xiàn)對PHP中幾乎任何內(nèi)部實體(類,方法或函數(shù))的內(nèi)在檢查。

為了使用你構(gòu)建的引擎,你仍然需要一些包裝代碼。監(jiān)視程序應(yīng)該會禁止你試圖兩次啟動它-你不需要對每一個事件建立兩份消息。當(dāng)然,該監(jiān)視程序還應(yīng)該接收包括下列選項在內(nèi)的一些選項:

選項 描述 [-f] 引擎的配置文件的一個位置,默認(rèn)是monitor.xml。 [-n]; 引擎允許的子進程池的大小,默認(rèn)是5。 [-d]; 一個停用該引擎的守護功能的標(biāo)志。在你編寫一個把信息輸出到stdout或stderr的調(diào)試ServiceLogger進程時,這是很有用的。

下面是最終的監(jiān)視程序腳本,它分析選項,保證排它性并且運行服務(wù)檢查:

require_once 'Service.inc';require_once 'Console/Getopt.php';$shortoptions = 'n:f:d';$default_opts = array('n' => 5, 'f' =>'monitor.xml');$args = getOptions($default_opts, $shortoptions,null);$fp = fopen('/tmp/.lockfile', 'a');if(!$fp || !flock($fp, LOCK_EX | LOCK_NB)) { fputs($stderr, 'Failed to acquire lockn'); exit;}if(!$args['d']) { if(pcntl_fork()) {exit; } posix_setsid(); if(pcntl_fork()) {exit; }}fwrite($fp, getmypid());fflush($fp);$engine = new ServiceCheckRunner($args['f'],$args['n']);$engine->loop();

注意,這個示例使用了定制的getOptions()函數(shù)。

在編寫一個適當(dāng)?shù)呐渲梦募螅憧梢园慈缦路绞絾釉撃_本:

> ./monitor.php -f /etc/monitor.xml

這可以保護并繼續(xù)監(jiān)視直到機器被關(guān)掉或該腳本被殺死。

這個腳本相當(dāng)復(fù)雜,但是仍然存在一些容易改進的地方,這些只好留給讀者作為練習(xí)之用:

· 添加一個重新分析配置文件的SIGHUP處理器以便你能夠在不啟動服務(wù)器的情況下改變配置。

· 編寫一個能夠登錄到一個數(shù)據(jù)庫的ServiceLogger以用于存儲查詢數(shù)據(jù)。

· 編寫一個Web前端程序以為整個監(jiān)視系統(tǒng)提供一種良好的GUI。

標(biāo)簽: PHP
主站蜘蛛池模板: 亚洲成人久久久 | 国产不卡免费视频 | 一级黄免费看 | 国产高清视频一区二区 | 国产色av| 国内自拍网站 | 中文字幕亚洲一区 | 国产精品美女久久久久久久久久久 | 青青久久久 | 草久久av| 日韩国产 | 久久精品1 | 国产成人精品一区二区三区四区 | 青青久在线视频 | 欧美日韩成人在线视频 | 精品国产欧美一区二区三区不卡 | 亚洲一区二区三区四区在线观看 | 成人一区二区三区在线观看 | 精品一区二区在线观看 | 国产午夜精品久久久久久久 | 在线播放91 | 一区二区三区四区不卡视频 | 欧美国产日韩精品 | 国产精品美女久久 | 中文字幕精品一区久久久久 | 亚洲国产精品va在线看黑人 | 国产成人精品亚洲日本在线观看 | 欧美日韩精品一二区 | 亚洲97| 日韩不卡一区二区三区 | 综合婷婷 | 国产精品视频一二三区 | 日本三级在线观看网站 | 黄色毛片免费看 | 成人欧美一区二区三区 | 亚洲成av人片在线观看 | 国产精品成人观看视频国产奇米 | 久久这里有精品视频 | 日韩精品免费在线视频 | 免费在线一区二区三区 | 看亚洲a级一级毛片 | 午夜免费在线 | 日韩欧美一级片 | 亚洲视频在线观看 | 国产精品高潮呻吟av久久4虎 | 国产中文字幕在线观看 | 五月婷综合 | 亚洲精品国产精品国自产 | 国产黄色免费小视频 | 成人在线免费 | 人人九九 | 香蕉视频黄色 | 国产免费一区二区三区 | 成人伊人 | 日韩精品久久久久久 | 九九热精品视频 | 国产成人精品亚洲777人妖 | 亚洲精品毛片一区二区 | 日本淫片| 精品国产乱码久久久久久影片 | 综合久久久久 | 一级毛片在线播放 | 欧美日韩中文在线 | 国产精品视频999 | 美女视频黄色免费 | 成年人在线看 | 亚洲精品9999 | 91在线看片 | 伊人久久婷婷 | 亚洲成年人影院 | 久热免费在线 | 1000部羞羞视频在线看视频 | www日韩| 国产成人久久 | 日本理伦片午夜理伦片 | 另类二区 | www.788.com色淫免费 | 神马久久久久久 | 97在线观看视频 | 91精品国产综合久久婷婷香蕉 | www久久精品 | 一级毛片一级毛片一级毛片 | 久久狠狠 | 精品一区免费 | 福利视频网址导航 | 一级毛片免费一级 | 精品久久国产 | 草樱av| 在线观看黄免费 | 91一区二区三区 | 欧美视频精品 | 国产成人av一区二区三区 | 四虎永久| 成人免费久久 | 久久国产精品久久久久久电车 | 精品国产一区二区三区久久影院 | 在线观看亚洲一区二区三区 | 一道本一区 | 精品国产乱码久久久久久蜜柚 | 国产九九精品 | 在线视频 亚洲 | 这里有精品在线视频 | 国产视频1区| 99精品一区二区三区 | 成人在线www | 国产精品成人一区二区 | 一级黄色大片视频 | 视频一区在线播放 | 亚洲欧洲精品成人久久奇米网 | 亚洲狠狠| 中文字幕亚洲第一 | 国产高清自拍 | 日韩啊啊啊 | 日韩福利在线 | 97视频免费在线观看 | 日本三级中国三级99人妇网站 | 国产精品一区二 | 久久久性色精品国产免费观看 | 一区二区三区在线播放 | 天天看夜夜 | 国产精品日韩专区 | 欧美亚洲另类丝袜综合网动图 | 国产成人99久久亚洲综合精品 | 久久国产精品视频 | 欧美一级淫片免费视频黄 | av网站在线免费观看 | 亚洲一区在线视频 | 狠狠久久综合 | www.久久久久久久 | 亚洲综合天堂网 | 国产精品久久久久影院色老大 | 男人的天堂视频 | 久久波多野结衣 | 亚洲一区二区三区久久久 | 国产精品一品二区三区的使用体验 | 国产精品亚洲区 | 久久精品色欧美aⅴ一区二区 | 久草视频在线播放 | 日韩欧美成人影院 | 成人精品鲁一区一区二区 | 亚洲一区二区视频在线观看 | 国产成人免费视频网站高清观看视频 | 91看片淫黄大片一级在线观看 | 欧美一级做性受免费大片免费 | 91tv亚洲精品香蕉国产一区 | 亚洲在线播放 | 国产成人精品久久 | 久久波多野结衣 | 美女在线国产 | 精品久久久久久久久久久久久久 | 亚洲精品乱码 | 日韩久久精品 | 99成人 | 欧美日本韩国一区二区 | 国产精品美女久久久久久久久久久 | 国产 日韩 一区 | 久久免费精品 | 久久久99精品免费观看 | 欧美日韩中文字幕 | 国产精品久久久久久吹潮 | 亚洲性人人天天夜夜摸 | av毛片在线免费看 | 国产情侣自拍啪啪 | av色资源 | 久久久久久国产精品 | 国产精品不卡视频 | 欧美精品1区2区3区 免费亚洲婷婷 | 国产精品国产三级国产aⅴ中文 | 亚洲伊人中文字幕 | 久久激情综合 | 久久成人精品 | 小情侣高清国产在线播放 | 黄色三级视频 | 欧美顶级毛片在线播放 | 日韩久久久一区二区 | 欧美亚洲一区 | 亚洲在线免费观看 | 精品视频一区二区 | 伊人网视频在线观看 | 日本久久网| 亚洲午夜精品一区二区三区 | 97视频人人澡人人爽 | 国产综合精品一区二区三区 | 午夜欧美一区二区三区在线播放 | 97超碰免费 | 久久久资源 | 中文在线一区二区 | 欧美精品在欧美一区二区少妇 | 亚洲国产精品成人无久久精品 | 男女小网站 | 99精品电影 | 亚洲欧美一区二区精品中文字幕 | 中文字幕亚洲在线观看 | 做视频免费观看网站 | 91精品国产综合久久香蕉922 | а天堂中文最新一区二区三区 | 色xx综合网 | 欧美视频一级 | 91爱啪啪 | 久久精美视频 | 欧美视频精品在线 | 久久久久中文字幕 | 亚洲第一色 | 国产黄| 欧洲亚洲视频 | 国产视频一区二区在线 | 91高清免费 | 色综合激情 | 超碰最新网址 | 美女视频一区 | 99久久婷婷国产综合精品电影 | 午夜视频在线免费观看 | 日夜夜精品 | 91福利在线导航 | 国产激情视频 | 青青草免费在线 | 一区二区三区在线 | 欧 | 亚洲成人日韩 | 日韩国产一区二区三区 | 成人精品二区 | 午夜影院毛片 | 久久久99日产 | av网站有哪些 | 国产精品成人国产乱一区 | 亚洲综合视频 | 婷婷丁香六月天 | 天天人人精品 | 精品999www | 欧美男人天堂 | 一级在线毛片 | 最新国产在线视频 | 福利精品在线观看 | 日韩亚洲| 国产中文字幕一区 | av成人在线观看 | 国产成人av电影 | 欧美在线观看一区 | aa级毛片毛片免费观看久 | 亚洲欧美视频在线 | 中文字幕日韩欧美 | 爱爱视频在线 | 国产精品久久久久久久午夜 | 一级一级国产片 | 成人欧美一区二区三区色青冈 | 国产精品自产拍在线观看桃花 | 在线看一级片 | 成人在线免费视频 | 一级欧美一级日韩 | 国产精品视频一区二区三区, | 羞羞视频在线观免费观看 | 丁香久久 | www国产亚洲精品久久网站 | 精品伦理一区二区三区 | 欧美专区在线 | 精品久久久中文字幕 | 成人在线欧美 | 人人九九精 | 国产激情在线看 | 久久久亚洲一区 | 日韩在线资源 | 国产免费看| 欧美激情国产日韩精品一区18 | 日本 国产 欧美 | 99精品网站 | 亚洲一区二区在线播放 | 最近免费中文字幕在线视频2 | 国产黄色免费视频 | 久久国产精品久久 | 欧美一级片在线观看 | 日韩精品在线视频观看 | 国产精品久久久久久久久免费丝袜 | 成人免费福利 | 国产一区二区视频在线 | 香蕉久久网 | 欧美精品一二三区 | 嫩草91| 亚洲国产二区 | www.五月天婷婷 | 成人黄色电影在线观看 | 香蕉综合久久 | 综合 欧美 亚洲日本 | 亚洲精品视频在线看 | 欧美色欧美亚洲另类七区 | 青娱乐99 | 中文字幕亚洲一区 | 日日干夜夜骑 | 国产欧美日韩综合精品 | 亚洲视频1区 | 成人免费视频观看视频 | 亚洲一区二区三区观看 | 天天干狠狠干 | 国产日韩免费 | 99亚洲视频 | 天天亚洲综合 | 久久精品国产一区二区三区不卡 | 日韩看片 | 午夜www| 夜夜骑天天射 | 精品三级在线观看 | 在线视频 亚洲 | 国产精品午夜电影 | 三级黄色片在线观看 | 欧美日本韩国一区二区三区 | 欧美三级网 | 最新日韩av网址 | 91精品久久久久久久久中文字幕 | 香蕉成人啪国产精品视频综合网 | 蜜桃av一区二区三区 | 欧美精品99 | 欧美一区二区三区四区五区 | 午夜激情视频在线观看 | 69黄在线看片免费视频 | 91九色porny首页最多播放 | 黄色国产 | 欧美 | 91中文在线 | 在线观看 亚洲 | 亚洲精选免费视频 | 免费中文字幕日韩欧美 | 亚洲国产婷婷 | 成人a视频 | 中文字幕av亚洲精品一部二部 | 亚洲啊v在线 | 亚洲成人综合网站 | 九九资源站 | 久久久国产一区二区三区四区小说 | 99视频在线播放 | 91久久国产精品 | 精品91在线 | 亚洲性爰 | 毛片在线免费播放 | 操到爽 | 欧美日韩精品一区二区在线播放 | 欧美日韩在线免费 | 在线免费毛片 | 精品国产三级 | 天天拍天天操 | 亚洲国产精品久久久久久 | 女人高潮特级毛片 | 欧美一区二区久久 | 波多野结衣一区二区三区四区 | 日韩国产欧美 | 国产小视频在线播放 | 久久久久久九九 | 欧美日本韩国一区二区 | 国产精品久久久久久二区 | av网站观看 | 黄色的视频免费 | 91av视频在线观看 | 成年人黄色免费视频 | av免费网站在线观看 | 欧美黄色网络 | 中文字幕一区二区三区日韩精品 | 欧洲精品视频在线观看 | 成人a视频| 久操伊人 | 国产免费看 | 四季久久免费一区二区三区四区 | 亚洲 欧美 日韩在线 | 成人在线不卡 | 成人免费在线视频播放 | 国产毛片毛片 | 国产精品国产三级国产aⅴ无密码 | 精品欧美一区二区三区久久久小说 | 男人超碰 | 日韩一片 | 国产精品91久久久久 | 国产欧美一区二区 | 精品国产不卡一区二区三区 | 久久久久久亚洲 | 久久久久久九九 | 亚洲精品66 | 中文字幕一区二区三区四区 | 日韩一区二区视频在线 | 粉色午夜视频 | 一区二区三区自拍 | 少妇精品视频在线观看 | 中字幕视频在线永久在线观看免费 | 91精品国产综合久久福利软件 | 精品国产乱码久久久久久1区2区 | 高清国产视频 | 日本免费三片免费观看 | 日韩成人精品在线 | av色伊人久久综合一区二区 | 成人福利在线观看 | 久久激情五月丁香伊人 | cao视频| 九九色九九 | 91免费在线看 | 国产一区二区三区久久久久久久久 | 米奇成人网 | 国产美女视频一区 | 亚洲国产精品99久久久久久久久 | www中文字幕 | 亚洲激情网站 | 九九热免费看 | 日日干天天操 | 狠狠躁夜夜躁人人爽天天天天97 | 亚洲视频在线观看 | 精品一区在线视频 | 精品久久97 | 久久免费国产精品 | 一区二区三区在线 | 亚洲精品国产第一综合99久久 | 日韩国产欧美 | 欧美高清性xxxxhdvideosex | 国产精品一区三区 | 日韩精品在线观看视频 | 亚洲欧美日韩在线一区 | 国产精品久久久久久久久小说 | 欧美日韩精品一区二区三区蜜桃 | 在线一区二区三区 | 中文字幕一区二区三区四区五区 | 国产高清在线 | 亚洲精品免费观看 | 国产精品日韩 | 亚洲视频在线免费观看 | 亚洲精品在线视频 | 欧美日韩一区二区三区视频 | 久久久久久91香蕉国产 | 国产成人网 | 久久精品色欧美aⅴ一区二区 | 日韩欧美国产精品综合嫩v 亚洲欧美日韩在线 | 最新免费av网站 | 欧美黄色网| 特级淫片裸体免费看 | 99在线精品视频 | 欧美精品区 | 亚洲第一av网站 | 91久久精品国产 | 一区二区三区在线免费观看 | 色爱区综合五月激情 | 国产成人精品免高潮在线观看 | 九九免费精品视频 | 97国产精品视频人人做人人爱 | 99久久夜色精品国产网站 | 国产精品香蕉 | 国产美女久久久 | 麻豆av一区 | 日本精品一区 | 欧美综合成人网 | 性处破╳╳╳高清欧美 | 精品一区二区三区免费视频 | 国产成人精品综合 | 久久久久久久一区 | 日韩专区中文字幕 | 国产精品片aa在线观看 | 精品自拍网 | 日日爱999 | 欧美精品成人 | 国产精品国产精品国产专区不片 | 久久久91精品国产一区二区三区 | 做a视频在线观看 | 亚洲一区 中文字幕 | 国产视频福利在线观看 | 日本成人中文字幕在线观看 | 秋霞在线一区 | 女同久久另类99精品国产 | 伊人网91 | av在线免费网址 | 亚洲毛片在线观看 | 亚洲系列 | 成人小视频在线看 | 成人看片免费网站 | 日韩免费一区 | 欧日韩在线视频 | 精品国产欧美一区二区三区不卡 | 免费在线看a | 一级免费毛片 | 午夜电影av| 欧美一区二区三区在线观看视频 | 欧美日韩午夜 | 亚洲www啪成人一区二区 | 欧美午夜一区二区三区免费大片 | 国产高清免费 | 嫩草视频免费在线观看 | 福利一区二区 | 免费一区二区 | 久久精品美女 | 伊人手机在线视频 | 午夜免费 | 成人在线观看免费视频 | 国产小视频在线观看 | 伊人网视频在线观看 | 国产精品一区二区三区四区 | 毛片免费在线观看 | 国产成人精品一区二区三区四区 | 午夜视频网站 | 亚洲精品一区二区三区四区高清 | 久久亚洲天堂 | 97视频观看| 九色在线播放 | 午夜视频福利在线观看 | 欧美激情一区二区三区 | 一区在线视频观看 | 日本激情视频在线播放 | 国产视频二 | 国产伦精品久久久一区二区三区 | 亚洲最黄视频 | 久久久久9999国产精品 | 久久久久国产精品一区二区三区 | 日韩欧美综合 | www国产成人免费观看视频,深夜成人网 | 中文字幕视频在线播放 | 在线亚洲精品 | 久久91精品国产 | 91 在线观看 | 婷婷五月色综合 | 6080yy午夜一二三区久久 | 亚洲精彩视频在线观看 | 成人中文视频 | 日本色网址 | 日日做夜夜爽毛片麻豆 | 爱干视频| 亚洲视频观看 | 欧美日韩一区在线观看 | 夜夜爽网址| 日本阿v视频高清在线中文 中文二区 | 欧洲成人午夜免费大片 | 久久久久久国产精品久久 | 精品一区二区三区中文字幕 | 三级黄色在线视频 | 久草视频在线看 | 国偷自产av一区二区三区 | 丁香婷婷在线 | 天天干天天爽 | 午夜精品影院 | 97久久久 | 日韩欧美精品在线 | 成人国产精品免费网站 | 日本在线免费观看 | 性大毛片视频 | 日本高清中文字幕 | 97久久精品人人做人人爽50路 | 国精产品一区二区三区 | 在线中文 | 亚洲欧美精选 | 黄色大片网站在线观看 | 亚洲精品乱码8久久久久久日本 | 成人免费一区二区三区视频网站 | 日本久久网 | 中文字幕在线一区 | 综合一区 | 91不卡| 亚洲一区二区中文字幕 | 欧美日韩成人在线视频 | 亚洲欧美日韩另类精品一区二区三区 | 国产一区二 | 99久久精品一区二区成人 | 欧美日韩黄色一级片 | 欧洲毛片| 夜夜草视频 | 自拍偷拍第一页 | 亚洲人成在线播放 | 久操视频在线观看 | 黄色电影天堂 | 欧美日韩亚洲二区 | 毛片一区二区三区 | 成人午夜免费视频 | 午夜精品久久久久久 | 日韩三区 | 不卡视频一区二区 | 欧美精品亚洲精品日韩精品 | 中文字幕一区二区三区在线视频 | 色猫猫国产区一区二在线视频 | 国产精品一区二区三区在线播放 | 中文字幕一级毛片 | 欧美黄视频在线观看 | 天天操天天操 | 91,看片| 国内精品视频一区国产 | 国产精品视频免费 | 国产一区二区在线观看视频 | 国产丝袜一区二区三区免费视频 | 精品久久久久久久久久久久久 | 成人免费淫片aa视频免费 | 一区二区三区免费av | 男女国产视频 | 亚洲精品福利网站 | 天天拍天天干天天操 | 综合久久99 | 免费成人在线观看视频 | 精品久久久久久久久久久久久久久 | 夜夜视频 | 免费成人高清在线视频 | 久久99视频这里只有精品 | 四虎成人在线 | 天天人人精品 | 日韩av在线一区二区三区 | 国产日韩欧美精品一区二区 | 在线欧美一区 | aaa在线| 精品婷婷 | 看片地址 | www.99精品 | 国产高清在线精品一区二区三区 | 91高清在线| 天天操一操 | 奇米色777欧美一区二区 | 中文日韩在线 | 少妇久久久 | 国产精品成人一区二区三区夜夜夜 | 国产精品日本欧美一区二区三区 | 欧美日韩精品一区二区在线观看 | 亚洲一区二区免费在线观看 | 狠狠久久婷婷 | 久久激情网 | 久久这里只有精品23 | 五月婷婷色 | 日韩免费 | 99在线精品视频 | 日本视频黄 | 亚洲高清一区二区三区 | 日韩五码在线 | 不卡的毛片 |