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

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

?? ftpserv.c

?? TCPIP協議包
?? C
?? 第 1 頁 / 共 2 頁
字號:
			logmsg(fileno(ftp.control),"DELE %s",file);
			fprintf(ftp.control,deleok);
		} else {
			fprintf(ftp.control,delefail,sys_errlist[errno]);
		}
		FREE(file);
		break;
	case PASS_CMD:
		if(ftp.username == NULL)
			fprintf(ftp.control,userfirst);
		else
			ftplogin(&ftp,arg);			
		break;
#ifndef	CPM
	case XMKD_CMD:
	case MKD_CMD:
		file = pathname(ftp.cd,arg);
		if(!permcheck(ftp.path,ftp.perms,MKD_CMD,file)){
			fprintf(ftp.control,noperm);
#ifdef	__TURBOC__
		} else if(mkdir(file) == 0){
#else
		} else if(mkdir(file,0777) == 0){
#endif
			logmsg(fileno(ftp.control),"MKD %s",file);
			fprintf(ftp.control,mkdok);
		} else {
			fprintf(ftp.control,cantmake,file,sys_errlist[errno]);
		}
		FREE(file);
		break;
	case XRMD_CMD:
	case RMD_CMD:
		file = pathname(ftp.cd,arg);
		if(!permcheck(ftp.path,ftp.perms,RMD_CMD,file)){
		 	fprintf(ftp.control,noperm);
		} else if(rmdir(file) == 0){
			logmsg(fileno(ftp.control),"RMD %s",file);
			fprintf(ftp.control,deleok);
		} else {
			fprintf(ftp.control,delefail,sys_errlist[errno]);
		}
		FREE(file);
		break;
	case STRU_CMD:
		if(tolower(arg[0]) != 'f')
			fprintf(ftp.control,unsupp);
		else
			fprintf(ftp.control,okay);
		break;
	case MODE_CMD:
		if(tolower(arg[0]) != 's')
			fprintf(ftp.control,unsupp);
		else
			fprintf(ftp.control,okay);
		break;
	case SYST_CMD:
		fprintf(ftp.control,syst,System,NBBY,Version);
		break;
	case XMD5_CMD:
		file = pathname(ftp.cd,arg);
		switch(ftp.type){
		case IMAGE_TYPE:
		case LOGICAL_TYPE:
			mode = READ_BINARY;
			break;
		case ASCII_TYPE:
			mode = READ_TEXT;
			break;
		}
		if(!permcheck(ftp.path,ftp.perms,RETR_CMD,file)){
		 	fprintf(ftp.control,noperm);
		} else if((ftp.fp = fopen(file,mode)) == NULL){
			fprintf(ftp.control,cantopen,file,sys_errlist[errno]);
		} else {
			uint8 hash[16];

			logmsg(fileno(ftp.control),"XMD5 %s",file);
			if(ftp.type == ASCII_TYPE && isbinary(ftp.fp))
				fprintf(ftp.control,binwarn,file);

			md5hash(ftp.fp,hash,ftp.type == ASCII_TYPE);
			fclose(ftp.fp);
			ftp.fp = NULL;
			fprintf(ftp.control,"200 ");
			for(i=0;i<16;i++)
				fprintf(ftp.control,"%02x",hash[i]);
			fprintf(ftp.control," %s\n",file);
		}
		FREE(file);
		break;
	}
#endif
	goto loop;
finish:
	logmsg(fileno(ftp.control),"close FTP");
	/* Clean up */
	fclose(ftp.control);
	if(ftp.data != NULL)
		fclose(ftp.data);
	if(ftp.fp != NULL)
		fclose(ftp.fp);
	free(ftp.username);
	free(ftp.path);
	free(ftp.cd);
}

/* Shut down FTP server */
int
ftp0(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	uint16 port;

	if(argc < 2)
		port = IPPORT_FTP;
	else
		port = atoi(argv[1]);

	return stop_tcp(port);
}
static
int
pport(sock,arg)
struct sockaddr_in *sock;
char *arg;
{
	int32 n;
	int i;

	n = 0;
	for(i=0;i<4;i++){
		n = atoi(arg) + (n << 8);
		if((arg = strchr(arg,',')) == NULL)
			return -1;
		arg++;
	}
	sock->sin_addr.s_addr = n;
	n = atoi(arg);
	if((arg = strchr(arg,',')) == NULL)
		return -1;
	arg++;
	n = atoi(arg) + (n << 8);
	sock->sin_port = n;
	return 0;
}

