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

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

?? ftpd_c.txt

?? 基于UNIX的FTP源代碼
?? TXT
?? 第 1 頁 / 共 5 頁
字號:
	recvurg = 0;
	transflag = 0;
	return(-1);
}

/*
 * Transfer data from peer to "outstr" using the appropriate encapulation of
 * the data subject to Mode, Structure, and Type.
 *
 * N.B.: Form isn't handled.
 */
static int
receive_data(FILE *instr, FILE *outstr)
{
	int c;
	int cnt;
	char buf[BUFSIZ];
	struct sigaction sa, sa_saved;
	volatile int bare_lfs = 0;

	transflag++;
	switch (type) {

	case TYPE_I:
	case TYPE_L:
		memset(&sa, 0, sizeof(sa));
		sigfillset(&sa.sa_mask);
		sa.sa_flags = SA_RESTART;
		sa.sa_handler = lostconn;
		(void) sigaction(SIGALRM, &sa, &sa_saved);
		do {
			(void) alarm ((unsigned) timeout);
			cnt = read(fileno(instr), buf, sizeof(buf));
			(void) alarm (0);
			if (recvurg)
				goto got_oob;

			if (cnt > 0) {
				if (write(fileno(outstr), buf, cnt) != cnt)
					goto file_err;
				byte_count += cnt;
			}
		} while (cnt > 0);
		(void) sigaction(SIGALRM, &sa_saved, NULL);
		if (cnt < 0)
			goto data_err;
		transflag = 0;
		return (0);

	case TYPE_E:
		reply(553, "TYPE E not implemented.");
		transflag = 0;
		return (-1);

	case TYPE_A:
		while ((c = getc(instr)) != EOF) {
			if (recvurg)
				goto got_oob;
			byte_count++;
			if (c == '\n')
				bare_lfs++;
			while (c == '\r') {
				if (ferror(outstr))
					goto data_err;
				if ((c = getc(instr)) != '\n') {
					(void) putc ('\r', outstr);
					if (c == '\0' || c == EOF)
						goto contin2;
				}
			}
			(void) putc(c, outstr);
	contin2:	;
		}
		fflush(outstr);
		if (ferror(instr))
			goto data_err;
		if (ferror(outstr))
			goto file_err;
		transflag = 0;
		if (bare_lfs) {
			lreply(226,
			    "WARNING! %d bare linefeeds received in ASCII mode",
			    bare_lfs);
			printf("   File may not have transferred correctly.\r\n");
		}
		return (0);
	default:
		reply(550, "Unimplemented TYPE %d in receive_data", type);
		transflag = 0;
		return (-1);
	}

data_err:
	transflag = 0;
	reply(426, "Data Connection");
	return (-1);

file_err:
	transflag = 0;
	reply(452, "Error writing file");
	return (-1);

got_oob:
	myoob();
	recvurg = 0;
	transflag = 0;
	return (-1);
}

void
statfilecmd(char *filename)
{
	FILE *fin;
	int c;
	int atstart;
	char line[LINE_MAX];

	(void)snprintf(line, sizeof(line), "/bin/ls -lgA %s", filename);
	fin = ftpd_popen(line, "r");
	lreply(211, "status of %s:", filename);
	atstart = 1;
	while ((c = getc(fin)) != EOF) {
		if (c == '\n') {
			if (ferror(stdout)){
				perror_reply(421, "control connection");
				(void) ftpd_pclose(fin);
				dologout(1);
				/* NOTREACHED */
			}
			if (ferror(fin)) {
				perror_reply(551, filename);
				(void) ftpd_pclose(fin);
				return;
			}
			(void) putc('\r', stdout);
		}
		if (atstart && isdigit(c))
			(void) putc(' ', stdout);
		(void) putc(c, stdout);
		atstart = (c == '\n');
	}
	(void) ftpd_pclose(fin);
	reply(211, "End of Status");
}

