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

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

?? ftpcmd_y.txt

?? 基于UNIX的FTP源代碼
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
/*	$OpenBSD: ftpcmd.y,v 1.50 2008/06/30 12:03:51 ragge Exp $	*/
/*	$NetBSD: ftpcmd.y,v 1.7 1996/04/08 19:03:11 jtc Exp $	*/

/*
 * Copyright (c) 1985, 1988, 1993, 1994
 *	The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 *
 *	@(#)ftpcmd.y	8.3 (Berkeley) 4/6/94
 */

/*
 * Grammar for FTP commands.
 * See RFC 959.
 */

%{

#ifndef lint
#if 0
static const char sccsid[] = "@(#)ftpcmd.y	8.3 (Berkeley) 4/6/94";
#else
static const char rcsid[] =
    "$OpenBSD: ftpcmd.y,v 1.50 2008/06/30 12:03:51 ragge Exp $";
#endif
#endif /* not lint */

#include <sys/param.h>
#include <sys/socket.h>
#include <sys/stat.h>

#include <netinet/in.h>
#include <arpa/ftp.h>

#include <ctype.h>
#include <errno.h>
#include <glob.h>
#include <pwd.h>
#include <signal.h>
#include <tzfile.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
#include <time.h>
#include <unistd.h>
#include <netdb.h>

#include "monitor.h"
#include "extern.h"

extern	union sockunion data_dest;
extern	int logged_in;
extern	struct passwd *pw;
extern	int guest;
extern	int logging;
extern	int type;
extern	int form;
extern	int debug;
extern	int timeout;
extern	int maxtimeout;
extern  int pdata;
extern	char hostname[], remotehost[];
extern	char proctitle[];
extern	int usedefault;
extern  int transflag;
extern  char tmpline[];
extern	int portcheck;
extern	union sockunion his_addr;
extern	int umaskchange;

off_t	restart_point;

static	int cmd_type;
static	int cmd_form;
static	int cmd_bytesz;
static	int state;
static	int quit;
char	cbuf[512];
char	*fromname;

%}

%union {
	int	i;
	char   *s;
}

%token
	A	B	C	E	F	I
	L	N	P	R	S	T

	SP	CRLF	COMMA	ALL

	USER	PASS	ACCT	REIN	QUIT	PORT
	PASV	TYPE	STRU	MODE	RETR	STOR
	APPE	MLFL	MAIL	MSND	MSOM	MSAM
	MRSQ	MRCP	ALLO	REST	RNFR	RNTO
	ABOR	DELE	CWD	LIST	NLST	SITE
	STAT	HELP	NOOP	MKD	RMD	PWD
	CDUP	STOU	SMNT	SYST	SIZE	MDTM

	LPRT	LPSV	EPRT	EPSV

	UMASK	IDLE	CHMOD

	LEXERR

%token	<s> STRING
%token	<i> NUMBER

%type	<i> check_login check_login_epsvall octal_number byte_size
%type	<i> struct_code mode_code type_code form_code
%type	<s> pathstring pathname password username
%type	<i> host_port host_long_port4 host_long_port6

%start	cmd_list

%%

cmd_list
	: /* empty */
	| cmd_list cmd
		{
			if (fromname) {
				free(fromname);
				fromname = NULL;
			}
			restart_point = (off_t) 0;
		}
	| cmd_list rcmd
	;

