Copyright: © 1998 Jan Debis


Welcome to LeechFTP !

LeechFTP is a freeware FTP client with some nice features:

•	Multithreading for simultaneous transfers !

•	File and Directory Upload

•	File and Directory Download

•	URL Connect and URL Download

•	URL Snatcher (grabs URLs from Clipboard)

•	Sanity check for downloaded ZIP and RAR archives

•	Archive viewer for ZIP and RAR

•	Download of directory trees as TAR archives (if supported by server)

•	Queue Timer for scheduled transfers

•	SmartResume: Aborts resume if files differ

•	Bandwidth Limiting

•	FTPSearch Interface

•	HTTP file download

 User Interface

 Getting started

 Keyboard Shortcuts

 Known Problems

Sorry, but this help file is not fully up-to-date !


User Interface
User Interface:

Click below to get a short description, hit CTRL-TAB to show hotspot areas


Getting started
Getting started:

Basic functions:

 Connecting to a ftp server

 Bookmarks

 Download files

 Uploading files

 Local file operations

 Remote file operations

 URL Download

 URL Snatcher

 Configuring the program

Advanced functions:

 Using the Queue Timer

 Limiting Bandwidth

 TAR Download

 Handling Threads

 FTPSearch


Connecting to a server
Connecting

There are several ways to connect to a server: You can use the Connect Dialog available from the main menu and button bar. This gives you access to all ftp settings like username, port, etc. Or you

can use the Quick/URL Connect, which is much faster. See URL section for information.

Edit Fields:

Host or URL: Enter a hostname, IP number, or URL. Hit TAB to parse the URL.

Port: This specifies the port of the remote server. 21 is the default ftp port.

Username & Password: This values will be used to login to the ftp server. Click the Anonymous Radiobutton to use the anonymous account, which is used for public access on most servers.

Remote Directory: Initial starting directory on the ftp server

Advanced Settings:

Local directory allows you to specify a local directory for this session

Login Limit: Sometimes you might want to limit the number of threads used for a server

Connection Settings:

Connection Retries: Number of attempts made to login to the server

Idle Timeout: If there is no more work to do for a thread, it waits the number of seconds specified here before disconnecting from the server.

Connection Timeout: Amount of time to wait for a server response

Login Retry Delay:  Amount of time to wait between login attempts


Bookmarks

•	Host names are displayed on the status bar

•	Double click on a bookmark or use the connect button to connect to the selected server.

•	Right click to open a popup menu or use the main menu

•	Delete items by pressing Delete

•	You can leave username or password empty, you will be prompted for it during login sequence

•	You can secure bookmarks to prevent unauthorized use

•	Hit F2 to rename a bookmark


Using URLs

LeechFTP accepts URLs in a couple of places:

•	Connect Dialog (Hostname field)

•	URL Connect (Accepts both host name and URL)

•	URL Download

•	Manual Download (Hostname field)

Format of accepted URLs: ftp://username:password@hostname:port/path/to/directory/

Examples:

•	ftp://ftp.cdrom.com

•	ftp://bill:secret@ftp.microsoft.com/pub/

•	ftp://126.78.43.142

•	ftp://ftp.whatever.com/pub/%20%20%20/%28weird%29/

Note: Pathnames are assumed to be UNIX style (/pub/www/), not DOS style (c:\myfiles\) !

URLs used by Netscape may contain replacements for extended characters, e.g. %20 for ' ' (Space), these characters are converted during URL processing. LeechFTP accepts these %XX sequences in all URL dialogs and when manually changing the remote directory !


Downloading
Downloading files is very simple:

Drag the selected file to the local directory window or use the button or menu to do the some. Note that the files are not transferred immediately, they are submitted as jobs into the job queue. Once there are free resources (threads), the files will be downloaded.

Download directories is done the same way, but the processing is different: A single thread starts recursively exploring the specified directory and creates the directory structure in the local directory. Additionally, it adds all found files to the queue for download.

Download will fail if you are not allowed to access the files, see the log files for detailed errors.

LeechFTP tries to resume downloads

•	if the server supports the REST command

•	if the file exists in the local directory

LeechFTP detects when the contents of the remote file differs from the local file, in this case the file will be overwritten. This should make it more secure to resume files from different servers.


Uploading

Uploading files is very simple:

Drag the selected file to the remote window or use the button or menu to do the some. Note that the files are not transferred immediately, they are submitted as jobs into the job queue. Once there are free resources (threads), the files will be uploaded.

Uploading directories is done the same way, but the processing is different: A single thread starts recursively exploring the local directory and creates the directory structure in the ftp server. Additionally, it adds all files in the local directory to the queue for upload.

Upload will fail if you do not have uploading permission on the server, if a transfer fails, you can find more information in the log files.

LeechFTP tries to resume broken uploads if the local file isn't newer than the remote file.


Working with threads
Working with threads:

LeechFTP uses one thread per ftp connection, you can see all running threads on the Thread Panel. If you are connected to a site, the first entry shows your main thread. The main thread is only used for browsing and simple file operations on the server, but NOT for file transfers ! All commands and responses that are logged to the log window are caused by the main thread, all other threads log their messages to the logfile only (if enabled).