void
statcmd(void)
{
	union sockunion *su;
	u_char *a, *p;
	char hbuf[MAXHOSTNAMELEN];
	int ispassive;
	int error;

	lreply(211, "%s FTP server status:", hostname);
	error = getnameinfo((struct sockaddr *)&his_addr, his_addr.su_len,
	    hbuf, sizeof(hbuf), NULL, 0, NI_NUMERICHOST);
	printf("     Connected to %s", remotehost);
	if (error == 0 && strcmp(remotehost, hbuf) != 0)
		printf(" (%s)", hbuf);
	printf("\r\n");
	if (logged_in) {
		if (guest)
			printf("     Logged in anonymously\r\n");
		else
			printf("     Logged in as %s\r\n", pw->pw_name);
	} else if (askpasswd)
		printf("     Waiting for password\r\n");
	else
		printf("     Waiting for user name\r\n");
	printf("     TYPE: %s", typenames[type]);
	if (type == TYPE_A || type == TYPE_E)
		printf(", FORM: %s", formnames[form]);
	if (type == TYPE_L)
#if NBBY == 8
		printf(" %d", NBBY);
#else
		printf(" %d", bytesize);	/* need definition! */
#endif
	printf("; STRUcture: %s; transfer MODE: %s\r\n",
	    strunames[stru], modenames[mode]);
	ispassive = 0;
	if (data != -1)
		printf("     Data connection open\r\n");
	else if (pdata != -1) {
		printf("     in Passive mode\r\n");
		su = (union sockunion *)&pasv_addr;
		ispassive++;
		goto printaddr;
	} else if (usedefault == 0) {
		size_t alen;
		int af, i;

		su = (union sockunion *)&data_dest;
printaddr:
		/* PASV/PORT */
		if (su->su_family == AF_INET) {
			if (ispassive)
				printf("211- PASV ");
			else
				printf("211- PORT ");
			a = (u_char *)&su->su_sin.sin_addr;
			p = (u_char *)&su->su_sin.sin_port;
			printf("(%u,%u,%u,%u,%u,%u)\r\n",
			    a[0], a[1], a[2], a[3],
			    p[0], p[1]);
		}

		/* LPSV/LPRT */
		alen = 0;
		switch (su->su_family) {
		case AF_INET:
			a = (u_char *)&su->su_sin.sin_addr;
			p = (u_char *)&su->su_sin.sin_port;
			alen = sizeof(su->su_sin.sin_addr);
			af = 4;
			break;
		case AF_INET6:
			a = (u_char *)&su->su_sin6.sin6_addr;
			p = (u_char *)&su->su_sin6.sin6_port;
			alen = sizeof(su->su_sin6.sin6_addr);
			af = 6;
			break;
		default:
			af = 0;
			break;
		}
		if (af) {
			if (ispassive)
				printf("211- LPSV ");
			else
				printf("211- LPRT ");
			printf("(%u,%llu", af, (unsigned long long)alen);
			for (i = 0; i < alen; i++)
				printf(",%u", a[i]);
			printf(",%u,%u,%u)\r\n", 2, p[0], p[1]);
		}

		/* EPRT/EPSV */
		switch (su->su_family) {
		case AF_INET:
			af = 1;
			break;
		case AF_INET6:
			af = 2;
			break;
		default:
			af = 0;
			break;
		}
		if (af) {
			char pbuf[10];
			union sockunion tmp = *su;

			if (tmp.su_family == AF_INET6)
				tmp.su_sin6.sin6_scope_id = 0;
			if (getnameinfo((struct sockaddr *)&tmp, tmp.su_len,
			    hbuf, sizeof(hbuf), pbuf, sizeof(pbuf),
			    NI_NUMERICHOST | NI_NUMERICSERV) == 0) {
				if (ispassive)
					printf("211- EPSV ");
				else
					printf("211- EPRT ");
				printf("(|%u|%s|%s|)\r\n",
				    af, hbuf, pbuf);
			}
		}
	} else
		printf("     No data connection\r\n");
	reply(211, "End of status");
}

void
fatal(char *s)
{

	reply(451, "Error in server: %s", s);
	reply(221, "Closing connection due to server error.");
	dologout(0);
	/* NOTREACHED */
}

