黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

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

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

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

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

一. 更改工作目錄的問題

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

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

<?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()沒有提供安全機(jī)制來防止打開未授權(quán)的文件。

二. 放棄特權(quán)

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

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

如果你以根用戶身份運(yùn)行,那么你能夠借助于posix_setuid()和posiz_setgid()函數(shù)來放棄你的特權(quán)。下面的示例把當(dāng)前運(yùn)行程序的特權(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)常想實(shí)現(xiàn):一個腳本在任何時刻僅運(yùn)行一個實(shí)例。為了保護(hù)腳本,這是特別重要的,因?yàn)樵诤笈_運(yùn)行容易導(dǎo)致偶然情況下調(diào)用多個實(shí)例。

保證這種排它性的標(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)鎖機(jī)制的討論涉及較多內(nèi)容,在此不多加解釋。

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

在這一節(jié)中,我們將使用PHP來編寫一個基本的監(jiān)視引擎。因?yàn)槟悴粫孪戎涝鯓痈淖儯阅銘?yīng)該使它的實(shí)現(xiàn)既靈活又具可能性。該記錄程序應(yīng)該能夠支持任意的服務(wù)檢查(例如,HTTP和FTP服務(wù))并且能夠以任意方式(通過電子郵件,輸出到一個日志文件,等等)記錄事件。你當(dāng)然想讓它以一個守護(hù)程序方式運(yùn)行;所以,你應(yīng)該請求它輸出其完整的當(dāng)前狀態(tài)。

一個服務(wù)需要實(shí)現(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ā)生失敗的時間。

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

這里實(shí)現(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)并實(shí)現(xiàn)記入日志。

ServiceLogger接口:指定一個日志類僅需要實(shí)現(xiàn)兩個方法:log_service_event()和log_current_status(),它們分別在當(dāng)一個run()檢查返回時和當(dāng)實(shí)現(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)建一個新的進(jìn)程來處理每一次檢查并使用一個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)建一個新的子進(jìn)程。現(xiàn)在,如果下一個事件(以next_attempt時間CHUO排序)運(yùn)行良好,那么一個新的進(jìn)程將被創(chuàng)建。在這個新的子進(jìn)程內(nèi),發(fā)出一個警告以防止測試持續(xù)時間超出它的時限,然后執(zhí)行由run()定義的測試。

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

