Alun Jones                           WFTPD 1.9 Documentation

1910 Westmead 3702
Houston TX 77077, USA
                            WFTPD
               Windows FTP Daemon Version 1.9
                      For Winsock v1.1
Self-congratulatory Introduction

Welcome to WFTPD, and many thanks for caring to read the
documentation.

For those of you new to Internet terminology, FTP is a
standard communication protocol to enable file transfer
(hence its name, deriving from File Transfer Protocol).  A
1Daemon is a program that sits in the background waiting to
serve other applications.  It is commonly also referred to
as a server.

This program is an attempt to provide most of the
functionality associated with this protocol.  Since the
program is still in development, and does not hold all the
features defined in the standards document for FTP, it may
not be suitable for all purposes.  It is, however, suitable
for a great many purposes that occur commonly amongst users
of FTP programs.

This program has certain advantages over many of the
commercial implementations.  The first, and most obvious, is
its cost.  If you can accept certain limitations that I have
placed on the software, the cost may be nothing, since you
are not forced to send me money to use this software.  A
registration fee of $15 is suggested, and the benefits of
sending in your registration include:

         Automatic notification of any new versions
         Lifting of all restrictions on the shareware
          version (only five transfers per session, and
          impolite greeting and farewell messages)
         A warm, fuzzy feeling
         The likelihood that I will be sufficiently
          interested to produce a new version
         More of a say in determining new features

Instructions on registering are included in the file
REGISTER.TXT, as well as at the end of this file.

Other advantages over commercial implementations include
that this program has been written from scratch to be
compatible with the Winsock specification, rather than any
particular implementation.  This gives it a greater chance
of working with those winsock stacks that fully comply with
the Winsock v1.1 specification.  The program has been
written solely with Windows in mind, and is not a port of
anyone else's implementation.  This allows it to be more
efficient in the Windows environment.

Well, enough sales talk, and on with actually documenting
this program.

Documentation begins here!

WFTPD can only be run on top of a winsock v1.1 compliant
TCP/IP stack.  It has been used by many people on a variety
of different stacks.  It seems to work very well on top of
the shareware Trumpet Winsock available from most ftp sites
and shareware archives as TWSK10A.ZIP.

If on starting WFTPD, you receive an error "Cannot Find
WINSOCK.DLL", or a similar message to say that Windows
cannot find the WFTPD executable, this is because a Winsock
compliant stack has not been installed correctly on your
system.

As a shareware application, WFTPD has no warranty, either
express or implied, about its suitability for any purpose.
Support is not guaranteed, nor are future updates.  The
program is offered on an as-is basis to any users, and the
author and distributors of this program are not liable for
any damage or loss caused by the use, misuse, abuse or
talking-moose of this program.  Similarly, the author and
distributors are not liable for any damage or loss caused by
any portion of this code or documentation, no matter how
poorly written.

WFTPD is distributed through shareware archives as one
executable, one help file, and a few ancillary files, of
which this is one.  To run the program, all that is required
is the executable, although you may wish to keep the help
file around for those moments where you have forgotten what
you read in this document.  The help file should be kept in
the same directory as the executable.

As with so many other windows programs, WFTPD creates a file
with the extension ".INI" in the windows directory.  (If you
run the program as "WFTPD.EXE", the INI file will be
"WFTPD.INI")  It is not necessary to edit anything in this
file directly, since all operations are accessible from menu
options.  It is advised that you NOT edit the INI file in
normal operation, since there is a certain amount of
validation of your input that is done when entering items
through the menus.

The menu structure has been designed to be as intuitive as
possible, while still providing the required functionality.
The menus are outlined individually below:

File Menu

From this menu, all the file operations are performed, in
addition to an option setting that I couldn't find any
obvious place for.  The two file options are "Open Log" and
"Close Log".  These options define whether any enabled
logging information (q.v.) will be output to a file, and
which file this information is output to.  Any currently
open log file's name is displayed on the title bar of the
application.  If the application is closed (exited) while a
log file is open, that file will be reopened on re-starting
the application.  If a log file already has any contents,
the new logging messages will be appended.  For this reason,
it is advisable to make a regular investigation of your log
files to ensure that they have not grown too large.

The additional option on this menu is the "Greedy" option.
Simply described, when this option is checked, transfers TO
the system running WFTPD will run faster, but more of the
Windows process time will be taken up.  Hence, this option
should probably only be enabled on a machine that does not
receive much interactive use of Windows.  If you intend to
use Windows while WFTPD is running, I recommend you disable
the Greedy option.  Currently there is no corresponding
option for transfers FROM the system running WFTPD.

The final command on the File Menu is the Exit command,
which closes down the program.  It is important on some
Winsock stacks to close the program down BEFORE exiting
Windows, since there is currently a bug that leaves a
'listener' process active for ftp, which means that should
you re-enter windows without restarting your TCP/IP stack
(often requiring a reboot), you will not be able to start
ANY ftp servers, and incoming ftp requests will get lost.  I
view this as a bug in my software, and also in the
underlying TCP/IP implementation of the relevant Winsock
stacks, since when Windows closes down, they should close
down all TCP/IP connections that were activated under
Windows.  A later version of WFTPD will fix this.