/* Attempt to log in the user whose name is in ftp->username and password
 * in pass
 */
static void
ftplogin(ftp,pass)
struct ftpserv *ftp;
char *pass;
{
	char *path;
	int anony = 0;

	path = mallocw(200);
	if((ftp->perms = userlogin(ftp->username,pass,&path,200,&anony))
	   == -1){
		fprintf(ftp->control,noperm);
		free(path);
		return;
	}
	/* Set up current directory and path prefix */
#if	defined(AMIGAGONE)
	ftp->cd = pathname("", path);
	ftp->path = strdup(ftp->cd);
	free(path);
#else
	ftp->cd = path;
	ftp->path = strdup(path);
#endif

	fprintf(ftp->control,logged);
	if(!anony)
		logmsg(fileno(ftp->control),"%s logged in",ftp->username);
	else
		logmsg(fileno(ftp->control),"%s logged in, ID %s",ftp->username,pass);
}

#ifdef	MSDOS
/* Illegal characters in a DOS filename */
static char badchars[] = "\"[]:|<>+=;,";
#endif

/* Return 1 if the file operation is allowed, 0 otherwise */
int
permcheck(path,perms,op,file)
char *path;
int perms;
int op;
char *file;
{
#ifdef	MSDOS
	char *cp;
#endif

	if(file == NULL || path == NULL)
		return 0;	/* Probably hasn't logged in yet */
#ifdef	MSDOS
	/* Check for characters illegal in MS-DOS file names */
	for(cp = badchars;*cp != '\0';cp++){
		if(strchr(file,*cp) != NULL)
			return 0;	
	}
#endif
#ifndef MAC
	/* The target file must be under the user's allowed search path */
	if(strncmp(file,path,strlen(path)) != 0)
		return 0;
#endif

	switch(op){
	case RETR_CMD:
		/* User must have permission to read files */
		if(perms & FTP_READ)
			return 1;
		return 0;
	case DELE_CMD:
	case RMD_CMD:
		/* User must have permission to (over)write files */
		if(perms & FTP_WRITE)
			return 1;
		return 0;
	case STOR_CMD:
	case MKD_CMD:
		/* User must have permission to (over)write files, or permission
		 * to create them if the file doesn't already exist
		 */
		if(perms & FTP_WRITE)
			return 1;
		if(access(file,2) == -1 && (perms & FTP_CREATE))
			return 1;
		return 0;
	}
	return 0;	/* "can't happen" -- keep lint happy */
}
static int
sendit(ftp,command,file)
struct ftpserv *ftp;
char *command;
char *file;
{
	long total;
	struct sockaddr_in dport;
	int s;

	s = socket(AF_INET,SOCK_STREAM,0);
	dport.sin_family = AF_INET;
	dport.sin_addr.s_addr = INADDR_ANY;
	dport.sin_port = IPPORT_FTPD;
	bind(s,(struct sockaddr *)&dport,SOCKSIZE);
	fprintf(ftp->control,sending,command,file);
	fflush(ftp->control);
	if(connect(s,(struct sockaddr *)&ftp->port,SOCKSIZE) == -1){
		fclose(ftp->fp);
		ftp->fp = NULL;
		close_s(s);
		ftp->data = NULL;
		fprintf(ftp->control,noconn);
		return -1;
	}
	ftp->data = fdopen(s,"r+");
	/* Do the actual transfer */
	total = sendfile(ftp->fp,ftp->data,ftp->type,0);

	if(total == -1){
		/* An error occurred on the data connection */
		fprintf(ftp->control,noconn);
		shutdown(fileno(ftp->data),2);	/* Blow away data connection */
		fclose(ftp->data);
	} else {
		fprintf(ftp->control,txok);
	}
	fclose(ftp->fp);
	ftp->fp = NULL;
	fclose(ftp->data);
	ftp->data = NULL;
	if(total == -1)
		return -1;
	else
		return 0;
}
static int
recvit(ftp,command,file)
struct ftpserv *ftp;
char *command;
char *file;
{
	struct sockaddr_in dport;
	long total;
	int s;

	s = socket(AF_INET,SOCK_STREAM,0);
	dport.sin_family = AF_INET;
	dport.sin_addr.s_addr = INADDR_ANY;
	dport.sin_port = IPPORT_FTPD;
	bind(s,(struct sockaddr *)&dport,SOCKSIZE);
	fprintf(ftp->control,sending,command,file);
	fflush(ftp->control);
	if(connect(s,(struct sockaddr *)&ftp->port,SOCKSIZE) == -1){
		fclose(ftp->fp);
		ftp->fp = NULL;
		close_s(s);
		ftp->data = NULL;
		fprintf(ftp->control,noconn);
		return -1;
	}
	ftp->data = fdopen(s,"r+");
	/* Do the actual transfer */
	total = recvfile(ftp->fp,ftp->data,ftp->type,0);

#ifdef	CPM
	if(ftp->type == ASCII_TYPE)
		putc(CTLZ,ftp->fp);
#endif
	if(total == -1) {
		/* An error occurred while writing the file */
		fprintf(ftp->control,writerr,sys_errlist[errno]);
		shutdown(fileno(ftp->data),2);	/* Blow it away */
		fclose(ftp->data);
	} else {
		fprintf(ftp->control,rxok);
		fclose(ftp->data);
	}
	ftp->data = NULL;
	fclose(ftp->fp);
	ftp->fp = NULL;
	if(total == -1)
		return -1;
	else
		return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕va一区二区三区| 国产精品久久久久久久久快鸭| 成人免费av在线| 欧美bbbbb| 亚洲蜜臀av乱码久久精品| 中文字幕一区二区三区乱码在线| 久久嫩草精品久久久精品一| 久久久欧美精品sm网站| 欧美激情在线免费观看| 欧美国产1区2区| 亚洲激情在线播放| 亚洲自拍偷拍麻豆| 天堂成人免费av电影一区| 日本美女一区二区三区| 国模一区二区三区白浆| 成人性生交大合| 色呦呦国产精品| 欧美日韩美少妇| 精品国偷自产国产一区| 久久人人爽爽爽人久久久| 国产精品久久久久久久久果冻传媒 | 日韩欧美高清在线| 国产日本欧洲亚洲| 久久综合色天天久久综合图片| 久久亚洲一区二区三区四区| 国产精品久久久一本精品 | 欧美肥妇毛茸茸| 欧美成人一区二区三区在线观看| 久久人人97超碰com| 欧美极品aⅴ影院| 一区二区三区日韩| 奇米精品一区二区三区在线观看 | 国产一本一道久久香蕉| 99这里都是精品| 51精品秘密在线观看| 欧美国产国产综合| 青青草原综合久久大伊人精品| 国产福利精品一区二区| 欧美午夜在线一二页| 久久久久久久电影| 午夜成人免费电影| av在线免费不卡| 欧美www视频| 亚洲男帅同性gay1069| 久久草av在线| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 欧美色精品天天在线观看视频| 日韩一区二区在线观看| 亚洲男人天堂一区| 国产999精品久久久久久| 7777精品伊人久久久大香线蕉完整版 | 日韩伦理电影网| 国产一区二区三区电影在线观看| 色成人在线视频| 国产精品污www在线观看| 久久久精品免费免费| 三级欧美韩日大片在线看| 国产一区二区在线免费观看| 91麻豆精品国产91久久久久久 | 成人亚洲一区二区一| 日韩欧美在线综合网| 亚洲一区二区av电影| 99久久免费精品高清特色大片| 国产亚洲欧洲一区高清在线观看| 日韩精品成人一区二区三区| 在线免费观看成人短视频| 最新成人av在线| 成人黄色软件下载| 国产精品网站在线播放| 国产不卡视频一区| 久久久久久久久久久久久女国产乱| 日韩av电影免费观看高清完整版 | 成人精品一区二区三区四区| 久久亚洲二区三区| 精品一区二区在线播放| 日韩精品一区二区三区视频播放| 日韩专区欧美专区| 欧美人妖巨大在线| 青青草国产成人99久久| 欧美一区二区成人| 理论片日本一区| 26uuu精品一区二区在线观看| 激情文学综合网| 亚洲国产电影在线观看| 99久久精品99国产精品| 亚洲综合久久av| 欧美日韩卡一卡二| 玖玖九九国产精品| 欧美精品一区二区久久久| 国产精品系列在线播放| 亚洲视频一二区| 69堂精品视频| 国产伦精品一区二区三区在线观看 | 亚洲高清一区二区三区| 欧美精品久久一区| 蜜臀av一区二区| 精品成人a区在线观看| 成人晚上爱看视频| 尤物视频一区二区| 欧美一卡在线观看| 懂色av中文一区二区三区| 亚洲欧美色图小说| 正在播放一区二区| 国产成人免费视频精品含羞草妖精 | 国产三级欧美三级日产三级99 | 自拍偷在线精品自拍偷无码专区| 91原创在线视频| 免费成人在线播放| 自拍偷拍亚洲欧美日韩| 91精品国产aⅴ一区二区| 国产精品一区在线| 午夜久久久久久| 国产人妖乱国产精品人妖| 在线免费视频一区二区| 国内精品免费在线观看| 夜夜嗨av一区二区三区中文字幕 | 5566中文字幕一区二区电影| 国产91富婆露脸刺激对白| 亚洲一区二区三区在线看| 久久久美女艺术照精彩视频福利播放| 一本一道波多野结衣一区二区| 蜜臀av一区二区在线观看 | 久久国产乱子精品免费女| 亚洲欧洲三级电影| 久久亚区不卡日本| 欧美日韩久久久| 色悠悠亚洲一区二区| 国产麻豆成人传媒免费观看| 亚洲线精品一区二区三区| 中文在线一区二区| 久久在线观看免费| 日韩一级黄色片| 欧美高清www午色夜在线视频| 成年人国产精品| 国产精品影音先锋| 国产自产视频一区二区三区| 视频在线观看一区二区三区| 一区二区三区 在线观看视频 | 色综合天天性综合| 国产精品免费av| 欧美精品一区二区精品网| 91麻豆精品91久久久久久清纯| 日本高清成人免费播放| 成人免费毛片app| 国产成人综合视频| 国产精品一区二区你懂的| 日韩国产欧美三级| 天堂在线亚洲视频| 丝袜亚洲精品中文字幕一区| 亚洲男同1069视频| 亚洲精品高清在线观看| 国产精品短视频| 综合在线观看色| 国产精品久久久久久久久果冻传媒 | 日本欧美久久久久免费播放网| 亚洲国产一二三| 日韩一区欧美二区| 免费高清视频精品| 国产一区二区三区蝌蚪| 风间由美一区二区三区在线观看 | 成人av电影在线观看| 福利一区在线观看| hitomi一区二区三区精品| 岛国一区二区三区| 91亚洲国产成人精品一区二三| av午夜一区麻豆| 欧美亚洲综合久久| 日韩免费视频一区二区| 欧美一区二区三区四区在线观看| 日韩视频中午一区| 中文字幕精品一区二区精品绿巨人| 国产清纯在线一区二区www| 亚洲同性同志一二三专区| 一区二区三区 在线观看视频| 亚洲一区二区中文在线| 蜜臀91精品一区二区三区| 国产毛片精品一区| 一本色道亚洲精品aⅴ| 在线91免费看| 国产欧美一区二区精品性| 亚洲蜜臀av乱码久久精品蜜桃| 午夜精品久久久久久久99水蜜桃 | 精品粉嫩aⅴ一区二区三区四区| 国产午夜一区二区三区| 亚洲人快播电影网| 日韩电影网1区2区| 国产1区2区3区精品美女| 欧美主播一区二区三区美女| 欧美tickle裸体挠脚心vk| 国产精品二三区| 久草中文综合在线| 91色乱码一区二区三区| 精品福利一区二区三区免费视频| 亚洲靠逼com| 国产精品一区二区在线观看网站| 91福利视频久久久久| 久久精品欧美一区二区三区麻豆| 亚洲三级在线播放| 国产精品一区二区久激情瑜伽 | 久久久亚洲午夜电影|