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

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

?? jobs.c++

?? fax相關的東西
?? C++
?? 第 1 頁 / 共 4 頁
字號:
/*	$Id: Jobs.c++,v 1.29 2006/06/12 18:28:55 aidan Exp $ *//* * Copyright (c) 1995-1996 Sam Leffler * Copyright (c) 1995-1996 Silicon Graphics, Inc. * HylaFAX is a trademark of Silicon Graphics * * Permission to use, copy, modify, distribute, and sell this software and  * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. *  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.   *  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE  * OF THIS SOFTWARE. */#include "port.h"#include "config.h"#include "Sys.h"#include "HylaFAXServer.h"#include "Dispatcher.h"#include "class2.h"#include <sys/file.h>#include <ctype.h>/* * Job state query and control commands. */Job::Job(const fxStr& qf, int f) : FaxRequest(qf,f){    lastmod = 0;    queued = false;}Job::~Job() {}/* * We need to override the default logic because faxq * assumes it's working directory is at the top of the * spooling area and we may be elsewhere.  We can also * simplify things because we know we're chroot'd to * the top of the spooling area--thus we don't need to * check for ``..'' and ``/'' being used to reference * files outside the spooling area. */boolJob::checkDocument(const char* pathname){    struct stat sb;    if (FileCache::lookup(fxStr::format("/%s", pathname), sb))	return (true);    int fd = Sys::open(pathname, 0);    if (fd == -1) {	logError("Can not access document file \"%s\": %s",	    pathname, strerror(errno));	return (false);    }    Sys::close(fd);    logError("Undetermined error with document file \"%s\"", pathname);    return (false);}fxIMPLEMENT_StrKeyPtrValueDictionary(JobDict, Job*)/* * Job state parameter access controls. * * There are three levels of access control applied to job state * information: administrator, owner, and other. * Access is controlled on a read+write basis.  Write accesses * can be further restricted to constrain written values to * be within a range; this is used to allow users to change * parameters within a restricted range (e.g. to up the maximum * number of tries but still constrain it to a sane value). */#define	A_RUSR	0400	// read permission: owner#define	A_WUSR	0200	// abitrary write permission: owner#define	A_MUSR	0100	// restricted write permission: owner#define	A_RADM	0040	// read permission: administrator#define	A_WADM	0020	// abitrary write permission: administrator#define	A_MADM	0010	// restricted write permission: administrator#define	A_ROTH	0004	// read permission: other#define	A_WOTH	0002	// abitrary write permission: other#define	A_MOTH	0001	// restricted write permission: other#define	A_READ	 004#define	A_WRITE	 002#define	A_MODIFY 001#define	N(a)		(sizeof (a) / sizeof (a[0]))static const struct {    Token	t;    u_int	protect;		// read+write protection} params[] = {    { T_BEGBR,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_BEGST,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_CHOPTHRESH,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_CLIENT,		A_RUSR|A_RADM|A_WADM|A_ROTH },    { T_COMMID,		A_RUSR|A_RADM|A_ROTH },    { T_COMMENTS,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_COVER,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_DATAFORMAT,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_DIALSTRING,	A_RUSR|A_WUSR|A_RADM|A_WADM },    { T_DOCUMENT,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_DONEOP,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_EXTERNAL,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_FAXNUMBER,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_FROM_COMPANY,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_FROM_LOCATION,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_FROM_USER,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_FROM_VOICE,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_GROUPID,	A_RUSR|A_RADM|A_ROTH },    { T_JOBID,		A_RUSR|A_RADM|A_ROTH },    { T_JOBINFO,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_JOBTYPE,	A_RUSR|A_RADM|A_ROTH },    { T_LASTTIME,	A_RUSR|A_MUSR|A_RADM|A_WADM|A_ROTH },    { T_MAXDIALS,	A_RUSR|A_MUSR|A_RADM|A_WADM|A_ROTH },    { T_MAXPAGES,	A_RUSR|A_MUSR|A_RADM|A_WADM|A_ROTH },    { T_MAXTRIES,	A_RUSR|A_MUSR|A_RADM|A_WADM|A_ROTH },    { T_MINBR,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_MODEM,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_OWNER,		A_RUSR|A_RADM|A_WADM|A_ROTH },    { T_NDIALS,		A_RUSR|A_RADM|A_ROTH },    { T_NOTIFY,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_NOTIFYADDR,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_NPAGES,		A_RUSR|A_RADM|A_ROTH },    { T_NTRIES,		A_RUSR|A_RADM|A_ROTH },    { T_PAGECHOP,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_PAGELENGTH,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_PAGEWIDTH,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_PASSWD,		A_RUSR|A_WUSR|A_RADM|A_WADM },    { T_POLL,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_REGARDING,	A_RUSR|A_MUSR|A_RADM|A_WADM|A_ROTH },    { T_RETRYTIME,	A_RUSR|A_MUSR|A_RADM|A_WADM|A_ROTH },    { T_SCHEDPRI,	A_RUSR|A_MUSR|A_RADM|A_WADM|A_ROTH },    { T_SENDTIME,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_STATE,		A_RUSR|A_RADM|A_ROTH },    { T_STATUS,		A_RUSR|A_RADM|A_WADM|A_ROTH },    { T_SUBADDR,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_TAGLINE,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_TOTDIALS,	A_RUSR|A_RADM|A_ROTH },    { T_TOTPAGES,	A_RUSR|A_RADM|A_ROTH },    { T_TOTTRIES,	A_RUSR|A_RADM|A_ROTH },    { T_TO_COMPANY,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_TO_LOCATION,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_TO_USER,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_TO_VOICE,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_TSI,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_USE_CONTCOVER,	A_RUSR|A_RADM|A_WADM|A_ROTH },    { T_USE_ECM,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_USE_TAGLINE,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_USE_XVRES,	A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_USRKEY,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_VRES,		A_RUSR|A_WUSR|A_RADM|A_WADM|A_ROTH },    { T_NIL,		0 },};/* * Check client permission to do the specified operation * on the specified job state parameter.  Operation can * be a combination of A_READ+A_WRITE+A_MODIFY.  Note that * ownership is based on login account and not fax uid; * this may need to be rethought. */boolHylaFAXServer::checkAccess(const Job& job, Token t, u_int op){    u_int m = 0;    if (t == T_JOB) {    	m = jobProtection;    } else {	u_int n = N(params)-1;	u_int i = 0;	while (i < n && params[i].t != t)	    i++;	m = params[i].protect;    }    if (m&op)					// other/public access	return (true);    if (IS(PRIVILEGED) && ((m>>3)&op))		// administrative access	return (true);    if (job.owner == the_user && ((m>>6)&op))	// owner access	return (true);#if 0    if (checkOwnerUid && ((m>>6)&op)) 			// owner UID access	return (true);#endif    return (false);}static struct {    Token	t;    fxStr	Job::* p;} strvals[] = {    { T_JOBTYPE,	&Job::jobtype },    { T_EXTERNAL,	&Job::external },    { T_DIALSTRING,	&Job::number },    { T_NOTIFYADDR,	&Job::mailaddr },    { T_USRKEY,		&Job::jobtag },    { T_MODEM,		&Job::modem },    { T_TO_USER,	&Job::receiver },    { T_TO_COMPANY,	&Job::company },    { T_TO_LOCATION,	&Job::location },    { T_TO_VOICE,	&Job::voice },    { T_FROM_USER,	&Job::sender },    { T_FROM_COMPANY,	&Job::fromcompany },    { T_FROM_LOCATION,	&Job::fromlocation },    { T_FROM_VOICE,	&Job::fromvoice },    { T_PASSWD,		&Job::passwd },    { T_CLIENT,		&Job::client },    { T_FAXNUMBER,	&Job::faxnumber },    { T_TSI,		&Job::tsi },    { T_TAGLINE,	&Job::tagline },    { T_SUBADDR,	&Job::subaddr },    { T_GROUPID,	&Job::groupid },    { T_JOBID,		&Job::jobid },    { T_JOBINFO,	&Job::jobtag },    { T_OWNER,		&Job::owner },    { T_STATUS,		&Job::notice },    { T_DONEOP,		&Job::doneop },    { T_COMMID,		&Job::commid },    { T_REGARDING,	&Job::regarding },    { T_COMMENTS,	&Job::comments },};static struct {    Token	t;    u_short	Job::* p;} shortvals[] = {    { T_TOTPAGES,	&Job::totpages },    { T_NPAGES,		&Job::npages },    { T_NTRIES,		&Job::ntries },    { T_NDIALS,		&Job::ndials },    { T_TOTDIALS,	&Job::totdials },    { T_MAXDIALS,	&Job::maxdials },    { T_TOTTRIES,	&Job::tottries },    { T_MAXTRIES,	&Job::maxtries },    { T_PAGEWIDTH,	&Job::pagewidth },    { T_PAGELENGTH,	&Job::pagelength },    { T_VRES,		&Job::resolution },    { T_SCHEDPRI,	&Job::usrpri },    { T_MINBR,		&Job::minbr },    { T_BEGBR,		&Job::desiredbr },    { T_BEGST,		&Job::desiredst },};static const char* notifyVals[4] = {    "NONE",		// no_notice    "DONE",		// when_done    "REQUEUE",		// when_requeued    "DONE+REQUEUE"	// when_done|when_requeued};static const char* chopVals[4] = {    "DEFAULT",		// chop_default    "NONE",		// chop_none    "ALL",		// chop_all    "LAST"		// chop_last};static const char* dataVals[] = {    "G31D",		// Group 3, 1-D    "G32D",		// Group 3, 2-D    "G32DUNC",		// Group 3, 2-D (w/ uncompressed)    "G4"		// Group 4};static const char* stateVals[] = {    "UNDEFINED",	// undefined state (should never be used)    "SUSPENDED",	// not being scheduled    "PENDING",		// waiting for time to send    "SLEEPING",		// waiting for scheduled timeout    "BLOCKED",		// blocked by concurrent activity    "READY",		// ready to be go, waiting for resources    "ACTIVE",		// actively being processed    "DONE",		// processing completed with success    "FAILED",		// processing completed with failure};static const char* docTypeNames[] = {    "FAX",		// send_fax    "TIFF",		// send_tiff    "TIFF",		// send_tiff_saved    "PDF",		// send_pdf    "PDF",		// send_pdf_saved    "PS",		// send_postscript    "PS",		// send_postscript_saved    "PCL",		// send_pcl    "PCL",		// send_pcl_saved    "DATA",		// send_data    "DATA",		// send_data_saved    "POLL",		// send_poll    "PAGE",		// send_page    "PAGE",		// send_page_saved    "UUCP",		// send_uucp    "UNKNOWN",		// send_unknown};static const char*boolString(bool b){    return (b ? "YES" : "NO");}voidHylaFAXServer::replyBoolean(int code, bool b){    reply(code, "%s", boolString(b));}/* * Check that the job's in-memory state is consistent * with what is on disk.  If the on-disk state is newer then * read it in.  If the job has been removed then remove our * reference, reset the current job back to the default job, * and send the client an error reply.  This method is used * before each place a job's state is access. */boolHylaFAXServer::checkJobState(Job* job){    /*     * Verify job is still around (another process has     * not deleted it) and if the on-disk state has     * been updated, re-read the job description file.     */    struct stat sb;    if (!FileCache::update("/" | job->qfile, sb)) {	jobs.remove(job->jobid);	if (job == curJob)			// make default job current	    curJob = &defJob;	delete job, job = NULL;	return (false);    }    if (job->lastmod < sb.st_mtime) {	(void) updateJobFromDisk(*job);	job->lastmod = sb.st_mtime;    }    return (true);}/* * Check if it's ok to do the specified operation on the * current job's state parameter.  If not, return the appropriate * error reply.   We disallow modifications on jobs that * do not appear to be suspended since otherwise the mods * could be lost (in our case they will be lost due to the * way that things work). */boolHylaFAXServer::checkParm(Job& job, Token t, u_int op){    if (!checkJobState(&job)) {			// insure consistent state	reply(500, "Cannot access job state; job deleted by another party.");	return (false);    } else if (!checkAccess(job, t, op)) {	reply(503, "Permission denied: no %s access to job parameter %s."	    , (op == A_READ ? "read" : "write")	    , parmToken(t)	);	return (false);    } else if ((op & (A_WRITE|A_MODIFY)) &&      job.state != FaxRequest::state_suspended && job.jobid != "default") {	reply(503, "Suspend the job with JSUSP first.");	return (false);    } else	return (true);}/* * Respond to a job state parameter query. */voidHylaFAXServer::replyJobParamValue(Job& job, int code, Token t){    if (!checkParm(job, t, A_READ))	return;    u_int i, n;    switch (t) {    case T_SENDTIME:	if (job.tts != 0) {	    const struct tm* tm = cvtTime(job.tts);	    // XXX should this include seconds?	    reply(code, "%4d%02d%02d%02d%02d%02d"		, tm->tm_year+1900		, tm->tm_mon+1		, tm->tm_mday		, tm->tm_hour		, tm->tm_min		, tm->tm_sec	    );	} else	    reply(code, "NOW");	return;    case T_LASTTIME:	time_t tv; tv = job.killtime - job.tts;		// XXX for __GNUC__	reply(code, "%02d%02d%02d", tv/(24*60*60), (tv/(60*60))%24, (tv/60)%60);	return;    case T_RETRYTIME:	reply(code, "%02d%02d", job.retrytime/60, job.retrytime%60);	return;    case T_STATE:	reply(code, "%s", stateVals[job.state]);	return;    case T_NOTIFY:	reply(code, "%s", notifyVals[job.notify]);	return;    case T_PAGECHOP:	reply(code, "%s", chopVals[job.pagechop]);	return;    case T_CHOPTHRESH:	reply(code, "%g", job.chopthreshold);	return;    case T_DATAFORMAT:	reply(code, "%s", dataVals[job.desireddf]);	return;    case T_USE_ECM:	replyBoolean(code, job.desiredec);	return;    case T_USE_TAGLINE:	replyBoolean(code, job.desiredtl);	return;    case T_USE_XVRES:	replyBoolean(code, job.usexvres);	return;    case T_USE_CONTCOVER:	replyBoolean(code, job.useccover);	return;    case T_DOCUMENT:	for (i = 0, n = job.items.length(); i < n; i++) {	    const FaxItem& fitem = job.items[i];	    // XXX should cover page docs not be shown?	    switch (fitem.op) {	    case FaxRequest::send_pdf:	    case FaxRequest::send_pdf_saved:	    case FaxRequest::send_tiff:	    case FaxRequest::send_tiff_saved:	    case FaxRequest::send_postscript:	    case FaxRequest::send_postscript_saved:	    case FaxRequest::send_pcl:	    case FaxRequest::send_pcl_saved:		lreply(code, "%s %s",		    docTypeNames[fitem.op], (const char*) fitem.item);		break;	    }	}	reply(code, "End of documents.");	return;    case T_COVER:	for (i = 0, n = job.items.length(); i < n; i++) {	    const FaxItem& fitem = job.items[i];	    if (fitem.item.length() > 7 && fitem.item.tail(6) == ".cover") {		switch (fitem.op) {		case FaxRequest::send_tiff:		case FaxRequest::send_tiff_saved:		case FaxRequest::send_pdf:		case FaxRequest::send_pdf_saved:		case FaxRequest::send_postscript:		case FaxRequest::send_postscript_saved:		case FaxRequest::send_pcl:		case FaxRequest::send_pcl_saved:		    reply(code, "%s %s",			docTypeNames[fitem.op], (const char*) fitem.item);		    return;		}	    }	}	reply(code+1, "No cover page document.");	return;    case T_POLL:	for (i = 0, n = job.items.length(); i < n; i++) {	    const FaxItem& fitem = job.items[i];	    if (fitem.op == FaxRequest::send_poll)		lreply(code, "\"%s\" \"%s\"",		    (const char*) fitem.item, (const char*) fitem.addr);	}	reply(code, "End of polling items.");	return;    }    for (i = 0, n = N(strvals); i < n; i++)	if (strvals[i].t == t) {	    reply(code, "%s", (const char*) (job.*strvals[i].p));	    return;	}    for (i = 0, n = N(shortvals); i < n; i++)	if (shortvals[i].t == t) {	    reply(code, "%u", job.*shortvals[i].p);	    return;	}    reply(500, "Botch: no support for querying parameter value.");}void

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美网站大全在线观看| 亚洲成人tv网| 国产视频一区二区在线| wwwwww.欧美系列| 日韩精品一区二区三区中文不卡 | 91蜜桃婷婷狠狠久久综合9色| 国产麻豆一精品一av一免费| 国产成人av在线影院| 国产91精品精华液一区二区三区| 国产麻豆视频精品| av电影一区二区| 成人av免费在线| 色播五月激情综合网| 在线精品观看国产| 欧美乱妇20p| 欧美va天堂va视频va在线| 久久蜜臀中文字幕| 亚洲欧洲成人精品av97| 亚洲午夜av在线| 精品中文字幕一区二区小辣椒| 国产一区二区三区av电影| 高清shemale亚洲人妖| av不卡在线观看| 欧美高清激情brazzers| 精品久久久久久亚洲综合网| 国产喷白浆一区二区三区| 一区二区三区在线看| 日本成人超碰在线观看| 丰满少妇久久久久久久| 91福利国产精品| 欧美成人一区二区三区片免费| 国产精品日产欧美久久久久| 亚洲尤物在线视频观看| 国产麻豆日韩欧美久久| 欧洲av一区二区嗯嗯嗯啊| 精品精品欲导航| 一区二区三区四区av| 麻豆精品在线看| 色婷婷久久久久swag精品| 日韩视频一区二区三区在线播放 | 欧美日韩成人一区| 2020国产精品久久精品美国| 樱桃视频在线观看一区| 久久成人18免费观看| 91久久精品一区二区| 欧美精品一区二区三区四区| 亚洲国产一区二区a毛片| 国产·精品毛片| 欧美成人猛片aaaaaaa| 亚洲免费av在线| 丁香婷婷综合网| 日韩精品一区二区三区四区视频| 亚洲精品伦理在线| 国产99久久久国产精品潘金 | 国产亚洲精品精华液| 日韩精品1区2区3区| 91欧美一区二区| 久久久不卡网国产精品一区| 另类小说综合欧美亚洲| 欧美日韩精品一二三区| 亚洲一二三四区不卡| 成人av电影在线播放| 久久欧美中文字幕| 久久aⅴ国产欧美74aaa| 在线播放欧美女士性生活| 亚洲综合在线电影| 99久久精品国产一区二区三区| www亚洲一区| 激情综合网最新| 精品欧美一区二区久久| 麻豆极品一区二区三区| 欧美一区二区美女| 日本最新不卡在线| 在线不卡中文字幕播放| 奇米精品一区二区三区在线观看一| 日本高清视频一区二区| 亚洲黄色av一区| 欧美伊人久久久久久午夜久久久久| 亚洲天天做日日做天天谢日日欢| 成人美女在线观看| 亚洲欧美偷拍三级| 色网综合在线观看| 亚洲一区在线视频| 欧美在线综合视频| 日日摸夜夜添夜夜添精品视频 | 99久久精品免费精品国产| 亚洲视频电影在线| 欧美午夜在线一二页| 日韩电影免费在线| 国产午夜三级一区二区三| 成人午夜碰碰视频| 亚洲精品视频在线观看免费| 在线观看一区二区视频| 日韩影视精彩在线| 久久久久久久网| 日本精品免费观看高清观看| 婷婷丁香久久五月婷婷| 精品久久国产字幕高潮| av在线不卡网| 日韩中文字幕不卡| 国产喷白浆一区二区三区| 在线看国产日韩| 国内欧美视频一区二区| 亚洲欧美一区二区三区孕妇| 51久久夜色精品国产麻豆| 精品一区二区三区免费播放| 中文字幕在线一区二区三区| 欧美探花视频资源| 国产成a人亚洲精| 一区二区三区在线视频免费| 欧美xxxxx牲另类人与| 99精品欧美一区| 看片的网站亚洲| 一区二区三区精品视频在线| 精品国产一区二区亚洲人成毛片 | 亚洲午夜电影网| 国产欧美日韩另类视频免费观看 | 26uuu国产一区二区三区| 91在线观看免费视频| 精品影视av免费| 亚洲一二三区不卡| 久久久久久久久久久久久久久99| 欧美日韩国产一区| 成人av在线一区二区| 美女网站在线免费欧美精品| 亚洲精品乱码久久久久久黑人 | 欧美乱妇20p| 91视频你懂的| 国产一区二区三区电影在线观看| 午夜免费久久看| 亚洲色图在线播放| 国产精品欧美极品| 久久久久久夜精品精品免费| 日韩欧美一区二区免费| 欧美揉bbbbb揉bbbbb| 色综合久久88色综合天天 | 一区二区三区四区激情| 欧美国产一区在线| 精品久久五月天| 欧美一级在线视频| 欧美精品在线观看播放| 91麻豆swag| 91视频观看视频| 9人人澡人人爽人人精品| 国产成人综合亚洲91猫咪| 经典三级一区二区| 国产美女在线精品| 国产在线精品一区在线观看麻豆| 日韩av不卡一区二区| 男女男精品视频网| 奇米精品一区二区三区四区| 日本三级亚洲精品| 麻豆高清免费国产一区| 日韩成人av影视| 麻豆精品久久精品色综合| 精品无人码麻豆乱码1区2区| 国产乱子轮精品视频| 国产福利91精品| 波多野结衣亚洲| 99v久久综合狠狠综合久久| 色综合天天综合在线视频| 欧美性xxxxxx少妇| 欧美日本国产视频| 日韩女优制服丝袜电影| 久久久亚洲精品石原莉奈| 国产精品美女视频| 亚洲黄色av一区| 日韩成人一级片| 国产一区二区三区黄视频 | 亚洲成人动漫在线免费观看| 日日夜夜一区二区| 激情综合网av| 91蝌蚪porny成人天涯| 欧美日韩亚洲国产综合| 欧美成人伊人久久综合网| 亚洲国产精品t66y| 亚洲影视在线播放| 国产伦精品一区二区三区免费迷| bt欧美亚洲午夜电影天堂| 欧美狂野另类xxxxoooo| 久久综合色8888| 一区二区三区91| 精品一区二区免费视频| 波多野结衣亚洲一区| 91麻豆精品国产综合久久久久久| 久久嫩草精品久久久精品一| 亚洲另类中文字| 狠狠色伊人亚洲综合成人| 99久久夜色精品国产网站| 日韩一区二区视频| 亚洲免费观看高清| 韩国中文字幕2020精品| 91福利在线免费观看| 久久久综合精品| 亚洲第一主播视频| www.久久精品| 精品国产伦一区二区三区免费| 亚洲精品视频在线看| 国产精品2024| 日韩写真欧美这视频|