Edit Menu

The only option here, Copy, has been greyed out - this is
reserved for future expansion, to allow you to copy parts of
the on-screen log information to the clipboard.

View Menu

This has one option, "Status Bar".  This toggles the display
of the status bar on the bottom line of the screen display,
which will contain a on-line description of whatever command
is currently highlighted on any menu.

Logging Menu

This is where decisions are made as to whether logging is
performed, and what information is logged.  The first
option, "Logging On", enables the logging of items checked
below the separator, and provides a quick method of turning
on or off all log information.  "Clear Screen" clears the
window of all on-screen logging.  This is a non-reversable
process.

Underneath the separator (the horizontal line) are the
options describing what information gets logged.  "Gets"
enables logging of any transfer FROM the WFTPD system.
"Puts" enables logging of transfers in the other direction.
"Logins" enables a log of every non-anonymous user who
connects to your system, and "Anonymous" enables logging of
the anonymous connections.  "Commands" enables logging of
all other commands issued by connected FTP clients.

The last, and perhaps dangerous, option is "Winsock Calls".
This is included mainly to aid in the isolation of faults
between WFTPD and your Winsock stack.  Since the Winsock
specification is relatively new, there are some areas where
the writers of Winsock stacks may not have got it 'right',
and some areas where they are not necessarily 'wrong', but
disagree with the interpretation I make of the winsock spec.
If you enable this option, every call to the Winsock stack
will be logged, along with an error code.  An error code of
0 means no error, and on any "[signal]" line, the error
number is the type of signal received.  The only other error
number to be expected is 10035, which means that the
transfer of data blocked - this is a normal condition for
any network connection.  Any other error condition may need
investigation.

Message Menu

