NFTP features

NFTP is a text-mode ftp client for (in alphabetical order): BeOS (Intel R4 and up), Digital Unix (Alpha), FreeBSD (Intel), Linux (Intel, SPARC), OS/2, Solaris (SPARC and Intel), Windows 95/NT. Here `text-mode' means that it runs in fullscreen mode or text window -- Command-line session on OS/2, Command Prompt on Windows 95/NT, console or xterm on Unix, Terminal on BeOS. However, with version 1.50 the quasi-GUI version has appeared for OS/2. It looks much like textmode version, but utilizes native GUI menu, some dialog boxes, can be resized freely etc. This does not mean of course that textmode version will be abandoned. X11 version (using Xlib) appeared in version 1.51. One of the main design concepts of NFTP is speed and effectiveness of text-mode keyboard interface. Everything can be done without mouse!

To clarify things a little, NFTP is not based on ncftp; neither on user interface nor on source code. The code is written from scratch (I have started the project in 1994, but NFTP was OS/2-only until Feb 1998). Some ideas might seem to be common but still such ones are floating in the air, every decent FTP client should support things like directory caching and restarting transfers. Furthermore, NFTP user interface is quite different from ncftp's. Name "NFTP" comes from somewhat ugly "New FTP client". Personally, I think NFTP is one of the most advanced FTP clients in the Unix world (although you might disagree with my opinion, of course). Under Windows and OS/2, it stands aside as almost all FTP clients for these systems are GUI-based (unlike NFTP). While GUI offers prettiness and ease of use for novices, textmode interface gives speed without sacrificing power (including speed of use when you learn key combinations). Besides, textmode interface makes possible the same interface on a variety of systems, including Unix.

FTP functionality

Restarting interrupted transfers [screenshot]
NFTP will automatically restart interrupted transfers. The decision on whether to continue, skip or overwrite existing file is based on file's timestamp and size. Since version 1.60, NFTP can also restart broken uploads. Bugs and limitations: not all FTP servers support resume; NFTP does not yet use this feature with HTTP proxies.

NFTP reconnects to server as needed -- you don't have to worry about timeouts, dial-up link drop etc. And if server is busy and does not allow more logins, NFTP will make a pause and try again -- until it succeeds. Furthermore, NFTP will monitor data and control connections and when nothing comes down during specified periods of time, automatic reconnection will be made. Timeouts for this feature can be set in nftp.ini.

Secure authentication (PKFA) [screenshot]
In many organizations FTP user accounts are frowned upon. The reason is that FTP protocol does not provide a way to pass login information over network in secure manner. When you login your password travels over line in clear, unencrypted form and can easily intercepted. When security concerns are high enough, this is not acceptable. We have developed an extension to FTP protocol which encrypts passwords and eliminates this problem. Such solution of course requires installation of modified FTP server; two ones are provided (FreeBSD ftpd and wu-ftpd). Read more about secure authentication for FTP protocol.

Versatile firewall/proxy support
NFTP works through most popular types of proxies/firewalls, including DeleGate, WinGate, Squid, Netscape Proxy and others. Passive mode is also supported. Proxy can be switched on/off on-the-fly (no need to restart the program). SOCKS works on OS/2 and Windows through system-wide layers. Read more about firewalling support in NFTP.

Support for many servers
NFTP can work with many FTP servers running on various machines. Supported types include Unix, IBM OS/2, Neologic/Hethmon FTPd, Windows NT, Unisys Series A mainframes, MacOS Peter's FTPD, AS/400 servers, VMS (support is limited), MVS or OS/390 (not tested well). You can also set an option in nftp.ini to force NFTP to try new FTP protocol extensions which are now in the state of Internet draft. Very few servers support them yet, but it is expected that this feature will be very valuable in the near future because it can eliminate many problems caused by poor and incompatible with each other listing formats.

High transfer speed
The speed at which NFTP does transfers is only limited by your connection and operating system design. On Unix NFTP can fully saturate 100 MBit/sec Ethernet if disk drives on server and client are quick enough. This is one of the fastest ways to send huge files over LAN. Why settle for less?

Built-in FTP Search [screenshot]
NFTP has built-in FTP Search interface. This has several advantages over typical WWW gateway: NFTP can query several servers and display results in one panel; search results can be sorted by various criteria without the need to reload search page. The search results are kept until next search even if you exit NFTP. You can add search servers.

NFTP has an ability to create exact copies of directory trees via FTP. Copying can be done in any direction (remote -> local or local -> remote). You can also change mirroring behaviour with two options: whether to delete files from the copy which are not present in the original, and whether to descend into subdirectories. Together with scripting this feature can be used to do automatic mirroring. NFTP error recovery capabilities make it excellent directory synchronisation tool.

Pausing/restarting/skipping transfers
When NFTP is doing transfer, you can pause it, skip files being transferred, or force reconnection at any time. The latter is especially useful if link was dropped during transfer and connection to server need to be reinitialized (on some operating systems TCP/IP stack does not tell applications when link is dropped).

Sending arbitrary commands to server
Even if NFTP does not have a command line per se, you still can send any command to server. Just press Shift-Q.

Enabling/disabling symlink resolving
FTP servers under Unix can use powerful filesystem feature called symbolic links (or symlinks). These are special kind of files pointing to other files and directories. FTP protocol does not allow to determine directly whether symlink points to file or directory, and therefore working with them could be rather cumbersome. NFTP has an option to tell server to resolve them, i.e. show attributes (type, size, date) of files/directories they point to. This allows to work with them as regular files/directories. And if you need to you can always disable this feature and see symlinks as-is.

Preserving timestamps/permissions
When downloading or uploading, NFTP will preserve all information it knows about the file, including time of last modification and Unix access permissions. Your Perl scripts will continue to be executable when transferred from one machine to another. On upload this requires special FTP server capabilities (not all servers provide them).

Scrollable control connection history
Hit space and you'll see what has happened during entire session: client commands, server responses, error messages. They are colored to distinguish them from each other. You can scroll control connection history in both vertical and horizontal directions.

Download invisible files by their names
Someone gave you an URL but server does not allow to retrieve directory listing and you can't click on the file to download? Hit Shift-G and enter file name. NFTP will download it.

User interface features

Multi-language user interface
You can select one of the 19 languages for NFTP user interface: Brazilian Portuguese, Bulgarian, Chinese, Czech, Danish, Dutch, English, Finnish, French, German, Hungarian, Italian, Japanese, Korean, Norwegian, Polish, Russian, Spanish, Swedish, Ukrainian (Unix versions do not work with Japanese and Chinese translations yet). Translated are NFTP menus, messages and online help; documentation is only available in English. Not all languages are supported on all operating systems; see list for details and screenshots.

If your language is not listed, you might consider translating NFTP user interface. All the work was done by volunteers. Some of them are doing software translations on a regular basis (Kim Poulsen) or even run their companies (HH Translations/CE Documentation).

Two panels in Norton Commander(TM) style [screenshot]
This is a new feature; before version 1.60 NFTP only had single-panel interface. The old interface is still available (Ctrl-W switches between them). You can use arbitrary window size and panels will cleverly scale up or down (except Windows95/98 where operating system limits it to 80x25).

CUA-style menu in text mode
Even in console versions NFTP has industry standard, user-friendly menus in Common User Access (CUA) style. They can be navigated using keyboard or mouse (when mouse is supported).

Mouse support
NFTP supports mouse (except in BeOS version). The mouse support can be turned off.

Built-in help
Even if most things are intuitive in NFTP built-in help is only one key away. Press F1 and context-sensitive help screen is instantly displayed.

Customizable colours
NFTP uses colours for the various part of the interface. If you don't like them, change them! Right now there's no utility available for that, and you have to edit colours in nftp.ini by hand. NFTP can also run in monochrome mode. There aren't many monochrome monitors out there, but this can be useful even on colour one: some telnet emulators are braindead enough to not to display colours, and you can't see anything in NFTP started on remote machine. Solution: run "nftp -m". Works even on the most dumb ones available out there.

Highly customizable look and feel [screenshot]
If you don't like some aspects of NFTP user interface, you can customize it to your heart's content. Change colours and key combinations, hide upper menu bar, dedicate one of two lines to top/bottom status bars, set startup prompt (menu, login, bookmarks, history), change pseudographics style (useful on Unix), enable lynx-like navigation keys (left/right arrows used to leave/enter directories), enable/disable mouse support, save window size and position (not all platforms support this), turn off activating menu entries when mouse pointer floats over them, enable/disable various confirmations (logoff, exit, re-read, walking directory tree), set 'framed' or 'open' panel look. You can even turn off shadows hanging off dialog boxes! All these features are controlled by options in nftp.ini.

Progress indicator: even in the titlebar or process name [screenshot]
NFTP has an informative and nice-looking progress indicator. It displays the total number of files/bytes to process, number of files/bytes already processed, progress bars for entire transfer and current file. Exhaustive collection of times is also shown: elapsed, estimated total, estimated left for both entire transfer and current file. Also displayed are average transfer rate, number of seconds passed since last network packet was received/sent, names of remote and local files.

But not only NFTP has such a great progress panel, it also changes its window title or process name (on Unix) to display percentage and transfer rate. Handy when NFTP is run minimized or in the background. On Unix type "ps" to list running processes and see the progress. This feature is not available on BeOS.

End of transfer is indicated by bell
No need to constantly watch NFTP window: the bell will ring when transfer is finished. You can also program NFTP to run an arbitrary command (send mail, play sound etc.) at the end of the transfer.

File/directory management on local and remote
NFTP also serves as basic filemanager for local and remote files. You can delete and rename files and directories, create new directories, change Unix access rights. The file list can be sorted by different criteria (name, date/time, size). You can select/deselect entries by mask (using *, ? globbing), invert selection, select/deselect all. While dedicated filemanager is definitely better than NFTP for such tasks, the ability to do basic tasks without launching separate application is very useful.

Editing files on remote server
Set external viewer in NFTP to your favourite editor and you're able to edit remote files! If local temporary copy is modified, NFTP will ask you whether you want to upload it back to server.

Remote directory size display and option to compute it
NFTP offers an option to compute total size of the remote directory (with all subdirectories). The computed size is visible directly in the file panel. Very useful to see how many bytes you are going to fetch.

Built-in file viewer with search capability
Viewing remote and local files is nearly instant: hit F3 or Ctrl-V. You can search the contents of the file being viewed. Viewed files are cached during one session: no need to re-download them if you want to view them again! NFTP can also call external viewer (Shift-V) which can be set in nftp.ini.

Bookmark system with folders
Organize your bookmarks (site--directory--login combinations) into the tree-like structure (currently, only one level of nesting is allowed). Easy shortcuts allow to reorder entries and move them between folders -- no need to mouse around!

Site/directory history [screenshot 1] [screenshot 2]
NFTP records all places you visit. Press F2 and you see the list of sites (it is searchable and displays the date last time you been there), find your site and press Enter. NFTP displays all directories visited on it! Drill down to the farthest corners of the Internet! Also imagine the situation: someone sent you an FTP URL, you delete that e-mail message, login to site then... bang! power was turned off and where is the URL you forgot to record? Answer: open NFTP history.

One-key login to URL in the clipboard
Exchanging URLs between NFTP and other applications is very easy: copy URL to clipboard, then press Shift-L in NFTP: the URL from clipboard will automatically appear in the input field. To copy URL from NFTP: press Shift-I and you be presented an option to copy to the clipboard URL of the current file on remote. This option is not available in Unix console and BeOS versions.


Availability on various platforms
NFTP runs on many operating systems; on some of them there are even several versions: on Unix, it's console and X11; on OS/2, it's console (textmode), quasi-GUI, X11 and terminal version (to be run under xterm). All versions have consistent user interface. Current list of supported operating systems and hardware architectures: BeOS (Intel R4 and up), Digital Unix (Alpha), FreeBSD (Intel), Linux (Intel, Alpha, SPARC), OS/2, Solaris (SPARC and Intel), Windows 95/98/NT (Intel). When possible, statically linked executables for Unixes are also provided as a fallback.

Command line options
Launch NFTP and start transfer immediately! Or login into the URL specified on the command line. Works just like wget except you have to give an option "-g" (wget can also download via HTTP though while NFTP cannot). After download NFTP can stay connected, so you could examine the site whether it has interesting stuff. You can also launch NFTP with instant search in bookmarks or history ("nftp -h puppy" will locate in the history and display all directories you ever visited on it). NFTP also has an option to select user interface language from the command line.

Basic scripting capabilities
You can use NFTP for some automated transfers. Since NFTP is primarily interactive client, this feature is not very advanced yet many people find it useful. Read more about scripting support in NFTP.

Password caching
If your machine is secure enough, you can tell NFTP to store your passwords in scrambled or plaintext form. If you don't trust other people accessing your computer, NFTP can encrypt your passwords (you will have to provide a key phrase do decode passwords when NFTP is started). Thus you will be able to quickly login into sites (even from bookmark and history entries) without entering passwords. NFTP allows to add, change and delete passwords from your cache file. Read more about password caching in NFTP.

Great compatibility with many types of terminal emulators
If you are running NFTP on Unix machine via telnet emulator, you will value the excellent compatibility of NFTP with various terminals. It works when many screen-oriented Unix programs (pine, joe, lynx) give up, display horrible mess or do not recognize keys.

Comprehensive logging
When NFTP downloads or uploads file, it writes its name, location, size and transfer speed together with timestamp into the file nftp.fls, located in the installation directory on Windows and OS/2 and in ~/.nftp on Unix and BeOS. This is very handy to find out where did you fetch that precious file several years ago which you just accidentally deleted. NFTP users have written tools to gather statistics on this log file.

Saving directory listing into file
You can write directory listing into the file to examine it later. Sometimes this is useful (especially with looong list of files).

Exporting list of marked files into the file
After you have walked a lot of places on an interesting server and marked a lot of interesting files you can save their URLs into the file to send to a friend or just to be on the safe side of the hangs and crashes.

Starting external programs for downloading marked files
Not only NFTP can write URL lists but it can also automatically call external program and pass this file as an argument to it! In other words, you can start wget or similar tool on marked files. Default configuration is set up to use wget (you have to install wget if you want to use it; wget is not supplied with NFTP).

Can optimize display for slow connections when run on remote machine
If you are running NFTP on Unix machine which is far away and link to it is very slow, you can speed up operations by setting option in nftp.ini or giving command-line parameter "-s". NFTP will be less verbose when displaying things. With this option set you can comfortably use it even on lossy links via ssh (secure shell). Even if you thought that only straight command-line tools would work reasonably.

Can run in the background (Unix)
On Unix systems NFTP can be minimized with Ctrl-Z and run in the background (type "bg" and press Enter after Ctrl-Z): there's no need to dedicate special window or telnet session for it. You can return to NFTP by entering "fg" (unless you have disconnected from the Unix machine).

Working with file descriptions [screenshot]
When server directory contains file named 00index.txt and similar, NFTP will automatically fetch it and display file descriptions alongside names (in the single-panel mode). You can even force NFTP to write descriptions into file when downloading (set an option in nftp.ini).

NFTP home page // Send comment