void
reply(int n, const char *fmt, ...)
{
	char *buf, *p, *next;
	int rval;
	va_list ap;

	va_start(ap, fmt);
	rval = vasprintf(&buf, fmt, ap);
	va_end(ap);
	if (rval == -1 || buf == NULL) {
		printf("412 Local resource failure: malloc\r\n");
		fflush(stdout);
		dologout(1);
	}
	next = buf;
	while ((p = strsep(&next, "\n\r"))) {
		printf("%d%s %s\r\n", n, (next != '\0') ? "-" : "", p);
		if (debug)
			syslog(LOG_DEBUG, "<--- %d%s %s", n,
			    (next != '\0') ? "-" : "", p);
	}
	(void)fflush(stdout);
	free(buf);
}


void
reply_r(int n, const char *fmt, ...)
{
	char *p, *next;
	char msg[BUFSIZ];
	char buf[BUFSIZ];
	va_list ap;
	struct syslog_data sdata = SYSLOG_DATA_INIT;

	sdata.log_fac = LOG_FTP;
	va_start(ap, fmt);
	vsnprintf(msg, sizeof(msg), fmt, ap);
	va_end(ap);

	next = msg;

	while ((p = strsep(&next, "\n\r"))) {
		snprintf(buf, sizeof(buf), "%d%s %s\r\n", n,
		    (next != '\0') ? "-" : "", p);
		write(STDOUT_FILENO, buf, strlen(buf));
		if (debug) {
			buf[strlen(buf) - 2] = '\0';
			syslog_r(LOG_DEBUG, &sdata, "<--- %s", buf);
		}
	}
}

void
lreply(int n, const char *fmt, ...)
{
	va_list ap;

	va_start(ap, fmt);
	(void)printf("%d- ", n);
	(void)vprintf(fmt, ap);
	va_end(ap);
	(void)printf("\r\n");
	(void)fflush(stdout);
	if (debug) {
		va_start(ap, fmt);
		syslog(LOG_DEBUG, "<--- %d- ", n);
		vsyslog(LOG_DEBUG, fmt, ap);
		va_end(ap);
	}
}

static void
ack(char *s)
{

	reply(250, "%s command successful.", s);
}

void
nack(char *s)
{

	reply(502, "%s command not implemented.", s);
}

/* ARGSUSED */
void
yyerror(char *s)
{
	cbuf[strcspn(cbuf, "\n")] = '\0';
	reply(500, "'%s': command not understood.", cbuf);
}

void
delete(char *name)
{
	struct stat st;

	LOGCMD("delete", name);
	if (stat(name, &st) < 0) {
		perror_reply(550, name);
		return;
	}
	if ((st.st_mode&S_IFMT) == S_IFDIR) {
		if (rmdir(name) < 0) {
			perror_reply(550, name);
			return;
		}
		goto done;
	}
	if (unlink(name) < 0) {
		perror_reply(550, name);
		return;
	}
done:
	ack("DELE");
}

void
cwd(char *path)
{
	FILE *message;

	if (chdir(path) < 0)
		perror_reply(550, path);
	else {
		if ((message = fopen(_PATH_CWDMESG, "r")) != NULL) {
			char line[LINE_MAX];

			while (fgets(line, sizeof(line), message) != NULL) {
				line[strcspn(line, "\n")] = '\0';
				lreply(250, "%s", line);
			}
			(void) fflush(stdout);
			(void) fclose(message);
		}
		ack("CWD");
	}
}

void
replydirname(const char *name, const char *message)
{
	char *p, *ep;
	char npath[MAXPATHLEN * 2];

	p = npath;
	ep = &npath[sizeof(npath) - 1];
	while (*name) {
		if (*name == '"') {
			if (ep - p < 2)
				break;
			*p++ = *name++;
			*p++ = '"';
		} else {
			if (ep - p < 1)
				break;
			*p++ = *name++;
		}
	}
	*p = '\0';
	reply(257, "\"%s\" %s", npath, message);
}

void
makedir(char *name)
{

	LOGCMD("mkdir", name);
	if (mkdir(name, 0777) < 0)
		perror_reply(550, name);
	else
		replydirname(name, "directory created.");
}

void
removedir(char *name)
{

	LOGCMD("rmdir", name);
	if (rmdir(name) < 0)
		perror_reply(550, name);
	else
		ack("RMD");
}

void
pwd(void)
{
	char path[MAXPATHLEN];

	if (getcwd(path, sizeof(path)) == NULL)
		perror_reply(550, "Can't get current directory");
	else
		replydirname(path, "is current directory.");
}

