libfget ======= Packaging / Portability ----------------------- * add examples directory? * finish implementing test suite * start using C99 "bool" type for boolean values? (need to check for relevant autoconf test) * add libfget-config script for other packages to determine how to build and link to libfget? New Features ------------ * should "banner" arg be present in ftp_connect() interface? (seems inconsistent, since any command can get a multi-line response from the server, but no other functions have a banner arg) (maybe we need a generic "get text from last response") * add va_list functions for all stdargs functions in public API (e.g., ftp_vconnect() for ftp_connect(), etc) * add ftp_quote() function? * add API hooks to allow caller-supplied directory parsing function? * take FTP_FEAT_NO_LIST_LS_OPTS out of FEAT bitmask (it's not really a FEAT response... maybe make it another caller-settable option?) * add support for EPLF "i" fact and MLSD "unique" fact? * support ftp_lseek() for O_WRONLY transfers ? * add buffer for FTPFILEs * implement high-level I/O functions for FTPFILEs (ftp_fgets(), etc) (suggested by Mike Drzal ) * allow caller to access banners returned by the server after PASS and CWD commands? (Save buffer from ftp_get_response() in the FTP handle?) (is this really necessary? caller can get this info via recv_hook) (suggested by Mike Drzal ) Directory Cache --------------- * add option for dircache to be completely disabled ? * directory cache modifications: * add call to allow application to force refresh for a specific dir ? (should call this from ftp_close() for O_WRONLY files!) * will dircache and ftplist code be able to handle a hidden directory? (i.e., directory does not show up in its parent, but you can CWD to it and do a LIST) (maybe I need to bite the bullet and make the dircache code completely dumb - i.e., "have I already issued this EXACT request?", but no intelligent analysis of the results) (this would make it easier to allow the dircache to be completely disabled, but it would also probably eliminate most of the need to disable it) Code Cleanup ------------ * for option code, use per-option handler functions to automatically pass values down to netio library layer? * add mmgr module to track dynamically allocated memory ? Protocol Support ---------------- * add support for various protocol extensions: * various PORT-mode security fixes (RFC-2577) * check to make sure that connection comes from the same address that the control connection is connected to * use random ports instead of asking the kernel to assign one * EPRT/EPSV for IPv6 (RFC-2428) * AUTH/ADAT/PROT/etc security extensions (RFC-2228) * TLS (draft-murray-auth-ftp-ssl-12.txt) * LANG (RFC-2640) * "SITE HELP" returns reply code 214, not 200 - maybe fix ftp_site() to be aware of this? * fix handling of a 421 response code from the server (RFC-1123 says this should NOT be ECONNRESET) * add support for other non-standard commands: http://www.serv-u.com/help/serv_u_help/additional_ftp_commands_supported_by_serv_u.htm * add support for the following FTP commands: STRU, MODE, TYPE, APPE, ALLO, CDUP, STOU, SIZE, MDTM * add support for wu_ftpd SITE commands: UMASK GROUP INDEX GROUPS IDLE GPASS EXEC CHECKMETHOD CHMOD NEWER ALIAS CHECKSUM HELP MINFO CDPATH ------------------------------------------------------------------------------- fget ==== * add support for ";type=" URL syntax * code cleanup (take advantage of common code between all three modes) * use fcntl()-locking on a lockfile for each file being downloaded, so that multiple parallel fget runs can be done * add support for "fgetrc" file? * add options for analogues of the following wget features: -A, --accept=LIST list of accepted extensions. -R, --reject=LIST list of rejected extensions. -I, --include-directories=LIST list of allowed directories. -X, --exclude-directories=LIST list of excluded directories. * seperate out mirroring function from commandline one-shot function ??? * add option for resuming interrupted transfers of large files * add option to call external program to evaluate whether each file should be downloaded ? (suggested by Igor Wronsky ) * add sanity check to avoid deleting local files if remote directory disappears due to a disk failure ------------------------------------------------------------------------------- fftp ==== * new FTP client with readline support, etc (steal code from nph)