This controls various messages that users see.  The first
two items will put up dialogs to allow you to enter up to 20
line messages to be displayed on entry into, and exit from,
the WFTPD system.  In the unregistered shareware version,
these dialogs come up, but may NOT be edited.  I apologise
if the message seems rude to you, but please don't be a self-
righteous ninny about it - I have had several people
complain that they cannot reasonably test the program with
these messages in.  I believe this argument is phoney - if
you are testing the software, I would hope that $15 is a
drop in the ocean compared to the cost of your (and your
testers') time, and I would also hope that if you have other
people connecting into your 'test' site, it should be no
problem to inform them that this message is due to your
testing an unregistered shareware product.

The third item on this menu, "MESSAGE.FTP" is a toggle that
enables messages to be displayed on each change of
directory.  If this option is enabled, and the user changes
directory into one with a file called "MESSAGE.FTP", the
text inside this file is sent to the user along with the
notification of his new directory.  My advice is to keep
this message brief, since many people have only twenty line
terminals, and may not be able to pause, or scroll back.

Any text can appear in these files, and also in the Greeting
and Farewell dialogs.  You do not need to prepend each line
with any special text, as in some other ftp server
implementations - the server handles this for you.

Security Menu

This implements a rather limited subset of the security
available on more powerful ftp daemons.  Currently only two
items are enabled - the third, greyed, item is reserved for
the next version of WFTPD, and will allow you to specify
which users can write from, read to, or list, which
directories.

The first item, "User/Password", brings up the "User
Security Settings" dialog.  It is on this dialog that users
are defined.  To define a new user, simply enter the user's
login name in the "User name" box; next, if you wish to, you
may define a password and home directory for this user.
When entering a password, the password must be typed exactly
the same in both the Password and Verify boxes.  Since you
cannot see what you are typing, the "Add/Alter" button is
greyed out whenever the text in the two boxes does not
exactly match.  The user's entry is only added to the INI
file on pressing the Add/Alter button while that user's name
is in the User Name box.  On pressing the Add/Alter button,
the following settings are stored: User Name, Password, Home
Directory, and the "Restrict To Home" option's value.

The "Restrict To Home" checkbox will, if checked, require
that this user only be allowed access to his home directory
and below.  All users will be placed in their Home Directory
when they first log in.

The "Enable Security" check box, when checked, requires that
each connection enters a valid user name and password, which
must match those on file in the INI file.  If unchecked, a
connection may enter any user name and password, and will be
granted access to all your connected drives.

The "Allow Anonymous" check box enables, or disables the
"anonymous" user.  This user name is synonymous with the
"ftp" user name, for ease of typing, and is provided so that
unprivileged access can be granted to your system.  Any
connection may log in to the anonymous user, and may enter
any text as the password.  WFTPD will suggest to each
connection that they supply an email address as their
password, and this value is logged if the "Anonymous" loggin
option is enabled.  This provides a limited method of
determining who has been logging into your system.

The "Enable Security" and "Allow Anonymous" check boxes will
have their status saved when the "Close" button is clicked
to close up the dialog.

The last button, "Delete" will remove the currently selected
user name entry from your INI file.

The second item in the Security main menu is "Host/Net".
This is a new feature to 1.9, and may be a trifle flakey as
of yet.  The idea is to either allow you to deny access to
particular sites which cause you problems, or to allow only
particular sites to connect, and to deny all other sites
from connecting.

The default setting is indicated in the "Default Action"
box.  To specifically allow or deny a particular host or
network, you may enter an IP address mask in the "Host
Address" box.  This mask is a set of four values, separated
by dots.  These values are either decimal numbers in the
range 0-254, or asterisks.  An asterisk in any particular
part will allow the address to match all values in that
position.  For instance, if you wanted to flag all local
connections through the "loopback" interface, you might
enter "127.*.*.*" here.

When a connection is received, the default action is noted,
and then the address of the incoming site is matched against
those host address masks whose specific action goes against
the default action.  If a match is found, then the specific
action is performed, otherwise the default action is.

As with the User/Password screen, the setting for any "Host
address" is only saved on clicking the Add/Alter button,
which only becomes solid on entering a valid host mask.  The
Delete button removes the entry for the host address
displayed.  As might be expected, the Default Action is
saved on closing the dialog box.

Help Menu

The Index option pulls up the help file for WFTPD (if it can
be found), and points to the contents page.  This may be
worth exploring for hints on how the software may be used.

The Using Help option gives you some Windows Help about
using Windows Help.

The About option displays a short copyright message, and may
be used to find out whether you are running a registered, or
unregistered, version, which version you are running, and
what date it was built on.  An additional button is
displayed at the bottom of the About Dialog, which in the
unregistered version asks "How Do I Register?", and in the
registered version asks "How Do I Contact The Author?".  On
pressing this button, the help file is again searched for,
and the page on contacting the author, or registering the
software, is displayed.

Registering the Software

What will registering the software get you?  A brand
spanking new registered copy of the executable and all
documentation (just in case you lost your documentation, or
it was updated recently).  Also, the registered version has
the following limits removed - a maximum of five file
transfers per login session - no editing of the Greeting and
Farewell messages allowed.

It will greatly aid in my records if all registrations are
accompanied by the enclosed order form, which is in
ORDER.DOC in WinWord 2.0 format, or in ORDER.TXT in simple
ASCII text.  The registration fee is $15, and I accept only
cheques and cash.  Be very careful if sending cash - the
Postal Service has a reputation for pilfering, which does
not seem to be totally undeserved considering the occasional
empty envelope I receive.  Cheques are far safer, and should
be made out to "Alun Jones".  There is no "WFTPD Software
Inc", or any such name (although one day, who knows?).

If an internet-reachable e-mail address is included with
your order, you will be added to a mailing list of all
registered users of WFTPD, which will allow me to notify you
of any future upgrades, or troubleshooting techniques and
tips.  If you provide me with an internet e-mail address or
an internet ftp site on which to deposit the registered copy
(so long as it is not a public archive site!), you will be
sent free upgrades whenever they are available.

Source code to the program is not distributed with the
registered or unregistered version of this software - it
cost me a lot of time to develop this program, and so it
costs mucho dinero to get the source code out of me.

Site licences are generally offered at a rate of $500 for
each block of 100 users.  If this is not suited to your
situation, make me an offer and we can haggle.  Be warned
that my haggling may consist of repeatedly droning "$500 for
each block of 100 users".  But be hopeful that I may decide
your offer is good.

I would prefer if all payments are made in US Dollars.
These are easy for me to cash, and are often reasonably easy
for foreigners to lay their hands on.  In a pinch, I will
accept European currency cheques, so long as the amount
includes a certain increase to allow for the money-changers
to have their rake.  For instance, I have been asking people
in England to send me 15 pounds sterling.

Finally

And finally, may I remind you that the address for all
communication to me is Alun Jones, 1910 Westmead 3702,
Houston TX 77077 USA.  The previously quoted address of
12919 Whittington 1104A is my old address.  All mail to
that address should be forwarded to my new address, but it
is probably not wise to trust in that too much.

I would like to thank a whole bunch of people who have
helped me with this product, particularly:

Fred Whiteside, of Beame & Whiteside, without whom I would
have screwed up the User/Password security.
Bob Quinn, of FTP Software Inc, for clarifying many of the
points of the Winsock spec, and for generally being very
informative on the Winsock programming mailing lists.
All the staff of FTP Software Inc, for sending me a
developer's edition of PC/TCP version 2.3, which I have
regrettably not yet had the time to install.
Peter Tattam, of Trumpet Software International, for
developing perhaps the definitive shareware winsock
implementation.
All the developers of winsock stacks, without whom my
program would be useless.
All the writers of the winsock v1.1 specification, for
providing a most useful and simple environment for
programming TCP/IP network applications.
Anyone who has ever given me encouragement and constructive
criticism concerning WFTPD, in particular those who wrapped
their comments in cheques.
My mother, my father and the entire academy of motion
picture arts (sorry, couldn't resist that - this was written
on the night after the Oscars)
_______________________________
1The term "Daemon" refers to an invisible servants - unlike
"demons", a daemon is neither intrinsically good nor evil,
it does only what it is told.
