From e82f3f21bff1cf021e036ce3e67d5cc12eb41ebe Mon Sep 17 00:00:00 2001 From: patacongo Date: Sat, 4 Feb 2012 21:02:45 +0000 Subject: Add the beginnings of an FTP server git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4368 42af7a65-404d-4744-a932-0658087f49c3 --- apps/include/netutils/ftpd.h | 187 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100755 apps/include/netutils/ftpd.h (limited to 'apps/include') diff --git a/apps/include/netutils/ftpd.h b/apps/include/netutils/ftpd.h new file mode 100755 index 000000000..870b5cf94 --- /dev/null +++ b/apps/include/netutils/ftpd.h @@ -0,0 +1,187 @@ +/**************************************************************************** + * apps/include/netutils/ftpd.h + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * 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 NuttX 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 COPYRIGHT HOLDERS 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 + * COPYRIGHT OWNER 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. + * + ****************************************************************************/ + +#ifndef __APPS_INCLUDE_NETUTILS_FTPD_H +#define __APPS_INCLUDE_NETUTILS_FTPD_H + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ +/* Configuration ************************************************************/ + +#ifdef CONFIG_DISABLE_PTHREAD +# error "pthread support is required (CONFIG_DISABLE_PTHREAD=n)" +#endif + +#ifndef CONFIG_FTPD_VENDORID +# define CONFIG_FTPD_VENDORID "NuttX" +#endif + +#ifndef CONFIG_FTPD_SERVERID +# define CONFIG_FTPD_SERVERID "NuttX FTP Server" +#endif + +#ifndef CONFIG_FTPD_CMDBUFFERSIZE +# define CONFIG_FTPD_CMDBUFFERSIZE 512 +#endif + +#ifndef CONFIG_FTPD_DATABUFFERSIZE +# define CONFIG_FTPD_DATABUFFERSIZE 2048 +#endif + +#ifndef CONFIG_FTPD_WORKERSTACKSIZE +# define CONFIG_FTPD_WORKERSTACKSIZE 2048 +#endif + +/**************************************************************************** + * Public Types + ****************************************************************************/ + +/* This "handle" describes the FTP session */ + +typedef FAR void *FTPD_SESSION; + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +#ifdef __cplusplus +#define EXTERN extern "C" +extern "C" { +#else +#define EXTERN extern +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/**************************************************************************** + * Name: ftpd_open + * + * Description: + * Create an instance of the FTPD server and return a handle that can be + * used to run the server. + * + * Input Parameters: + * None + * + * Returned Value: + * On success, a non-NULL handle is returned that can be used to reference + * the server instance. + * + ****************************************************************************/ + +EXTERN FTPD_SESSION ftpd_open(void); + +/**************************************************************************** + * Name: ftpd_adduser + * + * Description: + * Add one FTP user. + * + * Input Parameters: + * handle - A handle previously returned by ftpd_open + * accountflags - The characteristics of this user (see FTPD_ACCOUNTFLAGS_* + * defintiions. + * user - The user login name. May be NULL indicating that no login is + * required. + * passwd - The user password. May be NULL indicating that no password + * is required. + * home - The user home directory. May be NULL. + * + * Returned Value: + * Zero is returned on success. A negated errno value is return on + * failure. + * + ****************************************************************************/ + +EXTERN int ftpd_adduser(FTPD_SESSION handle, uint8_t accountflags, + FAR const char *user, FAR const char *passwd, + FAR const char *home); + +/**************************************************************************** + * Name: ftpd_session + * + * Description: + * Execute the FTPD server. This thread does not return until either (1) + * the timeout expires with no connection, (2) some other error occurs, or + * (2) a connection was accepted and an FTP worker thread was started to + * service the session. Each call to ftpd_session creates on session. + * + * Input Parameters: + * handle - A handle previously returned by ftpd_open + * timeout - A time in milliseconds to wait for a connection. If this + * time elapses with no connected, the -ETIMEDOUT error will be returned. + * + * Returned Value: + * Zero is returned if the FTP worker was started. On failure, a negated + * errno value is returned to indicate why the servier terminated. + * -ETIMEDOUT indicates that the user-provided timeout elapsed with no + * connection. + * + ****************************************************************************/ + +EXTERN int ftpd_session(FTPD_SESSION handle, int timeout); + +/**************************************************************************** + * Name: ftpd_close + * + * Description: + * Close and destroy the handle created by ftpd_open. + * + * Input Parameters: + * handle - A handle previously returned by ftpd_open + * + * Returned Value: + * None + * + ****************************************************************************/ + +EXTERN void ftpd_close(FTPD_SESSION handle); + +#undef EXTERN +#ifdef __cplusplus +} +#endif +#endif /* __APPS_INCLUDE_NETUTILS_FTPD_H */ -- cgit v1.2.3