If you decide to transfer some files, they are not transferred immediately but added to the Job Queue. The Job Queue holds all needed information about a ftp transfer, so processing these items does not require you to be connected to the site any longer. You can add or delete items from the queue manually. If job processing is not disabled, it starts at the first item in the list, new entries are added to the end of the list.

Queue items are processed by threads, you can set the maximum number of running threads on the thread panel. Threads are spawned once the number of running threads is smaller than max # of threads and if there are queue items waiting.

Once a thread logged into a ftp server, it requests a job from the queue.

Thread Panel Popup:

Right clicking in the thread panel shows you a small popup:

Cancel thread will signal the selected thread to abort as soon as possible

Speed limit imposes a speed limit for the selected thread

Disable speed limit removes the speed limit, thread will send and receive without delays.

Speed limit (all) applies a speed limit on all running threads

Drop main thread will put the main thread into background. It will seem like you are disconnected from the server, but the thread remains logged in. If you want to recover it, use the next command

Reuse thread allows you to use an idle thread for browsing.

Reuse when finished can also be applied to running threads, as soon as the thread has finished its transfer, it will be available again for browsing

Disable idle timeout will keep the thread from logging out after the idle time limit has been reached


Keyboard shortcuts
Keyboard shortcuts:

Most important operations can be reached by menu items, buttons or drag & drop. In addition, there are some keyboard shortcuts for common operations:

Connect:

Ctrl + F	Connect Dialog

Ctrl + Q	Quick Connect

Ctrl + B	Bookmarks

Local & Remote Listview:

F5	Update directory listing

Delete	Delete selected files and directories

Shift-Delete	Delete selected files and directories (without confirmation)

Backspace	Go to parent directory

Enter	Change into selected directory (Local: Start associated program)

Ctrl + I	Directory Information

Local Listview only:

F2	Rename item

Ctrl + PgUp	Upload files

Ctrl + S	Change local directory

Ctrl + E	Opens current local directory in Explorer

Remote Listview only:

Ctrl + PgDn	Download files

Ctrl + D	Change remote directory

Ctrl + V	View file


Local file operations
Local file operations:

This is the local directory popup:

Upload Files: Self-explaining

Open: Executes the associated program, e.g. Notepad for .txt files, file_id.diz and *.nfo files are showed in the integrated viewer.

Edit in notepad: Self-explaining

Delete selected files: Self-explaining

Rename File: Self-explaining

Create Directory: Self-explaining

Change Directory: Opens a directory tree view

Change Drive: Lets you easily change the current drive

Compare Directory: This features selects all files in the remote list view which are not present in the current directory or have a different file size. This is useful for finding missing files after incomplete transfers.

Open Current in Explorer: Launches Explorer for current directory

Open Selected in Explorer: Launches Explorer for the selected directory

Command Prompt Here: Gives you a command prompt for the current directory

Directory Info: Gives you a small overview about number of files, selected files, size, etc.


Remote file operations
Remote file operations:

This is the remote directory popup:

Download Selected: Should be self-explaining!

Get Link As File: In most cases a link is referencing a directorie, if it references a file, use this command to retrieve the file

Delete Selected: Deletes files and tries to remove directories

Rename File/Dir: Should be self-explaining!

Create Directory: Should be self-explaining!

FTPSearch this file: Uses the FTPSearch interface to find alternate locations of this file

Change Directory: Should be self-explaining!

Compare Directory: This features selects all files in the remote list view which are not present in the current directory or have a different file size. This is useful for finding missing files after incomplete transfers.

Add Bookmark: Adds a bookmark to the site bookmark list in the Connect dialog

Custom Command: Allows you to send a custom command, might be useful for more advanced commands like SITE ...

Directory Info: Gives you a small overview about number of files, selected files, size, etc.

Sort Order: Allows you to sort list view contents by name, size or date. Note: You cannot switch from sorted to unsorted without refreshing the list manually.


TAR Download
TAR Download:

Some UNIX Servers offer a great feature: They support on-the-fly TAR creation, this means you can download a directory and its contents in one file ! This can speed up transfer if you had to download hundreds of files instead. This options is available in the manual download form also.


Log files
Log files:

Log files contain some useful information about sent and received ftp commands and successfully completed transfers. You can access the log files over the Tools menu or by opening the corresponding files, the log files can be found in the program directory: ftpcmds.txt, downloads.txt and uploads.txt. Logging is only enabled if the appropriate items are checked in the Options screen.


Limiting Bandwidth
Limiting Bandwidth:

You can access this feature over the Thread panel popup menu.


FTPSearch Interface

