History log of /src/usr.bin/ftp/cmdtab.c |
Revision | | Date | Author | Comments |
1.53 |
| 25-Feb-2023 |
mlelstv | Add option sslnoverify to control validation of SSL certificates. Add netrc processing to fetch-mode (URL on command line) to enable options and autologin via netrc. Fix SSL cleanup in some error paths.
Certificate validation is now enabled by default. Set FTPSSLNOVERIFY=1 in environment or configure a corresponding init macro via netrc to not validate certs (required if you haven't installed a required CA certificate for OpenSSL).
Discussed with lukem@ on icb.
|
1.52 |
| 22-Dec-2012 |
christos | branches: 1.52.40; document https support, mentioning certificates are not validated, and obey https_proxy.
|
1.51 |
| 12-Apr-2009 |
lukem | branches: 1.51.6; 1.51.8; 1.51.12; Fix numerous WARNS=4 issues (-Wcast-qual -Wsign-compare).
|
1.50 |
| 30-Sep-2008 |
lukem | branches: 1.50.6; update copyrights
|
1.49 |
| 10-May-2008 |
skd | Add epsv6 and epsv to disable extended passive mode for ipv6 or both ipv4 and ipv6 respectively. This hack is due to our friends a Juniper Networks who break epsv in ipv6. Should be fixed in ScreenOS 6.2.X.
|
1.48 |
| 28-Apr-2008 |
martin | branches: 1.48.2; Remove clause 3 and 4 from TNF licenses
|
1.47 |
| 11-Apr-2007 |
lukem | branches: 1.47.10; Revert rename of "debug" command from "ftp_debug" back to "debug".
|
1.46 |
| 31-Jan-2006 |
christos | rename debug to ftp_debug. grr libssh.
|
1.45 |
| 09-Jun-2005 |
lukem | copyright maintenance
|
1.44 |
| 11-Apr-2005 |
lukem | gratuitous whitespace cleanup (before someone else jumps the gun...)
|
1.43 |
| 15-Jul-2004 |
lukem | branches: 1.43.2; Fix bug in Christos' recent cleanup which broke the "help" and "rhelp" commands.
|
1.42 |
| 06-Jun-2004 |
christos | Save approximately 8K by not including http authentication, extended status messages and help strings when the appropriate options are set.
|
1.41 |
| 07-Aug-2003 |
agc | Move UCB-licensed code from 4-clause to 3-clause licence.
Patches provided by Joel Baker in PR 22365, verified by myself.
|
1.40 |
| 29-Jul-2002 |
lukem | Improve description of help text for "passive". Noted by Yar Tikhiy <yar at FreeBSD.org> in private email.
|
1.39 |
| 15-Nov-2000 |
lukem | - implement "mreget"; as per "mget" but uses "reget" instead of "get" - add -N netrc and $NETRC, as methods to select an alternative .netrc file - cache local user name and home directory for further use - in mget(), use docase() instead of a local version to do the case conversion.
|
1.38 |
| 14-Sep-2000 |
lukem | since everything else here uses ANSI C, we might as well replace __STRING() with the ANSI C stringization stuff...
|
1.37 |
| 28-Jul-2000 |
lukem | rename "opts" to "remopts", so people used to "o host" don't get bitten...
|
1.36 |
| 18-Jul-2000 |
lukem | add support for FEAT and OPTS commands with `features' and `opts'. (from RFC 2389).
add support for MLST & MLSD (machine parseble listings) with 'mlst', 'mlsd' and 'pmlsd' (mlsd |$PAGER) commands. (from draft-ietf-ftpext-mlst-11)
rename remotesyst() to getremoteinfo(), and modify to parse the result from FEAT (if supported), and take into account the support for the various extensions such as MDTM, SIZE, REST (STREAM), MLSD, and FEAT/OPTS. put each feature into one of the following categories: - known to work (explicit FEAT) - unknown but assume works until explicit failure, when it's then tagged as `known not to work'. - known not to work (FEAT succeeded but didn't return anything, or was unknown and then explicit failure) assign results into features[] matrix.
add support to getreply() so that an optional callback will be called for each line received from the server except for the first and last. this is used in FEAT (and MLST) parsing.
modify various commands to check if REST (STREAM), MDTM and SIZE are explicitly or implicitly supported before using.
fix `syst' when verbose is off.
minor knf (indent goto labels by one space, etc).
simply various command usage handlers by assuming that argv != NULL except for quit() and disconnect().
|
1.35 |
| 01-May-2000 |
lukem | * Add support for `fget localfile', which reads a list of filenames to retrieve from localfile. Based on work by Darren Reed. * Crank version. * Update copyright dates.
|
1.34 |
| 12-Nov-1999 |
lukem | - implement `set rprompt'; right side version of `set prompt'. depends on EL_RPROMPT support i added to editline(3). - allow $FTPPROMPT and $FTPRPROMPT to override defaults for the relevant prompts - move `%' formatting code from prompt() to expandbuf(). - implement `%.' and `%c', similar to the same % codes in tcsh(1) (functionality I added to tcsh nearly 6 years ago), except that `%.' always does `...trailing' and `%c' always does `/<x>trailing'. - unknown `%foo' codes get printed as `%foo'
|
1.33 |
| 11-Nov-1999 |
lukem | - implement updateremotepwd(); update the global variable `remotepwd' to contain the remote working directory. - add `set prompt', a user configurable prompt. (defaults to `ftp> '). the following escape characters a la tcsh(1) are supported: %/, %m, %M, and %n. - add global var `username'; used by prompt code - fix a couple of minor memory leaks - bump version
|
1.32 |
| 24-Oct-1999 |
lukem | new features: - add `usage'; displays the usage of a command. implemented by calling the c_handler() with argc = 0, argv = "funcname". - add `passive auto'; does the same as $FTPMODE=auto. - add `set [option value]'; display all options, or set an option to a value. - add `unset option'; unset an option. - add getoptionvalue() to retrieve an option's value, and replace a few global variables with calls to this. - implement cleanuppeer(), which resets various bits of state back to `disconnected'. call in disconnect() and lostpeer(). - support completing on `options'. - improve recovery after a SIGINT may have closed the connection. XXX: there's still a couple to fix
other stuff: - various consistency fixes in the man page. - ensure that the command usage strings in the code and man page match reality. - mput/mget: check that the connection still exists before each xfer. - minor cosmetic changes in confirm(). - set code correctly in sizecmd() and modtime() - don't need \n in err() strings. - change lostpeer to take an argument (rather than casting (sig_t)lostpeer in signal handlers) - knf and whitespace police.
|
1.31 |
| 05-Oct-1999 |
lukem | add TNFi copyright to all files i've done more than a minor amount of work to...
|
1.30 |
| 05-Oct-1999 |
lukem | enhancments from Marc Horowitz <marc@mit.edu> to improve connection timeouts: * implement xsignal_restart(), which only sets the SA_RESTART flag if specifically requested * xsignal() is now a wrapper to xsignal_restart(). INFO, USR1, USR2 and WINCH are restartable, ALRM, INT, PIPE and QUIT are not. * improve getreply()'s timeout code to take advantage of the above.
other changes: * improve wording of how globbing works for `classic' URLs (host:path). suggested by John Refling <johnr@imageworks.com> in relation to PRs [bin/8519] and [bin/8520] * always compile in the `edit' command even if NO_EDITCOMPLETE defined. it's just a no-op in the latter case, which is more consistent to the users. * always compile in about: support (i.e, remove NO_ABOUT). i'm entitled to some vanity in this program... * clean up some whitespace
|
1.29 |
| 01-Oct-1999 |
lukem | * newer takes an optional second arg, so document this * be a bit more explicit that the arguments to rate are in bytes
|
1.28 |
| 28-Sep-1999 |
lukem | * add new commands: lpage page local files pdir as dir, but through your $PAGER pls as ls, but through your $PAGER * implement docase() (a la dotrans() et al) and use appropriately, rototilling some duplicated code * globulize(): modify to return a pointer to the strdup()ed result in all cases, and hack the code that calls it to take this into account * replace strcpy() and strncpy() with strlcpy() * put(), getit(): use some aptly named local vars instead of argv[...] * delint
|
1.27 |
| 27-Sep-1999 |
lukem | * idle(): rename to idlecmd(). certain linux distributions have an incompatible prototype for idle() in <unistd.h> (which i thought was against namespace and sensibility guidelines, but...) * consistently use xsignal() instead of signal(). we get known behaviour in all cases (SA_RESTART), which is good for some borken foreign systems. * remove signal.h from most files; it's unnecessary now * fetch_url(): use `long chunksize' instead of ssize_t; it's more portable, and we're setting chunksize with strtol() anyway * xsignal(): only use SA_RESTART if it exists. SunOS 4.x doesn't have it but has the inverse (SA_INTERRUPT). the original function i was inspired from had this support (lib/signal.c, W. Richard Stevens' `UNP 2nd ed Vol 1'). * remove <termios.h> from util.c; it should be unnecessary now
|
1.26 |
| 22-Sep-1999 |
lukem | branches: 1.26.2; * add support for `xferbuf', which sets both `sndbuf' and `rcvbuf' * document the above three commands * rototill the way the sndbuf and rcvbuf work. remove resetsockbufsize() * use the appropriate socket buffer size as the size of the buffer that the read()/write() loops use. speeds up things in some cases.
|
1.25 |
| 11-Jul-1999 |
itojun | add epsv4 command, which enable/disable the use of EPSV/EPRT.
this is mainly for (hypothetical) ftp server which disconnect clients that use EPSV/EPRT. I've never seen any ftp server like this, but epsv4 command may be of use when such an ftp server is found.
|
1.24 |
| 02-Jul-1999 |
itojun | add dual-stack (IPv4/v6) support. hope I broke no other part...
|
1.23 |
| 29-Jun-1999 |
lukem | [fear this; more ftp hacking from lukem :-]
features:
|
1.22 |
| 24-Jun-1999 |
christos | include <signal.h> explicitly! we use sig_t extern.h, and we cannot depend on other headers fetching it on other OS's.
|
1.21 |
| 20-Jun-1999 |
cgd | split the "SMALL" #ifdefs into ones for NO_ABOUT, NO_EDITCOMPLETE, and NO_PROGRESS. -DSMALL still implies all of those. progress meter support isn't necessary for the smallest possible ftp client, but it adds very little space and makes users' lives much better. Therefore, it should be enabled for installation media if at all possible.
|
1.20 |
| 08-Mar-1999 |
lukem | branches: 1.20.2; whitespace & copyright fixes
|
1.19 |
| 26-Jul-1998 |
lukem | * spell `retrieved' correctly! * parse Last-Modified: HTTP headers for date, and change time of retrieved file if parsing succeeded * support file:/// and file://localhost/ URLs * in url_get(), re-write byte moving code to consistently use fread() and fwrite(), and check errors at end with ferror() * add about:* easter-egg (#ifndef SMALL :-)
|
1.18 |
| 10-Jul-1998 |
thorpej | Add "sndbuf" and "rcvbuf" commands for setting the socket buffer sizes, which in turn can allow the use of larger TCP windows. This is a work in progress; there is not yet support for specifying global defaults or user prefrences on a host/network basis.
|
1.17 |
| 18-Aug-1997 |
lukem | branches: 1.17.2; bugs fixed: * don't interpret '-' or '|' when a local filename is determined from the remote name (i.e, in mget, and in get with only one argument). This is implemented using an extra argument to recvrequest(). Fixes a major security hole. * clean up memory leak when using globulize() * clean up a couple of comments * fix wording in TNF copyright
features added: * support for TIS fwtk gate-ftp servers: * read defaults from $FTPSERVER && $FTPSERVERPORT * start in gate-ftp mode if invoked as 'gate-ftp' * toggle or set with 'gate [host [port]]'
|
1.16 |
| 20-Jul-1997 |
lukem | * use RCSID() && COPYRIGHT() macros * cleanup for WARNS=1 (including some ugly '(void)&var' bits wrapped in #ifdef __GNUC__ to shut up gcc warnings WRT setjmp/longjmp) * use strtol() instead of atoi(), and more extensively check result of conversion * use u_int16_t instead of short or int for TCP port addresses
|
1.15 |
| 05-Apr-1997 |
lukem | * support $ftp_proxy for ftp:// transfers [bin/3245] * add "more" & "less" as synonyms for "page" * move editline setup code into controlediting(), and call appropriately. only setup setup terminal if going into interactive mode. inspired by Todd Miller <todd.miller@courtesan.com>
|
1.14 |
| 14-Mar-1997 |
christos | SMALLFTP->SMALL; remove SMALL from Makefile
|
1.13 |
| 13-Mar-1997 |
lukem | Features: * support remglobbing of auto_fetch arguments * new flag - '-e'; disable editing * "page file" == "get file |${PAGER-less}"
Bugfixes/cleanup: * consistently use a trailing '.' on messages * code cleanup, including buffer overrun fixes, use puts and putchar in places, etc (inspired by OpenBSD mods) * disable progress bar when local-file is a pipe or '-' * skip \r in http headers * fix remote ftpd slash bug more elegantly (so it works with ////) * abort_remote(): check if cout==NULL before using it. should fix [bin/3273] * fixed up cosmetic problems when complete_remote() generated errors from the remote server (such as "no files found", "login with user and pass", ...) done by adding extra argument to remglob(), which is a pointer to an error buffer to put messages in rather than printing to stdout.
|
1.12 |
| 19-Jan-1997 |
lukem | New features: * Command line editing via editline(3) library. * Context sensitive command and file completion, including remote files.
Enhancements to auto-fetch feature: * Support for http:// URLs using the http protocol, including proxy HTTP support via $htty_proxy if it's defined. * The connection is kept open between successive files on the same host. (obviously, this does not count for http requests.) * Return value of ftp is 0 on no error, or the offset in argv[] of the file which failed (i.e., argv[x] failed, ftp returns x). * If the path in an ftp URL or classic format line has a trailing '/', cd to the path and enter interactive mode. Fixes [bin/3011], albiet requiring the user to help ftp in determining the operation.
Other changes: * '-P port' works for normal ftp, and is the default for all classic style auto-fetch transfers and for ftp URLs that don't specify the port. (previously it would just work for the first xfer.) * Some code moved into separated files along logical divisions. * Editing and completion can be compiled out with -DSMALLFTP.
|
1.11 |
| 09-Jan-1997 |
tls | RCS ID police
|
1.10 |
| 06-Dec-1996 |
lukem | functionality mods: * implement 'progress bar/meter' (inspired by ncftp). use 'progress' to toggle on. it will display current file size to 5 digits, automatically determining suffix (up to 16384 P (petabytes) == 2^64). * 'ls' now uses NLST (unadorned listing), a la older ftp clients. 'dir' still does LIST (long listing). idea from John Nemeth <jnemeth@cue.bc.ca>
bug fixes: * return first line of reply in reply_string[] from getreply(), instead of last line. This fixes [bin/741] (parsing of SYST), and also means that SIZE and MDTM messages will be parsed correctly if they're longer than 1 line. * parse URL-style auto-ftps that have no filename correctly (e.g, ftp://host, ftp://host/, ftp://host/dir/). pointed out by Jaromir Dolecek <dolecek@saruman.ics.muni.cz> * pass the correct size array in 2nd arg of utimes() when setting the modification time
|
1.9 |
| 28-Nov-1996 |
lukem | More features, some of which were inspired by changes that friedman@gnu.ai.mit.edu (Noah Friedman) made to his modified ftp: - implement "lpwd" - local pwd - implement "preserve" - toggle preserving of file modification times on retrieved files - allow for explicit "on" or "off" arg to toggle commands - "exit" synonym for "quit", "msend" synonym for "mput" - in confirmation mode, allow 'a' (yes to rest of current command), and 'p' (turn off prompt mode, as if 'prompt off' was done, effective immediately) - "modtime" returns time formatted as localtime, not GMT
Bug fixes: - check for extraneous args on commands - cleanup const usage, line formatting - create 0 length temporary file in remglob() to prevent symlink games (from OpenBSD) - check length of filename of ~/.netrc (from OpenBSD)
|
1.8 |
| 25-Nov-1996 |
fvdl | Correct the connecthelp info. This is really ftp, not tftp.
|
1.7 |
| 25-Nov-1996 |
lukem | cleanups/bugfixes: - don't echo 'ACCT' parameter when debugging (a la 'PASS') - Fix checking of directory access for "/foo", the parent directory is "/", not "" (from FreeBSD) - remove trailing whitespace on lines - add any missing NetBSD tags - cleanups to man page, includinging sorting options description
feature additions: - variable sized hash marks (from [bin/683], but done in the hash command as an optional arg) - more user-friendly transfer time printing (from FreeBSD, with mods) - '-p' command line option to jump into PASV mode (closes [bin/2857], but with an option rather than checking argv[0]) - SIGINFO support for printing xfer stats when sending/receiving requests - '-P port' for changing the port to connect to (from thorpej@netbsd.org) - '-a': bypass normal login, and try anonymous login (from OpenBSD via thorpej) - autofetch files via url (ftp://...) or "classic" (host:/file) (from OpenBSD via thorpej) - 'ftp' synonymous with 'open' (from FreeBSD)
|
1.6 |
| 08-Sep-1995 |
tls | Sync with 4.4lite2
|
1.5 |
| 29-Aug-1994 |
mycroft | branches: 1.5.2; Add RCS ids.
|
1.4 |
| 25-Aug-1994 |
cgd | passive mode support, from David Carrel <carrel@cisco.com>, and cleaned up for the new ftp sources by me.
|
1.3 |
| 25-Aug-1994 |
cgd | clean up import, no local changes.
|
1.2 |
| 01-Aug-1993 |
mycroft | Add RCS identifiers.
|
1.1 |
| 21-Mar-1993 |
cgd | branches: 1.1.1; 1.1.2; Initial revision
|
1.1.2.1 |
| 25-Aug-1994 |
cgd | import from 4.4-Lite
|
1.1.1.2 |
| 05-Sep-1995 |
tls | imported from 44lite2
|
1.1.1.1 |
| 21-Mar-1993 |
cgd | initial import of 386bsd-0.1 sources
|
1.5.2.2 |
| 29-Aug-1994 |
mycroft | Add RCS ids.
|
1.5.2.1 |
| 29-Aug-1994 |
mycroft | file cmdtab.c was added on branch netbsd-1-0 on 1994-08-29 03:09:09 +0000
|
1.17.2.1 |
| 10-Nov-1998 |
cgd | pull up rev(s) 1.18-1.19 from trunk. (feyrer)
|
1.20.2.1 |
| 25-Jun-1999 |
cgd | pull up rev 1.21 from trunk. (cgd)
|
1.26.2.1 |
| 27-Dec-1999 |
wrstuden | Pull up to last week's -current.
|
1.43.2.2 |
| 24-Jul-2005 |
tron | Pull up revision 1.45 (requested by lukem in ticket #606): copyright maintenance
|
1.43.2.1 |
| 09-May-2005 |
tron | Pull up revision 1.44 (requested by lukem in ticket #266): gratuitous whitespace cleanup (before someone else jumps the gun...)
|
1.47.10.1 |
| 18-May-2008 |
yamt | sync with head.
|
1.48.2.1 |
| 23-Jun-2008 |
wrstuden | Sync w/ -current. 34 merge conflicts to follow.
|
1.50.6.1 |
| 13-May-2009 |
jym | Sync with HEAD.
Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
|
1.51.12.1 |
| 25-Feb-2013 |
tls | resync with head
|
1.51.8.1 |
| 17-Dec-2013 |
bouyer | Apply patch, requested by tron in ticket #997: usr.bin/ftp/Makefile patch usr.bin/ftp/cmds.c patch usr.bin/ftp/cmdtab.c patch usr.bin/ftp/extern.h patch usr.bin/ftp/fetch.c patch usr.bin/ftp/ftp.1 patch usr.bin/ftp/ftp.c patch usr.bin/ftp/ftp_var.h patch usr.bin/ftp/main.c patch usr.bin/ftp/progressbar.c patch usr.bin/ftp/ssl.c patch usr.bin/ftp/ssl.h patch usr.bin/ftp/util.c patch usr.bin/ftp/version.h patch
Add HTTPS support to ftp(1).
|
1.51.6.1 |
| 23-Jan-2013 |
yamt | sync with head
|
1.52.40.1 |
| 16-May-2023 |
martin | Pull up following revision(s) (requested by lukem in ticket #170):
usr.bin/ftp/ssl.c: revision 1.13 usr.bin/ftp/fetch.c: revision 1.236 usr.bin/ftp/util.c: revision 1.166 usr.bin/ftp/main.c: revision 1.129 usr.bin/ftp/extern.h: revision 1.83 usr.bin/ftp/ftp.1: revision 1.148 usr.bin/ftp/cmdtab.c: revision 1.53 usr.bin/ftp/version.h: revision 1.96
Add option sslnoverify to control validation of SSL certificates.
Add netrc processing to fetch-mode (URL on command line) to enable options and autologin via netrc.
Fix SSL cleanup in some error paths.
Certificate validation is now enabled by default. Set FTPSSLNOVERIFY=1 in environment or configure a corresponding init macro via netrc to not validate certs (required if you haven't installed a required CA certificate for OpenSSL).
Discussed with lukem@ on icb.
|