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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ftpdlib.c

?? vxworks for S3c2410 bsp
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
/* Copyright 1990 - 1998 Wind River Systems, Inc. */#include "copyright_wrs.h"#include "vxWorks.h"#include "ioLib.h"#include "taskLib.h"#include "lstLib.h"#include "stdio.h"#include "sys/socket.h"#include "netinet/in.h"#include "errno.h"#include "version.h"#include "string.h"#include "stdlib.h"#include "iosLib.h"#include "inetLib.h"#include "dirent.h"#include "sys/stat.h"#include "sys/times.h"#include "sockLib.h"#include "logLib.h"#include "unistd.h"#include "pathLib.h"#include "sysLib.h"#include "ftpdLib.h"#include "ctype.h"#include "time.h"#include "loginLib.h"#include "fioLib.h"#include "dosFsLib.h"	#define FTPD_BINARY_TYPE	0x1#define FTPD_ASCII_TYPE		0x2#define FTPD_EBCDIC_TYPE	0x4#define FTPD_LOCAL_BYTE_TYPE	0x8#define FTPD_STREAM_MODE	0x10#define FTPD_BLOCK_MODE		0x20#define FTPD_COMPRESSED_MODE	0x40#define FTPD_NO_RECORD_STRU	0x100#define FTPD_RECORD_STRU	0x200#define FTPD_PAGE_STRU		0x400#define FTPD_USER_OK		0x1000#define	FTPD_ANONYMOUS		0x2000#define FTPD_PASSIVE		0x10000#define FTPD_REPRESENTATION(slot)	( (slot)->status	& 0xff)#ifdef	_unused_#define FTPD_TRANS_MODE(slot)		(((slot)->status >> 8)	& 0xff)#define FTPD_FILE_STRUCTURE(slot)	(((slot)->status >> 16)	& 0xff)#define FTPD_STATUS(slot)		(((slot)->status >> 24) & 0xff)#endif#define FTP_DATA_PORT		20#define FTP_DAEMON_PORT		21#define FTPD_SOCK_FREE		-1#define FTPD_WORK_TASK_NAME_LEN	40#define FTPD_WAIT_MAX		90#define FTPD_WAIT_INTERVAL	5#define	FTPD_CONN_TIMEOUT	200#define FTPD_UC(ch)		(((int) (ch)) & 0xff)#define	FTPD_MULTI_LINE		0x10000000#define FTPD_WINDOW_SIZE	10240#define	FTPD_ANONYMOUS_USER_1	"anonymous"#define	FTPD_ANONYMOUS_USER_2	"ftp"#define	FTPD_ANONYMOUS_USER_3	"guest"/* globals */int ftpdDebug			= FALSE;	/* TRUE: debugging messages */int ftpdTaskPriority		= 56;int ftpdTaskOptions 		= VX_SUPERVISOR_MODE | VX_UNBREAKABLE;int ftpdWorkTaskPriority	= 152;int ftpdWorkTaskOptions		= VX_SUPERVISOR_MODE | VX_UNBREAKABLE; int ftpdWorkTaskStackSize	= 12000;int ftpdWindowSize              = FTPD_WINDOW_SIZE;int ftpsMaxClients = 4; 	/* Default max. for simultaneous connections */int ftpsCurrentClients;/* locals */LOCAL BOOL ftpsActive = FALSE; 	/* Server started? */LOCAL BOOL ftpsShutdownFlag; 	/* Server halt requested? */typedef struct    {    NODE		node;		    int			status;		    int			byteCount;	    int			cmdSock;	    STATUS		cmdSockError;       int			dataSock;	    struct sockaddr_in	peerAddr;	    struct sockaddr_in 	dataAddr; 	    caddr_t		buf;		    int			bufSize;	    time_t		timeUsed;	    char 		curDirName 					[MAX_FILENAME_LENGTH+1];    char                curUserName 	/* current user */				[MAX_LOGIN_NAME_LEN+1];    } FTPD_SESSION_DATA;LOCAL int ftpdTaskId 		= -1;LOCAL int ftpdServerSock 	= FTPD_SOCK_FREE;LOCAL LIST		ftpsSessionList;LOCAL SEM_ID		ftpsMutexSem;LOCAL SEM_ID 		ftpsSignalSem;LOCAL char		ftpdWorkTaskName [FTPD_WORK_TASK_NAME_LEN];LOCAL int		ftpdNumTasks;LOCAL FUNCPTR		pLoginVrfyFunc = NULL ;LOCAL char		defaultHomeDir	/* default root directory */				[MAX_FILENAME_LENGTH+1] = {0};LOCAL char		guestHomeDir	/* anonymous root directory */				[MAX_FILENAME_LENGTH+1] = {0};LOCAL char		writeDirName	/* anonymous upload directory */				[MAX_FILENAME_LENGTH+1] = {0};/* Various messages to be told to the clients */LOCAL const char *messages [] =    {    "Can't open passive connection",    "Parameter not accepted",    "Data connection error",    "Directory non existent or syntax error",    "Local resource failure: %s",    "VxWorks FTP server (VxWorks %s) ready.",    "Password required",    "User logged in",    "Bye...see you later",    "USER and PASS required",    "No files found or invalid directory or permission problem",    "Transfer complete",    "File \"%s\" not found or permission problem",    "Cannot create file \"%s\" or permission problem",    "Changed directory to \"%s\"",    "Type set to I, binary mode",    "Type set to A, ASCII mode",    "Port set okay",    "Current directory is \"%s\"",    "File structure set to NO RECORD",    "Stream mode okay",    "Allocate and Account not required",    "Entering Passive Mode (%d,%d,%d,%d,%d,%d)",    "NOOP -- did nothing as requested...hah!",    "Command not recognized",    "Error in input file",    "Unimplemented TYPE %d",    "You could at least say goodbye.",    "The following commands are recognized:",    "End of command list.",    "File deleted successfully.",    "Login failed.",    "File exists, ready for destination name.",    "File renamed successfuly.",    "\"%s\" directory created",    "Directory %s removed",    "%s: not a plain file",    "UNIX Type: L8 Version: VxWorks",    "\"%s\" directory could not be created",    "Timeout (%d seconds): closing connection.",    "Guest login ok, send your complete e-mail address as password.",    "Guest login ok, access restrictions apply.",    "Guest login ok, upload directory is %s.",    "Guest access denied.",    };#define MSG_PASSIVE_ERROR	0#define MSG_PARAM_BAD		1#define MSG_DATA_CONN_ERROR	2#define MSG_DIR_NOT_PRESENT	3#define MSG_LOCAL_RESOURCE_FAIL	4#define MSG_SERVER_READY	5#define MSG_PASSWORD_REQUIRED	6#define MSG_USER_LOGGED_IN	7#define MSG_SEE_YOU_LATER	8#define MSG_USER_PASS_REQ	9#define MSG_DIR_ERROR		10#define MSG_TRANS_COMPLETE	11#define MSG_FILE_ERROR		12#define MSG_CREATE_ERROR	13#define MSG_CHANGED_DIR		14#define MSG_TYPE_BINARY		15#define MSG_TYPE_ASCII		16#define MSG_PORT_SET		17#define MSG_CUR_DIR		18#define MSG_FILE_STRU		19#define MSG_STREAM_MODE		20#define MSG_ALLOC_ACCOUNT	21#define MSG_PASSIVE_MODE	22#define MSG_NOOP_OKAY		23#define MSG_BAD_COMMAND		24#define MSG_INPUT_FILE_ERROR	25#define MSG_TYPE_ERROR		26#define MSG_NO_GOOD_BYE		27#define	MSG_COMMAND_LIST_BEGIN	28#define	MSG_COMMAND_LIST_END	29#define MSG_DELE_OK             30#define MSG_USER_LOGIN_FAILED   31#define	MSG_RNFR_OK		32#define	MSG_RNTO_OK		33#define	MSG_MKD_OK		34#define	MSG_RMD_OK		35#define	MSG_FILE_NOTREG		36#define	MSG_SYST_REPLY		37#define	MSG_MKD_ERROR		38#define	MSG_CONN_TIMEOUT	39#define	MSG_GUEST_PASS		40#define	MSG_GUEST_OK		41#define	MSG_GUEST_UPLOAD_OK	42#define	MSG_GUEST_ACCESS	43LOCAL char *ftpdCommandList ="HELP	USER	PASS	QUIT	LIST	NLST\n\RETR	STOR	CWD	TYPE	PORT	PWD\n\STRU	MODE	ALLO	ACCT	PASV	NOOP\n\DELE	RNFR	RNTO	MKD	RMD	MDTM\n\SIZE	SYST	XCWD	XPWD	XMKD	XRMD\n";/* forward declarations */LOCAL FTPD_SESSION_DATA *ftpdSessionAdd (void);LOCAL void ftpdSessionDelete (FTPD_SESSION_DATA *);LOCAL STATUS ftpdWorkTask (FTPD_SESSION_DATA *);LOCAL STATUS ftpdCmdSend (FTPD_SESSION_DATA *, int, int, const char *,                          int, int, int, int, int, int);LOCAL STATUS ftpdDataConnGet (FTPD_SESSION_DATA *);LOCAL void ftpdDataStreamSend (FTPD_SESSION_DATA *, char *);LOCAL STATUS ftpdDataStreamReceive (FTPD_SESSION_DATA *, FILE *outStream);LOCAL void ftpdSockFree (int *);LOCAL STATUS ftpdDirListGet (int, char *, BOOL);LOCAL void ftpdDebugMsg (char *, int, int, int, int);LOCAL void unImplementedType (FTPD_SESSION_DATA *pSlot);LOCAL void dataError (FTPD_SESSION_DATA *pSlot);LOCAL void fileError (FTPD_SESSION_DATA *pSlot);LOCAL void transferOkay (FTPD_SESSION_DATA *pSlot);STATUS ftpLoginUserVerify (char *name, char *passwd);void ftpdLoginInstall(FUNCPTR pLoginFunc);#define	rmdir(dName)	remove((dName))#define	mkdir(dName)	ftpMkdir((dName))LOCAL STATUS ftpMkdir    (    char *dirName		/* directory name */    )    {    int fd;    if ((fd = open (dirName, O_RDWR | O_CREAT, FSTAT_DIR | DEFAULT_DIR_PERM))	 == ERROR)	{	return (ERROR);	}    return (close (fd));    }LOCAL void ftpdTask (void)    {    int		newSock;    FAST FTPD_SESSION_DATA *pSlot;    int		on = 1;    int		addrLen;    struct sockaddr_in	addr;    char	a_ip_addr [INET_ADDR_LEN];      ftpdNumTasks = 0;    FOREVER        {        addrLen = sizeof (struct sockaddr);        ftpdDebugMsg ("waiting for a new client connection...\n",0,0,0,0);        newSock = accept (ftpdServerSock, (struct sockaddr *) &addr, &addrLen);	if (newSock < 0)            {            ftpdDebugMsg ("cannot accept a new connection\n",0,0,0,0);            break;            }        semTake (ftpsMutexSem, WAIT_FOREVER);        setsockopt (newSock, SOL_SOCKET, SO_KEEPALIVE, (char *) &on,                    sizeof (on));        inet_ntoa_b (addr.sin_addr, a_ip_addr);        ftpdDebugMsg ("accepted a new client connection from %s\n",                      (int) a_ip_addr, 0, 0, 0);	pSlot = (FTPD_SESSION_DATA *)lstFirst (&ftpsSessionList);	while (pSlot != NULL)	    {	    FTPD_SESSION_DATA * pNext ;	    time_t now = time(NULL);	    pNext = (FTPD_SESSION_DATA *)lstNext (&pSlot->node);	    if( (now - pSlot->timeUsed) > FTPD_CONN_TIMEOUT )		{		ftpdDebugMsg("session %x idle byteCount %d\n",			(int) pSlot, pSlot->byteCount, 0, 0);		if ( pSlot->byteCount == 0 )		    {		    ftpdCmdSend (pSlot, pSlot->cmdSock, 421,			messages [MSG_CONN_TIMEOUT], 			now - pSlot->timeUsed, 0, 0, 0, 0, 0);		    ftpdDebugMsg("deleting session %x\n", (int)pSlot, 0, 0, 0);		    /* XXX ftpdSessionDelete( pSlot ); */		    ftpdSockFree (&pSlot->cmdSock);		    taskDelay( sysClkRateGet() / 10 );		    }		else		    pSlot->byteCount = 0 ;		}	    pSlot = pNext ;	    }        pSlot = ftpdSessionAdd ();        if (pSlot == NULL)             {            ftpdCmdSend (pSlot, newSock, 421,                          "Session limit reached, closing control connection",                          0, 0, 0, 0, 0, 0);            ftpdDebugMsg ("cannot get a new connection slot\n",0,0,0,0);            semGive (ftpsMutexSem);            continue;            }	pSlot->cmdSock	= newSock;        bcopy ( (char *)&addr, (char *)&pSlot->peerAddr,                sizeof (struct sockaddr_in));        bcopy ( (char *)&addr, (char *)&pSlot->dataAddr,                sizeof (struct sockaddr_in));        pSlot->dataAddr.sin_port = htons (FTP_DATA_PORT);        sprintf (ftpdWorkTaskName, "tFtpdServ%d", ftpdNumTasks);	ftpdDebugMsg ("creating a new server task %s...\n", 		      (int) ftpdWorkTaskName, 0, 0, 0);	if (taskSpawn (ftpdWorkTaskName, ftpdWorkTaskPriority,		       ftpdWorkTaskOptions, ftpdWorkTaskStackSize,		       ftpdWorkTask, (int) pSlot,		       0, 0, 0, 0, 0, 0, 0, 0, 0) == ERROR)	    {            ftpdCmdSend (pSlot, newSock, 421,                          "Service not available, closing control connection",                         0, 0, 0, 0, 0, 0);	    ftpdSessionDelete (pSlot);	    ftpdDebugMsg ("cannot create a new work task\n",0,0,0,0);            semGive (ftpsMutexSem);            continue;	    }	ftpdDebugMsg ("done.\n",0,0,0,0);        semGive (ftpsMutexSem);	}    ftpsActive = FALSE;    return;    }/******************************************************************************** RETURNS:* OK if server started, or ERROR otherwise.** ERRNO: N/A*/STATUS ftpdInit    (    int		port,		    int 	stackSize 	    )    {    int 		on = 1;    struct sockaddr_in 	ctrlAddr;    if (ftpsActive)	return (OK);    ftpsShutdownFlag = FALSE;    ftpsCurrentClients = 0;    ftpdServerSock = socket (AF_INET, SOCK_STREAM, 0);    if (ftpdServerSock < 0)        return (ERROR);    lstInit (&ftpsSessionList);    ftpsMutexSem = semMCreate (SEM_Q_FIFO | SEM_DELETE_SAFE);    if (ftpsMutexSem == NULL)        {        close (ftpdServerSock);        return (ERROR);        }    ftpsSignalSem = semBCreate (SEM_Q_FIFO, SEM_EMPTY);    if (ftpsSignalSem == NULL)        {        close (ftpdServerSock);        semDelete (ftpsMutexSem);        return (ERROR);        }    if ( port == 0 )	port = FTP_DAEMON_PORT ;    ctrlAddr.sin_family = AF_INET;    ctrlAddr.sin_addr.s_addr = INADDR_ANY;    ctrlAddr.sin_port = htons ( port );    if (setsockopt (ftpdServerSock, SOL_SOCKET, SO_REUSEADDR,                    (char *) &on, sizeof (on)) < 0)        {        close (ftpdServerSock);        semDelete (ftpsMutexSem);        semDelete (ftpsSignalSem);        return (ERROR);        }    if (bind (ftpdServerSock, (struct sockaddr *) &ctrlAddr,              sizeof (ctrlAddr)) < 0)        {        close (ftpdServerSock);        semDelete (ftpsMutexSem);        semDelete (ftpsSignalSem);        return (ERROR);        }    if (listen (ftpdServerSock, 5) < 0)        {        close (ftpdServerSock);        semDelete (ftpsMutexSem);        semDelete (ftpsSignalSem);        return (ERROR);        }    ftpdTaskId = taskSpawn ("tFtpdTask", ftpdTaskPriority - 1, ftpdTaskOptions,                            stackSize == 0 ? ftpdWorkTaskStackSize : stackSize,                            (FUNCPTR) ftpdTask, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);    if (ftpdTaskId == ERROR)        {        ftpdDebugMsg ("ERROR: ftpdTask cannot be created\n",0,0,0,0);        close (ftpdServerSock);        semDelete (ftpsMutexSem);        semDelete (ftpsSignalSem);        return (ERROR);			        }            ftpsActive = TRUE;        ftpdLoginInstall(ftpLoginUserVerify);        ftpdDebugMsg ("ftpdTask created\n",0,0,0,0);    return (OK);    }/********************************************************************************/STATUS ftpdDelete (void)    {    BOOL serverActive = FALSE;    FTPD_SESSION_DATA * 	pData;    if (! ftpsActive)          return (OK);    semTake (ftpsMutexSem, WAIT_FOREVER);    taskDelete (ftpdTaskId);    ftpdTaskId = -1;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区日韩精品绯色| 国产精品久久久久久久久果冻传媒| 国产麻豆精品在线观看| 亚洲人成影院在线观看| 欧美va亚洲va| 色8久久人人97超碰香蕉987| 国内久久精品视频| 亚洲va韩国va欧美va| 国产午夜精品一区二区三区视频| 欧美性大战久久久久久久| 国产精品77777| 免费国产亚洲视频| 亚洲第四色夜色| 日韩美女久久久| 久久久久亚洲蜜桃| 日韩欧美一二三| 777久久久精品| 欧洲一区二区三区免费视频| 国产91在线看| 经典三级在线一区| 日本美女一区二区三区视频| 亚洲自拍另类综合| 国产精品国产三级国产aⅴ原创| 精品国产乱码久久| 欧美一区二区三区四区五区| 欧美日韩在线直播| 色94色欧美sute亚洲线路一久| 成人动漫一区二区在线| 国产馆精品极品| 国产一区二区三区不卡在线观看 | 91精品国产91综合久久蜜臀| 色婷婷av一区二区三区gif| 成人精品电影在线观看| 国产成人av电影在线| 国产精品亚洲一区二区三区在线| 欧美视频中文字幕| 色一情一伦一子一伦一区| 99免费精品视频| 波多野结衣在线一区| 成人毛片在线观看| 成人网在线播放| jlzzjlzz亚洲日本少妇| 成人avav影音| 91丨九色porny丨蝌蚪| 色综合欧美在线| 在线观看一区不卡| 欧美日韩小视频| 欧美精品三级在线观看| 日韩一区二区三区av| 欧美成人三级电影在线| 久久无码av三级| 久久久久久久综合色一本| 国产欧美精品一区二区色综合 | 亚洲自拍与偷拍| 亚洲国产成人va在线观看天堂| 午夜视频久久久久久| 日本亚洲最大的色成网站www| 美女国产一区二区| 国产乱码精品一品二品| 不卡视频免费播放| 91久久精品日日躁夜夜躁欧美| 欧美三级中文字| 日韩一区二区三| 国产亚洲精品福利| 亚洲日本青草视频在线怡红院 | 蜜臀91精品一区二区三区| 久久国产尿小便嘘嘘| 国产不卡一区视频| 91麻豆6部合集magnet| 欧美日韩激情一区二区| 日韩视频免费观看高清完整版在线观看| 日韩精品影音先锋| 中文字幕巨乱亚洲| 亚洲一区二区av电影| 免费在线观看视频一区| 国产成人啪免费观看软件| 99r国产精品| 欧美一区二区福利在线| 中文字幕免费在线观看视频一区| 一区二区三区加勒比av| 麻豆高清免费国产一区| va亚洲va日韩不卡在线观看| 欧美日本国产视频| 欧美国产在线观看| 五月天一区二区三区| 国产伦精品一区二区三区视频青涩| 99久久精品免费| 欧美一区永久视频免费观看| 国产精品久久久久毛片软件| 偷窥少妇高潮呻吟av久久免费| 国产一区视频导航| 欧美日韩中文精品| 国产欧美日韩视频一区二区| 三级亚洲高清视频| 99热在这里有精品免费| 精品美女在线播放| 一区二区三区四区蜜桃 | 国产成人免费视频一区| 欧美亚洲高清一区二区三区不卡| 久久综合久色欧美综合狠狠| 亚洲综合小说图片| 粉嫩欧美一区二区三区高清影视| 91精品国产91热久久久做人人| 1024亚洲合集| 国内精品在线播放| 欧美久久久久久蜜桃| 亚洲精品乱码久久久久久黑人| 国产麻豆视频精品| 欧美一级日韩免费不卡| 亚洲一区二区三区在线看| 国产成人综合精品三级| 日韩欧美国产午夜精品| 亚洲一区二区三区三| 97超碰欧美中文字幕| 日本一区二区三区四区在线视频| 看片网站欧美日韩| 欧美日韩国产影片| 亚洲综合一区二区三区| 97精品电影院| 亚洲欧洲99久久| 成人高清av在线| 日本一区二区动态图| 国产精品538一区二区在线| 欧美成人一级视频| 日本在线不卡视频一二三区| 欧美日韩一区久久| 亚洲福中文字幕伊人影院| 日本乱码高清不卡字幕| 亚洲欧美一区二区三区国产精品| 白白色 亚洲乱淫| 亚洲国产精品99久久久久久久久| 国产麻豆精品久久一二三| 欧美本精品男人aⅴ天堂| 蓝色福利精品导航| 欧美成人精品1314www| 免费观看30秒视频久久| 日韩一区二区三区电影在线观看| 琪琪久久久久日韩精品| 欧美一区二区三区日韩视频| 免费日本视频一区| 欧美成人一区二区三区| 国产一区二区三区蝌蚪| 久久久久久99久久久精品网站| 国内欧美视频一区二区| 国产欧美一区二区三区沐欲| 国产成人高清视频| 国产精品免费久久久久| 91丨九色丨黑人外教| 亚洲综合免费观看高清完整版在线 | 久久久久久久久久电影| 国产毛片精品视频| 国产精品一级在线| 亚洲国产成人午夜在线一区| jizz一区二区| 夜夜嗨av一区二区三区中文字幕| 欧美日韩国产精品自在自线| 日本三级韩国三级欧美三级| 精品欧美一区二区久久| 国产成人av一区二区| 亚洲男女一区二区三区| 欧美日韩免费一区二区三区| 麻豆成人免费电影| 国产精品麻豆一区二区 | 欧美亚洲丝袜传媒另类| 日韩二区三区在线观看| 久久久久久久久久久电影| 91视频免费看| 日韩精品亚洲一区| 国产欧美精品一区aⅴ影院| 波多野结衣在线一区| 五月婷婷综合激情| 国产欧美日韩中文久久| 91福利小视频| 久久99精品久久久久久动态图| 国产精品久久久久久久久免费桃花| 欧美视频三区在线播放| 国内久久精品视频| 一区二区免费看| 精品国产伦一区二区三区免费| 成人视屏免费看| 日日夜夜一区二区| 国产精品色哟哟网站| 欧美精品国产精品| av中文字幕不卡| 日韩高清国产一区在线| 国产精品传媒视频| 91精品国产综合久久久久| 成人av电影观看| 久久99精品一区二区三区三区| 亚洲欧美日韩精品久久久久| 欧美成人免费网站| 在线一区二区视频| 国产一区二区不卡| 亚洲chinese男男1069| 国产精品网站一区| 日韩欧美国产不卡| 欧美在线观看视频一区二区| 国产寡妇亲子伦一区二区| 日日摸夜夜添夜夜添精品视频| 中文av一区特黄|