cmd
	: USER SP username CRLF
		{
			monitor_user($3);
			free($3);
		}
	| PASS SP password CRLF
		{
			quit = monitor_pass($3);
			memset($3, 0, strlen($3));
			free($3);

			/* Terminate unprivileged pre-auth slave */
			if (quit)
				_exit(0);
		}
	| PORT check_login_epsvall SP host_port CRLF
		{
			if ($2) {
				if ($4) {
					usedefault = 1;
					reply(500,
					    "Illegal PORT rejected (range errors).");
				} else if (portcheck &&
				    ntohs(data_dest.su_sin.sin_port) < IPPORT_RESERVED) {
					usedefault = 1;
					reply(500,
					    "Illegal PORT rejected (reserved port).");
				} else if (portcheck &&
				    memcmp(&data_dest.su_sin.sin_addr,
				    &his_addr.su_sin.sin_addr,
				    sizeof data_dest.su_sin.sin_addr)) {
					usedefault = 1;
					reply(500,
					    "Illegal PORT rejected (address wrong).");
				} else {
					usedefault = 0;
					if (pdata >= 0) {
						(void) close(pdata);
						pdata = -1;
					}
					reply(200, "PORT command successful.");
				}
			}
		}
	| LPRT check_login_epsvall SP host_long_port4 CRLF
		{
			if ($2) {
				/* reject invalid host_long_port4 */
				if ($4) {
					reply(500,
					    "Illegal LPRT command rejected");
					usedefault = 1;
				} else {
					usedefault = 0;
					if (pdata >= 0) {
						(void) close(pdata);
						pdata = -1;
					}
					reply(200, "LPRT command successful.");
				}
			}
		}

	| LPRT check_login_epsvall SP host_long_port6 CRLF
		{
			if ($2) {
				/* reject invalid host_long_port6 */
				if ($4) {
					reply(500,
					    "Illegal LPRT command rejected");
					usedefault = 1;
				} else {
					usedefault = 0;
					if (pdata >= 0) {
						(void) close(pdata);
						pdata = -1;
					}
					reply(200, "LPRT command successful.");
				}
			}
		}

	| EPRT check_login_epsvall SP STRING CRLF
		{
			if ($2)
				extended_port($4);
			free($4);
		}

	| PASV check_login_epsvall CRLF
		{
			if ($2)
				passive();
		}
	| LPSV check_login_epsvall CRLF
		{
			if ($2)
				long_passive("LPSV", PF_UNSPEC);
		}
	| EPSV check_login SP NUMBER CRLF
		{
			if ($2)
				long_passive("EPSV", epsvproto2af($4));
		}
	| EPSV check_login SP ALL CRLF
		{
			if ($2) {
				reply(200, "EPSV ALL command successful.");
				epsvall++;
			}
		}
	| EPSV check_login CRLF
		{
			if ($2)
				long_passive("EPSV", PF_UNSPEC);
		}
	| TYPE check_login SP type_code CRLF
		{
			if ($2) {
				switch (cmd_type) {

				case TYPE_A:
					if (cmd_form == FORM_N) {
						reply(200, "Type set to A.");
						type = cmd_type;
						form = cmd_form;
					} else
						reply(504, "Form must be N.");
					break;

				case TYPE_E:
					reply(504, "Type E not implemented.");
					break;

				case TYPE_I:
					reply(200, "Type set to I.");
					type = cmd_type;
					break;

				case TYPE_L:
					if (cmd_bytesz == 8) {
						reply(200,
						    "Type set to L (byte size 8).");
						    type = cmd_type;
					} else
						reply(504, "Byte size must be 8.");

				}
			}
		}
	| STRU check_login SP struct_code CRLF
		{
			if ($2) {
				switch ($4) {

				case STRU_F:
					reply(200, "STRU F ok.");
					break;

				default:
					reply(504, "Unimplemented STRU type.");
				}
			}
		}
	| MODE check_login SP mode_code CRLF
		{
			if ($2) {
				switch ($4) {

				case MODE_S:
					reply(200, "MODE S ok.");
					break;

				default:
					reply(502, "Unimplemented MODE type.");
				}
			}
		}
	| ALLO check_login SP NUMBER CRLF
		{
			if ($2) {
				reply(202, "ALLO command ignored.");
			}
		}
	| ALLO check_login SP NUMBER SP R SP NUMBER CRLF
		{
			if ($2) {
				reply(202, "ALLO command ignored.");
			}
		}
	| RETR check_login SP pathname CRLF
		{
			if ($2 && $4 != NULL)
				retrieve(NULL, $4);
			if ($4 != NULL)
				free($4);
		}
	| STOR check_login SP pathname CRLF
		{
			if ($2 && $4 != NULL)
				store($4, "w", 0);
			if ($4 != NULL)
				free($4);
		}
	| APPE check_login SP pathname CRLF
		{
			if ($2 && $4 != NULL)
				store($4, "a", 0);
			if ($4 != NULL)
				free($4);
		}
	| NLST check_login CRLF
		{
			if ($2)
				send_file_list(".");
		}
	| NLST check_login SP STRING CRLF
		{
			if ($2 && $4 != NULL)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩免费观看一区二区三区| 中文字幕一区二区视频| 欧洲精品视频在线观看| 粉嫩av一区二区三区粉嫩| 国产伦精品一区二区三区免费| 裸体在线国模精品偷拍| 精品写真视频在线观看| 国产精品一区专区| www.亚洲人| 制服丝袜中文字幕亚洲| 欧美高清一级片在线| 91精品国产美女浴室洗澡无遮挡| 欧美日韩激情在线| 日韩一区二区影院| 久久久久久久免费视频了| 国产三区在线成人av| 亚洲日本电影在线| 亚洲人成人一区二区在线观看 | 国产精品美女久久久久久| 日本一区二区三级电影在线观看| 国产精品久久久久影院| 一区二区三区国产精品| 日韩av在线发布| 国产成人午夜精品影院观看视频 | 欧美丝袜自拍制服另类| 欧美色手机在线观看| 欧美日韩成人在线一区| 精品国产乱码91久久久久久网站| 久久青草国产手机看片福利盒子 | 亚洲精品一线二线三线无人区| 久久久久亚洲蜜桃| 亚洲欧美日韩综合aⅴ视频| 亚洲第一成年网| 九九九精品视频| 久久精品无码一区二区三区| 日韩不卡免费视频| 麻豆国产一区二区| 成人开心网精品视频| 欧美亚洲动漫制服丝袜| 国产欧美一区二区精品性色| 午夜精品久久久久久久久| 国产高清精品久久久久| 制服.丝袜.亚洲.中文.综合| 中文字幕在线不卡| 欧美成人激情免费网| 一区二区三区国产豹纹内裤在线| 极品尤物av久久免费看| 欧美在线不卡视频| 国产欧美精品一区二区色综合| 一区2区3区在线看| 国产成人av在线影院| 欧美人xxxx| 中文字幕在线一区免费| 精品在线免费观看| 欧美日韩国产免费| 尤物在线观看一区| 成人激情校园春色| 久久九九久精品国产免费直播| 亚洲第一主播视频| 色婷婷av一区二区| 国产精品少妇自拍| 精品无人码麻豆乱码1区2区| 欧美一区二区三区在线电影| 亚洲高清不卡在线| 在线一区二区三区四区五区 | 狠狠久久亚洲欧美| 7777精品久久久大香线蕉| 亚洲码国产岛国毛片在线| 国产成都精品91一区二区三| 精品久久一二三区| 日本一不卡视频| 欧美色成人综合| 亚洲精品乱码久久久久久| 9色porny自拍视频一区二区| 国产精品全国免费观看高清 | 99国产精品一区| 2014亚洲片线观看视频免费| 91精品国产综合久久福利| 亚洲国产精品一区二区www| 色老头久久综合| 一区二区三区日韩欧美| 91国产免费看| 亚洲一二三四在线| 51精品久久久久久久蜜臀| 青青草国产精品亚洲专区无| 欧美一区二区三级| 国产在线精品国自产拍免费| 欧美国产一区视频在线观看| bt欧美亚洲午夜电影天堂| 一区二区日韩电影| 日韩一区二区麻豆国产| 国产一区免费电影| 国产精品国产三级国产普通话三级| 97久久超碰国产精品| 丝袜国产日韩另类美女| 欧美成va人片在线观看| 成人国产免费视频| 亚洲aaa精品| 国产日本欧美一区二区| 色综合久久天天综合网| 秋霞午夜鲁丝一区二区老狼| 久久久久久久一区| 欧美撒尿777hd撒尿| 国产精品自在欧美一区| 夜夜嗨av一区二区三区中文字幕| 日韩午夜在线播放| 色综合久久中文字幕综合网| 日本欧美一区二区| 国产精品高潮呻吟久久| 日韩欧美成人激情| 一本大道久久a久久精品综合| 免费成人结看片| 欧美性色aⅴ视频一区日韩精品| 日本在线观看不卡视频| 国产精品麻豆一区二区| 在线播放中文字幕一区| 成人国产精品免费观看视频| 日韩在线一区二区| 国产精品久久久久久久久晋中 | 免费成人小视频| 一色屋精品亚洲香蕉网站| 欧美精品成人一区二区三区四区| 国产精品66部| 日韩二区三区在线观看| 国产精品成人免费| 精品国内二区三区| 欧美色图在线观看| 成人综合婷婷国产精品久久 | 国产欧美精品在线观看| 欧美丰满嫩嫩电影| 欧美在线观看视频在线| 99久久国产免费看| 成人在线视频一区二区| 韩国av一区二区三区| 日韩vs国产vs欧美| 午夜精品123| 亚洲一区二区影院| 国产日韩亚洲欧美综合| 日韩你懂的在线播放| 欧美亚洲动漫制服丝袜| 国产福利视频一区二区三区| 日本91福利区| 日韩精品每日更新| 日韩精彩视频在线观看| 99精品欧美一区| 成人美女视频在线观看| 国产在线国偷精品产拍免费yy| 久久国产麻豆精品| 老司机精品视频导航| 免费在线观看日韩欧美| 亚洲成人激情av| 亚洲第一福利一区| 亚洲成人在线网站| 五月综合激情网| 视频一区视频二区中文字幕| 视频一区视频二区中文| 日韩av在线播放中文字幕| 美女性感视频久久| 韩国在线一区二区| 成人午夜又粗又硬又大| 风流少妇一区二区| 97国产一区二区| 欧美色爱综合网| 精品国产91亚洲一区二区三区婷婷| 日韩你懂的在线观看| 久久久噜噜噜久久人人看| 欧美国产精品中文字幕| 亚洲少妇30p| 亚洲欧美日韩中文播放| 亚洲国产wwwccc36天堂| 日韩电影网1区2区| 九色|91porny| 国产91精品久久久久久久网曝门 | 日韩精品一卡二卡三卡四卡无卡| 日韩专区欧美专区| 国产精品小仙女| 91丨porny丨在线| 欧美三级资源在线| 欧美绝品在线观看成人午夜影视| 精品国内二区三区| 国产精品美女一区二区三区 | 欧美tk丨vk视频| 欧美二区三区的天堂| 久久久国产一区二区三区四区小说 | 美女国产一区二区| 成人黄色国产精品网站大全在线免费观看| 成人免费精品视频| 欧美精品久久久久久久多人混战 | 日韩电影在线看| 国产在线视频精品一区| 最新久久zyz资源站| 日本美女一区二区| 99精品视频在线免费观看| 日韩一区二区三区视频在线| 中文字幕一区二区在线观看| 精品一区二区免费在线观看| 欧美综合色免费| 国产精品萝li| 精品亚洲成a人| 91.com在线观看|