當(dāng)然,這個監(jiān)視架構(gòu)并不沒有做任何實(shí)際的事情。但是首先,你需要檢查一個服務(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進(jìn)程

下面是一個示例ServiceLogger進(jìn)程。當(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ù)失敗五次,那么該進(jìn)程還把一個消息發(fā)送到一個備份地址。注意,它并沒有實(shí)現(xiàn)一個有意義的log_current_status()方法。

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

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()方法意味著,如果進(jìn)程發(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)造器對于每一個指定的日志實(shí)例化一個日志記錄程序。然后,它相應(yīng)于每一個指定的服務(wù)實(shí)例化一個ServiceCheck對象。

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

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

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

下面是最終的監(jiān)視程序腳本,它分析選項(xiàng),保證排它性并且運(yù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

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

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

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

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

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

標(biāo)簽: PHP
主站蜘蛛池模板: 中国农村一级片 | 日韩一级片一区二区三区 | 艳妇乳肉豪妇荡乳xxx | 精品综合在线 | 91精品日产一二三区乱码 | 中文字幕一区在线观看视频 | 黄视频在线播放 | 青草一区 | 欧美一区二区喷水白浆视频 | 一本大道东京热无码aⅴ | 国产一级大黄 | 激情五月中文字幕 | 五级毛片 | 能免费看av的网站 | 97久久香蕉国产线看观看 | 精品国产一区二区三区av片 | 欧美日韩色 | 91久草视频| 久久久久9999| 无码人妻精品一二三区免费 | 午夜视频欧美 | 国产欧美日韩 | 色与欲影视天天看综合网 | 婚后打屁股高h1v1调教 | 亚洲精品一区国产 | 日日操视频 | 国产极品美女在线精品图片 | 91少妇丨porny丨 | 天天在线观看 | 99精品视频在线播放免费 | 任你躁一区二区久久99 | 国产91九色 | 国产高中女学生第一次 | 国内毛片毛片毛片毛片毛片 | 国产欧美成人一区二区a片 又大又长粗又爽又黄少妇视频 | 热九九精品 | 香蕉久久久久 | 亚洲污片| 好吊色综合 | 美女国产精品视频 | 福利社午夜 | 久久婷婷视频 | 亚洲字幕| 中文字幕免费视频 | 中文字日产幕乱五区 | 国产成人精品999 | 精品无码久久久久久久久 | 亚洲精品乱码久久久久久日本蜜臀 | 久久勉费视频 | 日韩精品免费一区二区在线观看 | jizz亚洲女人高潮大叫 | 国产情侣酒店自拍 | 亚洲乱码中文字幕在线 | 偷窥日本少妇撒尿chinese | 大伊人网 | 强行处破女系列中文字幕 | 国产一区二区三区在线观看 | 欧美最顶级丰满的aⅴ艳星 欧美最黄视频 | 欧洲女人牲交性开放视频 | 国内精品伊人久久久久7777 | 国产熟人av一二三区 | 成人亚洲综合av天堂 | 成人黄色在线播放 | 日本www在线观看 | 无码国内精品人妻少妇蜜桃视频 | 亚洲日韩欧洲乱码av夜夜摸 | 国产一区福利 | 日日碰狠狠躁久久躁综合小说 | 欧美日本一区二区 | 国产成年无码久久久久下载 | 成人在线精品 | 国产人成 | 深爱激情久久 | 131美女爱做视频 | 在线天堂中文 | 伊人网在线免费观看 | 欧美激情第五页 | av视| 亚洲自拍小视频 | 国产精品一色哟哟 | 亚洲天堂视频网 | 色婷婷综合久久久中文一区二区 | 在线看片成人 | av自拍一区 | 欧美久久久久久久高潮 | 91精品亚洲影视在线观看 | 久久久久久毛片免费播放 | 五月天激情婷婷婷久久 | 欧美精品一区二区三区制服首页 | 黄色日本网站 | 乱子伦一区二区三区 | 永久黄网站色视频免费直播 | 色妞ww精品视频7777 | 亚洲欧美国产精品18p | 日韩不卡一二区 | 国产精品综合久久久久久 | 免费看成人aa片无码视频吃奶 | 成人天堂视频第一网站 | 一本色综合 | 日本爽快片100色毛片视频 | 亚洲高清av在线 | 欧美大片免费高清观看 | 校园激情亚洲 | 中文字幕一区二区三区在线播放 | 夜夜高潮天天爽欧美国产亚洲一区 | 啪啪av网| 天天干夜夜爽 | 亲子乱对白乱都乱了视频 | 操久久久 | 日本三级韩国三级欧美三级 | 成人在线网 | 伊人一区二区三区 | av天天草| 国产成人黄色 | 九热精品| 国产成人亚洲综合无码 | 高潮毛片无遮挡高清免费视频网站 | 少妇的肉体k8经典 | 国产精品永久久久久久久www | 日本美女黄视频 | 日本一码二码三码在线 | 无码人妻精品一区二区三区9厂 | 清纯小美女主播流白浆 | 日日夜夜天天操 | 日韩欧美在线播放 | 亚洲做受高潮软件 | 亚洲一区av无码少妇电影 | 国产精品爽爽爽爽爽爽在线观看 | 无码里番纯肉h在线网站 | k频道国产在线观看 | 高清一区在线观看 | 国产成人高潮免费观看精品 | 国产一区二区不卡精华液 | 女十八免费毛片视频 | 日韩有码在线播放 | 日本免费三片在线播放 | 无码专区无码专区视频网址 | 先锋av网| 久久99国产综合精品 | 成人激情免费视频 | 在线观看黄色片 | 网站色| 每日更新在线观看av | 日本一区二区精品视频 | 亚洲免费永久精品国产 | 伊人久久综合影院 | 性xxxx18免费观看视频 | sm免费人成虐网站 | 黄色网址在线视频 | 综合久久99 | 韩国三级久久 | 日本精品久久久久久 | 深夜福利影院 | 国产亚洲成av片在线观看 | 婷婷成人综合激情在线视频播放 | 亚洲精品久久久久久一区二区 | 亚洲毛片在线免费观看 | 青青精品视频 | 欧美亚洲国产精品久久高清浪潮 | 看黄网站在线 | 女性高爱潮有声视频 | 亚洲成av人片天堂网老年人 | 男女插孔视频 | 超碰91人人| 国产第三区 | 色妞av永久一区二区国产av | 男人天堂怡红院 | 1024欧美| 国产伦精品一区二区三区四区免费 | 免费观看成人鲁鲁鲁鲁鲁视频 | аⅴ新版在线天堂 | 波多野结衣视频网站 | av在线播放网址 | 亚洲色成人网站www永久男男 | 中文免费在线观看 | 国产在线精品一区二区三区不卡 | 青青草原综合久久大伊人精品 | 精品国产一区二区三区在线观看 | 国产99久久九九精品的功能介绍 | 一级黄色毛片视频 | 成年人看的羞羞网站 | 欧美精品日韩 | 男人天堂视频网 | 国产91精品久久久久久久 | 日韩人妻无码精品系列 | 亚洲欧美性视频 | av在线最新| 国产人妖ts重口系列网站观看 | 四川丰满妇女毛片四川话 | 国产亚洲精品久久久久久无几年桃 | 四川少妇性色xxxxhd | 91精品国产乱码久久 | 亚洲欧美日韩国产精品一区午夜 | 婷婷综合久久中文字幕蜜桃三电影 | 免费69视频 | 欧美精品五区 | 欧美人动与zoxxxx乱 | 亚洲欧美视频在线 | av小四郎在线最新地址 | 少妇人妻无码专区视频 | 疯狂做受xxxx高潮视频免费 | 97久久超碰中文字幕 | 亚洲日本va午夜蜜芽在线电影 | 91社区在线高清 | 日韩精品在线不卡 | 夜夜嗨影院 | 欧美麻豆久久久久久中文 | 在线亚洲网站 | 国产一区二区三区久久精品 | 国产精品jizz在线观看美国 | 成人久久18免费网站图片 | 国产黄色免费大片 | 天堂av在线官网 | 国产美女高潮流白浆视频 | 凹凸国产熟女精品视频 | 加勒比日本在线 | 国产乱码一区二区三区在线观看 | 久久精品人人爽人人爽 | 国产农村妇女高潮大叫 | 美国伊人网 | 亚洲色图com | 欧美性猛交xxx嘿人猛交 | 99久久精品日本一区二区免费 | 伊人网一区二区 | 青青草无码免费一二三区 | 国产一级精品视频 | 精品国产免费第一区二区三区 | 女人爽到高潮潮喷18禁网站 | 丰满人妻熟妇乱又伦精品视 | 欧美精品久久久久久久久大尺度 | 男女做激情爱呻吟口述全过程 | 久久成人一区二区 | 国产人成看黄久久久久久久久 | 九色porny丨国产首页注册 | 91免费影片| 成人免费一区 | 久久国产av影片 | 亚洲色图视频在线 | 又黄又爽又色视频免费 | 色欲综合久久中文字幕网 | 亚洲第一偷拍 | 日日不卡av | 国产欧美日 | 97精产国品一二三 | 国产亚洲精品自在久久 | 精品国产三级a在线观看 | 亚洲欧洲成人精品久久一码二码 | 亚洲综合在线播放 | 国内精品卡一卡二卡三 | 自拍偷拍亚洲欧洲 | 色妞网站| 国产丝袜视频在线观看 | 亚洲国产丝袜 | 中文字幕一区二区在线播放 | 成人精品视频网站 | 日韩一区二区免费播放 | 日韩精品一区二区三区第95 | 亚洲 欧美 日韩 国产综合 在线 | 国产盗摄一区二区 | 免费在线不卡av | 后进极品美女白嫩翘臀 | 伊伊成人| 国产午夜性春猛交ⅹxxx | 国产经典久久 | 色婷婷综合成人 | 性殴美69xoxoxoxo | 久久精品国产一区二区三区 | 亚洲天堂免费在线观看视频 | h视频在线免费看 | 1000部夫妻午夜免费 | 韩日av在线 | 欧美精品久久久久久久 | 日韩二区视频 | 丁香综合激情 | 三级艳丽杨钰莹三级 | 欧美一进一出抽搐大尺度视频 | 一级a性色生活片毛片 | 欧美一区二区三区免费播放视频了 | 五十岁熟韵母乱视国产 | 成年人免费视频观看 | 黄色片大全 | 午夜福利视频 | 黄色在线a | 成人毛片100免费观看 | 国产精品久久久久影院老司 | 少妇哺乳期啪啪 | 日韩理论午夜无码 | 伊人久久大香线蕉综合网站 | 国产精品视频不卡 | 婷婷成人亚洲综合国产xv88 | 精品国产精品久久一区免费式 | 欧美黄色特级视频 | 精品国产乱码久久久久久竹菊影视 | 国产一区在线免费观看 | 日本www视频在线观看 | 色先锋av资源中文字幕 | 亚洲精品国产成人av在线 | 一本色道久久88加勒比—综合 | 理论片黄色 | a级黄色录像片 | 久久久人| 国产三a级三级日产三级野外 | 日韩精品在线免费看 | 国产区高清 | 99热久久是国产免费66 | 国产欧美久久久精品免费 | 亚洲你懂得| 忘忧草在线社区www中国中文 | 亚洲精品午夜一区人人爽 | 日本少妇被黑人xxxxx | 国产一级网站 | 美女网站免费观看视频 | 性视频黄色 | 超碰麻豆 | 在线播放无码字幕亚洲 | 夜夜欢性恔免费视频 | 秋霞影院一区二区 | 婷婷五月小说 | 成人性生交大片免费看96 | 国产亚洲无线码一区二区 | 色偷偷偷在线视频播放 | 色欲av永久无码精品无码 | 国产精品裸体一区二区三区 | 欧美中文字幕一区二区 | 少妇在线观看888视频 | 亚洲h视频在线 | 老司机午夜影院 | 久久综合亚洲 | 欧美福利影院 | 国产一区不卡视频 | av资源站 | 精品人妻无码一区二区三区蜜桃一 | 国产欧美日韩精品丝袜高跟鞋 | 神马久久春色 | 息与子猛烈交尾一区二区 | 99久热在线精品996热是什么 | 欧美成人精品高清视频在线观看 | 麻豆精品视频在线观看 | 中文字幕精品三级久久久 | 青青久久av北条麻妃黑人 | 无码人妻丰满熟妇片毛片 | 国产美女久久久亚洲综合 | 天堂а√在线地址在线 | 男生美女隐私黄www 男生女生羞羞网站 | 亚洲区欧美区综合区自拍区 | 被灌满精子的少妇视频 | 亚洲午夜剧场 | 亚洲成a人片在线观看天堂无码 | 少妇搡bbbb搡bbb搡澳门 | 自拍偷拍1| 国产98色在线 | 亚洲欧洲精品mv免费看 | 中文字幕av一区二区三区谷原希美 | 中文在线资源新版8 | 国产娇小性色xxxxx视频 | 成人拍拍| 色欲av亚洲一区无码少妇 | 扒开双腿吃奶呻吟做受视频 | 国产一二三区精品 | 国产一区二区三区撒尿在线 | 欧美一级鲁丝片 | 欧美三级精品 | 同性恋一级片 | 国产网站入口 | 看a级毛片| 国产成人免费爽爽爽视频 | 17c在线视频在线观看 | 婷婷综合另类小说色区 | 久久久精品中文字幕麻豆发布 | 人妻av一区二区三区精品 | 国产传媒一区二区 | 蜜臀久久久久久999 免费 成 人 黄 色 | 成人小视频免费在线观看 | 99视频久久 | 好男人中文资源在线观看 | av免费不卡国产观看 | 久久精品人妻无码一区二区三区 | 成人午夜福利视频后入 | 亚洲国产精品久久久久久6q | 特级淫片aaaaaaa级附近的 | 色片网站在线观看 | 私人av| 黄色片18| 后入内射欧美99二区视频 | 日韩精品一级 | 色哟哟视频在线观看 | 51国产偷自视频区视频 | 国产特黄特色大片免费视频 | 黄色一级在线视频 | 极品老师腿张开粉嫩小泬 | 国产精品久久久久久久模特 | 大地资源影视在线播放观看高清视频 | 99久久99久久精品免费看蜜桃 | 中文字幕成人在线观看 | 国产特级全黄一级97毛片 | 小明www永久免费播放平台 | 污视频91 | 亚洲精品一区二区三区影院忠贞 | 男人天堂资源网 | 色网址在线观看 | 色偷偷网 | 每日av更新 | 96久久 | 99精品国产热久久91蜜凸 | 国产欧美日韩综合精品一区二区 | 大蜜桃臀偷拍系列在线观看 | 秋霞av鲁丝片一区二区 | 色视频国产 | 国产福利一区二区三区在线观看 | 色午夜婷婷 | 91在线公开视频 | 在线xxxx| 无码人妻精品一区二区蜜桃网站 | 免费观看a毛片 | 无码专区aaaaaa免费视频 | 国产天堂在线观看 | 国产一级淫片免费 | 少妇啪啪高潮肉谢 | 性中国videossexo另类 | 欧美视频在线免费 | 国产精品三级在线观看无码 | 污站在线观看 | 成人免费公开视频 | 国产精品二区一区二区aⅴ污介绍 | 国产在线网站 | 初开小嫩苞一区二区三区四区 | 国产av无码专区亚洲精品 | 欧美极品少妇xxxxⅹ免费视频 | 国产精品视频一区二区免费不卡 | 黄色在线观看av | 欧美在线性爱视频 | 国产内射老熟女aaaa | 天天噜噜噜噜噜噜 | 久久精品无码观看tv | 91爱爱爱爱 | 91精品国产综合婷婷香蕉 | 日本三级全黄少妇三2023 | 免费精品 | 国产精品国产三级国产专业不 | 日韩欧美中文字幕精品 | 色女人在线 | 国产在线精品拍揄自揄免费 | 中文字幕一区二区三区四区 | 插插插综合视频 | 国产精品久久久久久久福利竹菊 | 国产精品国产三级国产普通话蜜臀 | 特黄色毛片 | 18禁裸男晨勃露j毛免费观看 | 东北老女人高潮大叫对白 | 亚洲国产日韩欧美在线观看 | 成人三及片| 182tv福利视频 | 超碰98在线观看 | 亚洲视频免费观看 | 亚洲人人夜夜澡人人爽 | 日韩另类av | 奶波霸巨乳一二三区乳 | 一区二区三区无码高清视频 | 久草在线最新视频 | 久久女同互慰一区二区三区 | 亚洲精品456在线播放第一页 | 免费网站看av | 性感美女一区二区三区 | 欧美性大战久久久久久 | 精品无人国产偷自产在线 | 亚洲天堂岛| 欧美精品无码一区二区三区 | 亚洲国产精品激情在线观看 | 麻豆视频成人 | 99精品国产高清在线观看 | 国产资源久久 | 日本少妇北岛玲xxxhd | 乌克兰粉嫩xxx极品hd | 女性无套免费网站在线看动漫 | 影视先锋av资源噜噜 | 日韩黄站 | 亚洲乱码国产乱码精品精的特点 | 国产一区二区三区久久久久久久久 | 久久成人18免费网站 | 69av网站| 中文字幕乱偷在线小说 | 亚洲av禁18成人毛片一级在线 | 欧洲亚洲成人 | 国产成人鲁鲁免费视频a | 国产夫妻在线观看 | 中国另类性xxxhd100% | 日本不卡视频一区二区三区 | 色播在线观看 | 30一40一50女人毛片 | 国产精品一区二区福利视频 | 欧美一区二区视频在线观看 | 欧美精品v国产精品v日韩精品 | 91国产一区| 国内自拍偷区亚洲综合伊人 | 色婷婷导航| 国产欧美综合一区二区三区 | 一区二区视频在线观看免费 | 国产激情片 | 亚洲在线视频观看 | 国产自在线 | 国产乱人乱精一区二视频国产精品 | 久久精品黄aa片一区二区三区 | 亚洲欧美日韩愉拍自拍 | 亚洲精品主播一区二区三区 | 国产精品另类激情久久久免费 | 国产乱人视频 | 午夜成人亚洲理论片在线观看 | 6080啪啪 | 毛片24种姿势无遮无拦 | 亚洲第一视频在线 | 成人免费淫片视频软件 | 一级做人爰片全过 | 久久婷婷色综合 | av亚洲产国偷v产偷v自拍 | 在线中文视频 | 欧美精品福利视频 | 亚洲产国偷v产偷v自拍色戒 | 伊人春色影院 | 国产免费一级特黄录像 | 狠狠色先锋资源网 | 秋霞福利影院 | 日本五十熟hd丰满 | 欧美高清性xxxxhd | 淫欲的代价k8经典网 | 99久久精品国产一区二区成人 | 国产午夜人做人免费视频 | 国产免费无码一区二区三区 | 亚洲永久免费视频 | 欧美日韩中文字幕在线 | 一本大道久久精品懂色aⅴ 一本大道久久卡一卡二卡三乱码 | 波多野结衣午夜 | 日日干天天操 | 婷婷综合网站 | 成人黄色片网站 | 日本中文有码 | yy6080理aa级伦大片一级 | 久久天天综合桃花久久 | 日韩人妻无码一区二区三区久久99 | 精品偷拍一区二区三区在线看 | 久久91久久久久麻豆精品 | 中文字幕校园春色 | 国产又粗又猛又爽又黄的视频p站 | 久久人人爽人人爽人人片av卡 | 免费毛片www com cn | 鲁大师影院在线观看 | 国产成人精品一区 | 亚洲黄色激情 | 一道本久在线中文字幕 | 激情内射亚洲一区二区三区 | 久久久国产精品一区二区三区 | 三区四区乱码不卡 | 超碰免费公开在线 | 久久99日韩国产精品久久99 | 国产精品另类激情久久久免费 | 国内自拍一区 | 中国女人裸体乱淫 | 亚洲网在线 | 一性一交一口添一摸视频 | 狠狠色噜噜狠狠狠狠奇米777 | 午夜香蕉视频 | 妹子色综合 | 亚洲日本va中文字幕久久 | 最近中文字幕免费视频 | 免费韩国羞羞网站视频 | 91偷自产一区二区三区蜜臀 | 国产新婚疯狂做爰视频 | 国产日韩欧美中文 | 中文成人在线 | 亚洲性生活网站 | 国产精品久久久久久吹潮 | 午夜久久久久久久久久 | 国产精品一二三区视频 | 成人欧美日韩一区二区三区 | 亚洲精品午夜无码电影网 | 久热免费在线视频 | 国产v亚洲v天堂无码 | 青青视频二区 | 色婷婷综合久久久中文字幕 | 免费黄色毛片 | 天天av天天翘 | 精品一区二区三区在线视频 | 在线免费观看中文字幕 | www.中文字幕在线观看 | 免费又黄又爽又色的视频 | 一本本月无码- | 欧美激情综合五月色丁香 | 操人小视频 | 国产人妖av | 天堂伊人久久 | 丁香久久性网 | 中国少妇xxxⅹ性xxxx | 99热手机在线观看 | 美女爆吸乳羞羞免费网站妖精 | 欧美大片在线看 | 爱情岛论坛线路一区二区 | 亚洲91久久 | 欧美最猛黑人xxxx黑人猛交 | 伊人久久激情 | 国产精品视频一区二区三 | 成人av一区| 中文字幕日产每天更新40 | 日韩欧美视频网站 | 日本极品视频 | 国产男女猛烈无遮挡免费视频 | 国产吞精囗交免费视频网站 | 日韩激情久久 | 剧情av在线 | 国内精品久久久久久久影视麻豆 | 亚洲一区和二区 | 成人一区二区视频 | 大陆性猛交xxxx乱大交 | 91蜜桃传媒精品久久久一区二区 | 久久亚洲中文字幕精品一区 | 精品国产一区二区三区av爱情岛 | 国产综合无码一区二区色蜜蜜 |