FTPSearch (http://ftpsearch.ntnu.no) is probably the best ftp search engine available on the net, and it is a very usefull tool for finding files on ftp servers. The LeechFTP FTPSearch Interface uses HTTP for requests to ftpsearch.ntnu.no, so it gives you the same results as their web does.

You can use the popup menu in the remote list view to easily search for files.

File to search for: Specify the filename (or directory) you are looking for in this field

Limit to domain: Enter a domain to limit the search on these servers.

Max hits: Maximum number of search results


URL Snatcher

If you want LeechFTP to download files from your web browser, you can copy links to the clipboard.

LeechFTP periodically checks if the clipboard has changed and will try to download any URL found. To ignore certain file types (HTML, TXT), see the options screen.


Know Problems
Currently known problems/limitations of LeechFTP:

•	VMS directory listing currently not supported

•	Problems parsing weird Unix listings, dirlist parsing is currently done by tokenizing each line with space as a seperator. This will fail if there is no gap between two columns in a dir listing, like here:

drwxr-xr-x 402 ftpmirrorietf        8192 Jul 14 05:33 ietf

dr-xr-xr-x   3 root     other        512 Jul  7 19:44 etc

Parsing will fail on the first line (no gap between ftpmirror and ietf).

Directory listings are the biggest pain for every ftp client developer, here is a small excerpt from the different directory listing formats I have come across:

Unix style:

dr-xr-xr-x   2 0        1            512 Apr  8  1997 dev

Unix style:

-rwxrwxrwx  1 ftp      ftp        149605 Dec 18  1997 apithing.zip

Unix style:

drwxr-xr-x   2        1            512 Dec 22 14:15 msgs

Microsoft dares to return a DOS dir listing:

03-05-98  07:35PM       <DIR>          Netscape

Macintosh:

dr--r--r--               folder        0 May  2 11:24 Games

OS/2 DOS style:

                 0           DIR   06-20-97   11:36  IBMLAN

and so on ... ! LeechFTP will handle these, but if there is anything abnormal in a listing (like localized month names, e.g. "Mai" instead of "May"), it will fail.

•	Transfers in progress are not saved when leaving the program !

•	Failed transfers are not saved !

•	Local directory update is done by something called a "directory change notification", which is a windows function that notifies your program whenever directory contents change. This works fine on all local drives but only on some kind of network drives. So it might happen that you won't see any change in the local directory view though you are downloading tons of stuff there. In this case, you have to update the view manually by pressing F5.

•	I'm sure there is more, but I can't remember right now ;)

I do what I can to improve the quality of this program, but I can only work in this project from time to time (hey, I'm a student!) so do not expect it to be fixed tomorrow !


All files in the current local directory are listed in this place. The current directory name is printed in the  statusbar. Once you are connected, you can upload files and directories to the remote server by dragging the selected files to the right.

Most file operations can be done by a keyboard shortcut or a popup item. The popup menu can be reached by right-clicking in the local window.


You can switch between the Job Queue, Thread Panel, Download Listing, Failure Listing.

The Job Queue lists all pending jobs, you can delete jobs or submit jobs manually.

The Thread Panel shows all thread activity, right click in the thread panel to access a popup menu.

The Download section shows all successfully downloaded files. ZIP and RAR Archives are checked for common errors and archive contents can be viewed if this option is enabled.

The Failure list shows all failed transfers, they can be resubmitted to the job queue.


The remote directory window displays all files and directories on the ftp server. Download files and directories by dragging the selected files to the local directory window. Note that all selected files will be placed in the current local directory, you can change the local directory after the files are queued.

You have to update the remote directory listing by pressing F5 to catch any changes that might have taken place in the remote directory, e.g. after uploading some files.


The log window contains all messages that are sent and received by the main thread, the thread that is used for browsing the server directories. This window is cleared after a certain amount of lines.


Minimizing to System
Click on this button to minimize the application. You will an Icon in the system tray, right click to open a small popup.


Connect Button
Shows the Connect dialog


URL Connect Button
Allows you to enter a URL you want to connect to


Abort Login Button
Click here to abort login process


Disconnect Button
Disconnect from server. If the job queue is not empty, you will be asked if you want to use the main thread for transfers on that server.


URL Download Button
You will be prompted for an URL to download


TAR Button
Click here to try to retrieve the selected directory as a TAR archive.


Upload Button
Upload selected files


Download Button
Download selected files


DirInfo Button
Shows some directory statistics


DirCompare Button
Compare both directories. Missing files will be selected. Files that differ in size are regarded as missing.


ChangeDir Button
Open Change Directory window


Refresh Button
Updates directory listings. Remote directory listings are not automatically updated.


Resume Button
When selected, resuming will be disabled. Use this button to force overwriting of existing files. This setting will apply to new jobs only.


List Panels
Double click here to open either local or remote ChangeDir dialog window


Exit Button
Terminates program


Timer Button
Sets Queue Timer. Queue processing will start at specified time.


Server Info Button
Shows some Server information, this is the response to the SYST command


Bookmark Button
Shows Bookmark screen


Transfer Mode
From left to right:

Binary Transfer Mode

ASCII Transfer Mode

Automatic (Default)


Directory Change
By clicking this button you can turn off directory change notification.

The local list view will not automatically be refreshed on file changes.


View File
To view a remote file, click on this button.


Under Construction
not yet done...