char *
renamefrom(char *name)
{
	struct stat st;

	if (stat(name, &st) < 0) {
		perror_reply(550, name);
		return ((char *)0);
	}
	reply(350, "File exists, ready for destination name");
	return (name);
}

void
renamecmd(char *from, char *to)
{

	LOGCMD2("rename", from, to);
	if (rename(from, to) < 0)
		perror_reply(550, "rename");
	else
		ack("RNTO");
}

static void
dolog(struct sockaddr *sa)
{
	char hbuf[sizeof(remotehost)];

	if (getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf), NULL, 0, 0) == 0)
		(void) strlcpy(remotehost, hbuf, sizeof(remotehost));
	else
		(void) strlcpy(remotehost, "unknown", sizeof(remotehost));

#ifdef HASSETPROCTITLE
	snprintf(proctitle, sizeof(proctitle), "%s: connected", remotehost);
	setproctitle("%s", proctitle);
#endif /* HASSETPROCTITLE */

	if (logging)
		syslog(LOG_INFO, "connection from %s", remotehost);
}

/*
 * Record logout in wtmp file and exit with supplied status.
 * NOTE: because this is called from signal handlers it cannot
 *       use stdio (or call other functions that use stdio).
 */
void
dologout(int status)
{

	transflag = 0;

	if (logged_in) {
		sigprocmask(SIG_BLOCK, &allsigs, NULL);
		ftpdlogwtmp(ttyline, "", "");
		if (doutmp)
			ftpd_logout(utmp.ut_line);
	}
	/* beware of flushing buffers after a SIGPIPE */
	_exit(status);
}

