From 38371dbebba197bb681272383053d0b364262167 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 24 Jan 2001 19:20:24 +0000 Subject: 2001-01-24 Sergei Organov * rtems_servers/ftpd.c, rtems_servers/ftpd.h: Major enhancements as listed below: - Timeouts on sockets implemented. 'idle' field added to configuration. No timeout by default to keep backward compatibility. Note: SITE IDLE command not implemented yet. - Basic global access control implemented. 'access' field added to configuration. No access limitations by default to keep backward compatibility. - Anchor data socket for active mode (using self IP and port 20.) - Fixed default data port support (still not tested). - Don't allow IP address different from originating host in PORT command to improve security. - Fixed bug in MDTM command. - Check for correctness of parsing of argument in command_port(). - Fixed squeeze_path() to don't allow names like 'NAME/smth' where 'NAME' is not a directory. - Command parsing a little bit improved: command names are now converted to upper-case to be more compatible with RFC (command names are not case-sensitive.) - Reformat comments so that they have RTEMS look-and-feel. - Fixed DELE, SITE CHMOD, RMD, MKD broken by previous changes - True ASCII mode implemented (doesn't work for hooks and /dev/null) - Passive mode implemented, PASV command added. - Default port for data connection could be used (untested, can't find ftp client that doesn't send PORT command) - SYST reply changed to UNIX, as former RTEMS isn't registered name. - Reply codes reviewed and fixed. --- c/src/libnetworking/rtems_servers/ftpd.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'c/src/libnetworking/rtems_servers/ftpd.h') diff --git a/c/src/libnetworking/rtems_servers/ftpd.h b/c/src/libnetworking/rtems_servers/ftpd.h index cfc5efe69b..678baa3d2b 100644 --- a/c/src/libnetworking/rtems_servers/ftpd.h +++ b/c/src/libnetworking/rtems_servers/ftpd.h @@ -10,6 +10,14 @@ #define FTPD_CONTROL_PORT 21 +/* FTPD access control flags */ +enum +{ + FTPD_NO_WRITE = 0x1, + FTPD_NO_READ = 0x2, + FTPD_NO_RW = FTPD_NO_WRITE | FTPD_NO_READ +}; + typedef int (*rtems_ftpd_hookfunction)(unsigned char *, unsigned long); struct rtems_ftpd_hook @@ -27,6 +35,11 @@ struct rtems_ftpd_configuration struct rtems_ftpd_hook *hooks; /* List of hooks */ char const *root; /* Root for FTPD or 0 for / */ int tasks_count; /* Max. connections */ + int idle; /* Idle timeout in seoconds + or 0 for no (inf) timeout */ + int access; /* 0 - r/w, 1 - read-only, + 2 - write-only, + 3 - browse-only */ }; /* -- cgit v1.2.3