/*ARGSUSED*/
static void
sigurg(int signo)
{

	recvurg = 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人欧美一区二区三区1314| 国产精品影视天天线| 成人免费在线观看入口| 国产免费观看久久| 国产亚洲婷婷免费| 一本色道综合亚洲| 欧美午夜精品免费| 欧美日韩精品欧美日韩精品一综合| 色偷偷一区二区三区| 色悠悠久久综合| 欧洲精品视频在线观看| 欧美日韩国产首页| 91.麻豆视频| 精品日韩99亚洲| 久久人人超碰精品| 欧美激情一区二区三区全黄| 国产欧美日韩在线视频| 中文字幕第一区| 亚洲视频在线观看三级| 亚洲国产精品自拍| 捆绑调教一区二区三区| 国产精品中文有码| 91天堂素人约啪| 欧美日韩精品是欧美日韩精品| 日韩小视频在线观看专区| 欧美tickling挠脚心丨vk| 国产精品网站在线播放| 亚洲伊人伊色伊影伊综合网| 日韩和欧美一区二区三区| 狠狠色丁香久久婷婷综合丁香| 国产永久精品大片wwwapp| 99久久亚洲一区二区三区青草| 在线观看视频一区二区欧美日韩| 欧美三级中文字| 2017欧美狠狠色| 亚洲美女淫视频| 琪琪一区二区三区| 成人av电影在线观看| 欧美精品免费视频| 久久欧美一区二区| 亚洲人午夜精品天堂一二香蕉| 日韩中文字幕91| 成人午夜视频福利| 欧美揉bbbbb揉bbbbb| 久久精品人人做人人爽人人| 一区二区三区高清| 国产激情视频一区二区在线观看 | 久久精品人人做人人综合 | 欧美激情一二三区| 亚洲va欧美va人人爽| 国产乱人伦偷精品视频不卡| 91成人国产精品| 欧美精品一区二区三区高清aⅴ| 中文字幕一区二区不卡| 免费成人性网站| www.爱久久.com| av日韩在线网站| 一本色道久久综合精品竹菊| 久久新电视剧免费观看| 亚洲成人综合在线| jlzzjlzz国产精品久久| 日韩精品一区二区三区蜜臀| 一区二区三区精品在线观看| 国产精品1024| 欧美一区二区视频网站| 艳妇臀荡乳欲伦亚洲一区| 国产精品99久| 日韩一区二区免费视频| 亚洲高清免费一级二级三级| aaa欧美日韩| 国产校园另类小说区| 免费成人你懂的| 欧美性一级生活| 国产精品久久二区二区| 国产成人一区在线| 欧美tickle裸体挠脚心vk| 视频在线观看91| 欧美怡红院视频| 亚洲欧美激情视频在线观看一区二区三区| 激情综合网最新| 日韩情涩欧美日韩视频| 性做久久久久久免费观看欧美| 91猫先生在线| 国产精品美女久久久久久| 国产精品性做久久久久久| 欧美xxxx老人做受| 日本在线播放一区二区三区| 欧美乱妇一区二区三区不卡视频| 亚洲欧美日韩一区| 91色婷婷久久久久合中文| 中文字幕欧美国产| 成人午夜精品在线| 国产色一区二区| 国产在线视视频有精品| 久久综合给合久久狠狠狠97色69| 奇米精品一区二区三区四区| 欧美精品色一区二区三区| 午夜激情久久久| 9191成人精品久久| 水野朝阳av一区二区三区| 欧美二区乱c少妇| 日韩专区在线视频| 日韩欧美高清一区| 久久99精品国产麻豆婷婷洗澡| 日韩午夜激情免费电影| 久久精品国产99国产| 久久综合九色综合97_久久久| 国内精品伊人久久久久影院对白| 欧美tickling挠脚心丨vk| 国产精品一区二区在线看| 国产喷白浆一区二区三区| av在线一区二区三区| 一区二区三区四区乱视频| 欧美色综合网站| 秋霞午夜鲁丝一区二区老狼| 欧美va天堂va视频va在线| 国产寡妇亲子伦一区二区| 国产精品情趣视频| 91精彩视频在线| 日韩成人免费在线| 久久青草国产手机看片福利盒子| 国产白丝精品91爽爽久久| 日韩欧美黄色影院| 美腿丝袜一区二区三区| 2022国产精品视频| 9l国产精品久久久久麻豆| 亚洲成人午夜电影| 日韩欧美色综合| 北条麻妃一区二区三区| 一区二区三区小说| 日韩美女天天操| 成人午夜激情视频| 亚洲国产日韩a在线播放| 日韩免费高清电影| 9l国产精品久久久久麻豆| 亚洲va欧美va人人爽午夜 | 日韩av高清在线观看| 久久精品一区二区| 在线免费观看一区| 国模无码大尺度一区二区三区| 欧美激情在线看| 欧美性生活大片视频| 国产做a爰片久久毛片| 亚洲免费观看高清完整版在线| 91精品国产乱码| 成人av网站在线| 午夜不卡在线视频| 欧美国产精品一区二区三区| 欧美日韩在线不卡| 国产麻豆成人精品| 亚洲v精品v日韩v欧美v专区| 久久网站最新地址| 欧洲国产伦久久久久久久| 国产精品一级片| 亚洲第一二三四区| 中文字幕成人网| 5858s免费视频成人| 97se亚洲国产综合自在线观| 免费成人在线视频观看| 亚洲女与黑人做爰| 久久尤物电影视频在线观看| 91国产免费观看| 大尺度一区二区| 久久国内精品视频| 亚洲综合色婷婷| 国产欧美一区二区在线| 欧美一区二区三区视频在线| 色综合久久综合网| 国产成人亚洲综合色影视| 午夜精品福利在线| 亚洲蜜臀av乱码久久精品蜜桃| 久久久久免费观看| 欧美精品乱人伦久久久久久| 91免费看视频| 国产91精品精华液一区二区三区| 日韩av一级电影| 亚洲国产成人av好男人在线观看| 国产精品视频在线看| 欧美电影免费观看高清完整版在| 欧美视频自拍偷拍| 95精品视频在线| 成人免费观看av| 国产一区欧美日韩| 美女脱光内衣内裤视频久久网站| 一区二区欧美在线观看| 中文字幕在线观看一区二区| 久久久91精品国产一区二区三区| 欧美一区二区播放| 69堂成人精品免费视频| 91福利视频久久久久| 91欧美一区二区| 成人手机电影网| 国产成人免费高清| 国产综合久久久久久鬼色| 久久国产三级精品| 老色鬼精品视频在线观看播放| 日韩专区中文字幕一区二区| 亚洲美女偷拍久久| 91浏览器打开| 国产成人在线视频播放|