How to become a beta tester

It's very easy, really - simply register the program (oh, yes, that's important), and report any bugs that occur in your normal use of the program.  I choose my beta testers from those whose bug reports have shown more use to me than any others.  If I'm worried about a particular area that seems to be within your area of expertise, you might become a beta tester for a while.

Previous beta testers report that inclusion in the beta test program has led to them becoming internationally famous, and dating super-models.

I think some of the current crop of beta testers may be running out of steam a little, so I'm looking for more beta testers.  If you've been a registered user for some time now, have a good amount of technical experience (i.e. you're not going to think the CD-ROM tray is a drinks holder), and have some time to waste spare in trying out several different versions of WFTPD - especially if your site gets fairly frequent use, then please email me at "alun@texis.com" and ask to become a beta tester.  I'm particularly looking for people outside of the US time zones, who can test versions that I put together late at night, and give me a decent report early in the morning


How to Win Any Argument About A.I.

If people argue that machines will never be cleverer than humans, simply ask them if their VCR still flashes "12:00".


WFTPD Contents
WFTPD Contents  (Version 2.34 3/10/1997)

WFTPD - The Windows FTP Daemon

How Do I Register?

What's New in this version?

Quick Setup - how to start quickly
Common Questions - what people keep asking me - your answer may be here.

How To:
Fix what broke in the quick setup
Work with Log files and screen logging
Secure your system
Play the Flute
Win Most Arguments About Artificial Intelligence
Become one of my beta testers for future versions

Menus:
Use the File Menu to deal with log files.
Use the Edit Menu for nothing much, yet!
Use the View Menu to turn off or on the status bar, which displays useful status information.
Use the Logging Menu to control what information is saved to the log, or on screen
Use the Messages Menu to give messages to users on connection, logout and change of directories.
Use the Security Menu to limit the number of users, who can log in, and where they may log in from.

Command Line Options:
Run invisibly with the 'h' option, minimised with the 'm' option, or select which address and/or port to listen at.

Miscellaneous:
Upload Announcement
Changes made in version 2.2x
Changes made in version 2.1x
Changes made in version 2.0x
Changes made in version 1.96
Changes made in version 1.95
Changes made in version 1.9 (and minor version changes)
Look for these features soon...
Acknowledgements
About The Author
Interesting Email
What are all the INI settings?


Quick Setup

The important part of a quick setup is to note what WFTPD has as its defaults:

No Log File
No logging to screen or disk
A blank Greeting and Farewell message (the unregistered version informs users in these messages that you have not registered)
No display of the MESSAGE.FTP file on a CD command
Login/out sounds disabled
User/password security enabled - but no users defined (i.e. no-one can log in yet)
Anonymous user disabled, and restricted to the C:\ directory and beneath, should you re-enable this user.
Users may upload, unless they are anonymous.
All users have full rights to all areas of all disk drives.
Host/Net security allows all hosts/networks to access WFTPD
No limit on the maximum number of simultaneous users.
No time-out of idle connections

This means that what you will need to do on first starting up WFTPD is either to enable the Anonymous user, or add users and passwords, or a combination of both.  Or, if you don't need password protection, simply disable user/password security and allow anyone full access to your entire system.

We strongly recommend enabling the time-out, since this may save you from hangs on your server (and it also prevents people from hogging your server).  Also, timing out on held-open sockets may be instrumental in protecting your site from being involved in IP 'spoofing' attacks on other systems that trust yours.  A time-out of five minutes (300 seconds) is fairly common, although I set mine to 600 seconds, or ten minutes, to allow for people with slow links.


The Log File

The Log File is a simple text file with the following format:
[X nnnn] mm/dd/yy hh:mm:ss <Message text>
X is a single character, one of:

L - login
C - command
G - get (RETR)
P - put (STOR/STOU)
A - anonymous login
? - debug information
! - warning / helpful information

# - information only sent to the display.

nnnn is a four digit number for the connection number that this message applies to - connections are numbered from 0001 from the time the program is first started.  When the program is exited and restarted, the count restarts where it left off last time.  After 9999 connections, the counter loops back around to the start again.

mm/dd/yy is the date, and hh:mm:ss is the time of the message being written to the log file.  Dates are currently written in American format.

This same information is written to the screen.

You can select the types of messages that will be listed through the Logging menu options.


Greeting And Farewell Messages

These messages are currently a maximum of 20 lines long, and are entered through a very simple multi-line edit control.  Any text can be entered here, although it would be advisable to limit yourself to only those characters that are most prevalent amongst the internet community - i.e. 7-bit ASCII.

The Greeting message is displayed to each new connection before they get the prompt for the user name, and the Farewell message is displayed after the FTP daemon receives a QUIT command from the client.  In addition, I add one line to each of these messages as a kind of 'promotion', to remind users who wrote the marvelous server that they are connected to.  Note that these extra lines are used by many FTP clients as an easy way of determining what variety of FTP server they are connected to, so it would not make sense to try to remove or change them.

In addition to specifying a message that gets sent to the user, you may also specify a sound that gets played on your computer.  Checking the "Play Sound" box will enable that sound to be played when a user logs in/out.  The button to the right of "Play Sound" lists the path of the current sound - blank, if you're set to use the default sound.  When you press this button, you are given a File Open dialog, where you can choose any WAV file on your system.  The "Default Sound" button will revert the sound back to the original one stored in the WFTPD executable.  The "Test Sound" button allows you to hear the sound that is currently chosen.

The default messages are blank in the registered version.  In the unregistered version, you cannot edit these messages, and they bear messages enticing your users to tease you about being unable to scrounge up $20 for a registration fee.  If you feel these messages are a problem, please read this.


The MESSAGE.FTP File

When this option is ticked in the Messages menu, any time a user changes directory (including when they first log in), the new directory is checked for a file called MESSAGE.FTP. If this file exists, it is printed as part of the success message informing the user of his change of directory.

This file may be as long as you can type, but bear in mind that many people have twenty or so lines of screen and no scrollback - if it can't fit on one screenful, you stand the chance that it will not be read in its entirety.

This feature was inspired by wuarchive's facility to display a ".message" file on certain commands.

You may want to make the MESSAGE.FTP file hidden (use the DOS command "ATTRIB +H MESSAGE.FTP", or select MESSAGE.FTP in the File Manager, then choose the "Properties" option under the "File" menu, and check the "Hidden" box), so that users do not try to delete it, or change its contents - this is especially important since rights are implemented on a directory - by - directory basis, rather than down to the individual file.  You can also make it read-only ("ATTRIB +R MESSAGE.FTP", or check the "Read Only" box under the Properties dialog in File Mangler), so that people are not tempted to overwrite it if they suspect that it is there.


The User/Password Security Dialog
The Users / Rights Security Dialog

This dialog allows you to grant different users access to different parts of your disk(s).

Done

The Done button simply exits the dialog - entries are written to the configuration file as you enter them - this explains why there is no "Cancel".  This allows you to quickly change someone's rights if you happen to notice them visiting a directory you'd rather they weren't able to.

User Name, New User, Delete

The "User Name" field is a simple drop-down list, and shows you the users currently defined - to add a new user, you must click the "New User..." button.  To delete a user, select their name in the "User Name" field, and click the "Delete" button.  The "New User" and "Delete" buttons are in the box labeled "User..." - when a user name is selected, e.g. Fred, the box will be labeled "User Fred".  Users "anonymous" and "default" are defined - anonymous may be easily disabled from the General Security dialog, and the default user is simply a place holder for directory rights.  While creating a new user, the dialog box for changing passwords will be displayed - a password must be created for any new user.

Also in the "User..." box:

Change Pass...

You may change any user's password by clicking the "Change Pass..." button when the user's name has been selected - this pulls up a new dialog with two entries - "Password" and "Verify".  The Password/Verify boxes will always display '*' for each character entered. This is a standard protection scheme to ensure that people in the next town with high-powered binoculars can't log in to your prized system.  You will not be able to press "OK" until the Password and Verify fields are the same (this avoids typing mistakes, since you can't see what you type).  A user may have a blank password, but it is not advisable.

The passwords are stored in encrypted fashion on the WFTPD.INI file.  If you wish to retain your password from a UNIX system, you may copy the password entry from the /etc/passwd file into the WFTPD.INI file - e.g. if my /etc/passwd entry is:
alun:hajibabaomars:194:958:Alun Jones:/home/home/on/the/range:/bin/bash
I would put an entry in the [passwd] section of the WFTPD.INI file a line that reads:
alun=hajibabaomars

Because the encryption used is the UNIX standard, only the first eight characters of the password are accepted and encrypted.

Home Directory

The "Home Directory" is the directory that the user first sees when he logs in.  Because of several tech-support emails, this version of WFTPD requires that you enter a valid directory name in this box.  It is also advisable when creating a new user account to try and access the system as that user - this way, you will avoid having to debug the connection over the telephone.  Most ftp clients will be able to connect to the special site name "localhost" for test purposes.  The "Browse" button will pull up a directory selection box for the home directory.

Restrict To Home

If you select the option "Restrict to Home", the user will not be able to change directory to any directory that does not contain the home directory as an initial substring, effectively limiting his access to his home directory and below.  Starting with version 2.1, the user will be shown prompts that indicate that his home directory is the top of the tree - this is a feature commonly seen on UNIX ftp servers, and will also make it easier to use WFTPD with Web servers.

Outside of the "User..." box:

Help

The "Help" button will display this help page to help you use this dialog. Pressing F1 while this dialog is uppermost will also open this help screen.

Rights>>

When you click on the "Rights >>" button, it will unfold the section of this dialog to deal with user / directory rights - each user may have different rights in each directory.

The "Rights for user ..." box:

When a user's name has been chosen, the box will bear the user's name, e.g. "Rights for user Fred"

Directory

The "Directory" entry is for you to specify a particular directory where this user has particular rights.  Remember that you are also implicitly defining access rights for each child directory that this directory has, since rights are inherited.  Naturally, you may override this behaviour by defining specific rights for that child directory.  The special directory "*" allows you to specify rights for the currently selected user on all directories on all drives.  You may also enter a full directory path (including drive letter).  The "Browse" button will pull up a directory selection box for the home directory.  When a directory has been entered in this box, the check boxes underneath will show what rights are defined or inherited for this directory and user combination.

To change the rights on a directory that already has specific rights defined for it, you may choose that directory by pressing the down-arrow button, to drop down the list of previously selected directories, or you may type the directory in full

Remove

Once a directory's specific rights are no longer necessary (e.g. the directory has been deleted, or a parent directory has the rights that this user needs for this directory), you may press the "Remove" button - this does not delete the directory or its contents - it merely removes its entry from the list of directories with specific access requirements.

Read, Overwrite, Create, List - access rights

To set access rights, check or uncheck the options for "Read", "Overwrite", "Create" and "List Directories" - if a box is checked, then this user may perform that action in the specified directory.  Read allows the user to read a file in that directory - in other words, to get the file.  Overwrite allows the user to do any action which alters a file already on the disk - such as deleting, renaming, overwriting, or appending.  Create allows a user only to add files to the system, i.e. putting a new file, or making a directory.  List Directories allows the user to display directory listings in this directory, and subdirectories.  If a user is not given any rights to a directory, that user will not even be allowed into that directory (or subdirectories).

Clicking on the "Rights <<" button again will fold the dialog back up.  Remember that any rights granted (or refused) to a user on a particular directory will apply on any subdirectory, unless otherwise specified.

A note on how access is granted:

When an access request for a file is received, the directory in which the file resides is checked for rights entries in the WFTPD.INI file.  If this directory is not associated with this user in the INI file, the parent directory is checked, repeatedly, until we reach the root directory of the current disk.  If there is no entry for this user with the root directory, we check to see if this user has a default ("*") entry.  If so, we use that, otherwise we repeat this whole process for the default user.  If the default user has no default directory entry, we allow all accesses that are not specifically guarded against.  (This is to allow a usable system without having to specify any initial parameters)


Host/Net Security

This dialog allows you to deny or allow access to your site based on the internet address of the host trying to connect.  There is a pair of radio buttons indicating what the default action is - whether you want to generally deny all incoming connections, or whether you wish to allow all connections by default.

Specific Action

Underneath these buttons is a box labeled "Specific action", which contains a list box labeled "Host address".  Any hosts listed in this box (and you can type extra hosts in) may be changed from the default action.  Please note that to add or change a host's entry, you MUST click on the Add/Update button.  To remove an entry, simply select it in the list, and click on the Delete button.  Note also that the Add/Update button is the only way to change the default action.

The Host Address must be a numerical IP address - four numbers from 0 to 255 separated from one another by dots (the "." character).  To specify several hosts in a range, remember that a "*" represents the range 0-255.

Once any address or address range has been set to 'deny', no connections from that site can be made.  Once an address or range has been set to 'allow', all connections from that site can proceed.  If a connecting site qualifies under both 'deny' and 'allow', it will take the opposite action from the default.  This sounds bizarre, but it makes a certain amount of logical sense.  If you think it's wrong, try and come up with a situation where you might want a different action performed - I couldn't.

The Close button will exit this dialog box - it will not in itself save any alterations that you have made to the host tables - this is done only through the Add/Update and Delete buttons.


The Security Menu

This menu contains four options that allow you to tailor the security of your site:

General - for miscellaneous settings
Users / Rights - to add users, edit their passwords, set home (login) directories, and to assign access based on directories.
Host/Net - to accept or deny connections based on what machine they come from


The Message Menu

This menu contains three options.  The Greeting and Farewell messages allow you to design messages that are printed when a user logs in or out, respectively.  The MESSAGE.FTP option is a checkable option, that, when enabled, allows a message to be printed out which can change for each directory the connecting user enters.

Don't forget, when entering these messages, that many people are still accessing the Internet through UNIX systems, or similar, and have a 20-line display of 80 characters or less.  It's a good idea to restrict your messages to fit on such a display.


The Log Options Dialog

The Log Options Dialog has the following check boxes:

Enable - turns logging to screen and log file (if opened) on/off.

Gets - starts/stops logging all Get (RETR) commands
Puts - starts/stops logging all Put (STOR/STOU/APPE) commands
Logins - starts/stops logging all successful user logins
Anonymous - starts/stops logging all successful anonymous logins
Commands - starts/stops logging of all ftp commands received.
Warnings - starts/stops logging of all warnings from WFTPD - it is recommended that you leave this enabled, since the warnings are usually signs of things that you may need to fix.
Winsock Calls - this option is only to be used for debugging purposes - many of the items reported are of little consequence, and despite some bizarre numbers appearing when this option is enabled, most are simply status reports.  If this is enabled, it may cause WFTPD to use more memory, to slow down, and maybe even to appear to hang.  It is not recommended unless you are trying to solve a problem in conjunction with the author, Alun Jones.

Note that if the Enable box is not checked, none of the other options can be altered.  It makes no sense to alter the log options if logging is not occurring!


The Logging Menu

This menu has the following options:

Log Options - brings up the "Log Options" dialog
Clear Screen - clears the log on screen.


The View Menu

Connected Users

This option will show a modeless dialog box listing all the users currently connected, what they last tried to do, or started doing, and the status of that last command (Usually "Success"/"Fail" or a percentage or size of transfer).  You may select one or more users and click the "Disconnect" button, to have these users immediately logged off your system.  They may feel this is rude, and we disclaim all responsibility if disconnected users start stalking you, harass your children or torture your pets.  The "Close" button refers only to closing the dialog, not the user.  If things happen a little too fast on this dialog for you to keep up with, you can un-check the "Auto-refresh" box, and only hit the Refresh button whenever you want to view the current situation.  This can be useful when you have a large number of users, and want to disconnect one of them down near the bottom.

Status bar.

The status bar displays first a text string describing the currently selected menu item, or "Ready", if none is selected.  After this, the bar displays a count of the current number of sockets in use, and then the current number of connected users.  This allows you to make an easy decision as to whether to close the ftp daemon - if the number of users is zero, then it's safe to close WFTPD.  It is especially worthwhile closing and restarting WFTPD if the number of users is zero, and the number of sockets is any number other than one.  The number of sockets in use is a function of the following:

•	Number of users - each user requires one socket

•	Number of transfers in progress - each transfer or directory listing requires one additional socket.

•	The socket that listens for new users - one socket.

Hence, if less than one socket is displayed, the ftp daemon just isn't listening any more!

Note that this same information is displayed as a "ToolTip" when WFTPD is minimised into the System Tray in Windows 95 or NT 4.0, and the mouse is held over the WFTPD icon.


The Edit Menu

In some later version of the software, this will allow you to copy sections of the screen log into the clipboard, for pasting into other programs.  Currently, there is no method to copy and paste from the log screen.


The File Menu

This contains commands to open or close the current Log File, and the exit command.

Previous versions also contained the option to enable/disable the Greedy Option, but this feature has been removed due to its obsolescence.


How To Play The Flute

Well, basically, Jackie, you blow in one end, and move your hands up and down it.

Next week we'll be teaching you how to rid the world of all known diseases and how to make black and white people live in harmony.

I have received the occasional comment about this section - it's a light relief piece, and is a quote from an old Monty Python sketch - not that there are that many new ones.


How To Secure the system

In this version, user rights have been added - to assign individual users with different rights, you will need to use the Rights Security Dialog.

It is thus possible to allow (or restrict) a user to only download, or only upload, from specific directories.

WFTPD can also be made into a download-only server by options in the General Security dialog

Full Security is probably best achieved by assigning rights, but still providing each user with a separate directory, and restricting them to that directory and below.  All this can be achieved through the Users / Rights Security dialog.

If users persist in being naughty, you can deny them access to your machine through use of the Host/Net Security dialog.

And to see users in the act of being naughty, try the "View|Connected Users" dialog.


How To Work With Log Files And Screen Logging
How To Work with Log Files and Screen Logging.

When you first fire up WFTPD, no log file will be defined, and all logging will be disabled.  You will probably want to use a Log File, so that you can find out what happened during your unattended hours, and so that you can have a record of what is going on in your system.

To create a log file, simply open it from the File Menu's Open Log option.  From now until you close the file, all log messages will be stored into this file.  If you close the software, it will re-open this file when it is restarted.

Logging to the screen is automatically enabled whenever logging is on. This is selected from the Logging Menu.  Through this menu, you can also select what actions are logged, and you can also clear the log on screen.  There is no way to log to file, but not to screen, short of running the program hidden.


How To Fix What Broke in the Quick Setup

I'm not sure what you mean - nothing broke in the quick setup. :-)

Maybe you should email me at "alun@texis.com", and we'll find out what went wrong.


New and Innovative Uses for WFTPD

The following uses have been reported to me:

As a standard FTP daemon - this is obvious.

For remote system administration - simply install it with the 'h' option, and run it on all of your systems - this allows you to update software, and retrieve configuration files for local editing, allowing you to remotely administer windows machines anywhere on your network.

As a poor man's WWW server - place your HTML files in a directory that the 'anonymous' user can get to, using the extension ".htm", and point people to the URL "file://yoursite.domain/yourdirectory/yourfile.htm" - this was new to version 1.95, and works better in version 1.96 and above.  This current version works even more like a regular UNIX FTP server, in that you can ask for "file://yoursite.domain/yourfile.htm" and it will fetch the file from the anonymous user's login directory.

To upload web pages to a machine running a web server.

I used to have a feature where you could print by putting a file to LPT1, but because it was a potentially dangerous use, I have disabled this permanently.  If you wish to print to a system through winsock and TCP/IP, please use one of the many good lpr daemons that are around.


Upload Announcement
Upload Announcement for WFTPD 2.3x

WFTPD23x.ZIP    Windows FTP server 2.3x for Winsock 1.1 / 2.0

32WFD23x.ZIP    Windows FTP server 2.3x for Winsock 1.1 / 2.0

Uploaded by the author.

Do you want to turn your Windows 3.1, Windows 95 or Windows NT machine into an FTP site?  Take a tip from the book "Setting Up An Internet Site For Dummies":

"Several good shareware FTP server programs are available for Microsoft Windows.  The one to trust is WFTPD by [Texas Imperial Software]"

Try WFTPD, by Texas Imperial Software (that's us).  A trial version (with only minor restrictions) is available from http://www.abol.com/texas/index.html .  The full version costs only $20 per licence, with big discounts for large volumes.

WFTPD is the only FTP server to be picked by PC Computing magazine as one of their "Internet All-Stars Best 1001 Free Downloads From The Web", and is in use at nearly 3000 sites (as of September 1996), with tens, perhaps hundreds, of thousands of individual users. (see the July 1996 issue of PC Computing, or visit http://www.pccomputing.com for details)

WFTPD is also consistently the highest rated FTP server, with (for example) 5 stars in the ZDNet Software library (http://www.zdnet.com), 5 cows at The Ultimate Collection Of Winsock Software (http://www.tucows.com) and 3.5 stars at the Stroud Consummate Winsock Apps site (http://www.cwsapps.com).

Some of the new features in WFTPD:

o support for the most popular Unix 'ls' command-line switches - useful (even vital) if you want your site to be mirrored using standard software

o wildcard expansion inside path components - good news for you Xerox Docutech users!

o additional Win95 and NT 4.0 user-interface features

o activity monitor, allowing immediate disconnect of unruly users

o safety shutdown - waits till users have finished before closing WFTPD down

o sound alert, to inform you of users logging in or out

o may be installed as a service under Windows NT, and will not be automatically killed when you log out

These features have been in WFTPD for many versions now, and were mostly introduced to the Windows FTP server market by WFTPD (space prevents me from listing all features available):

Compatibility features:

o strict compliance with Internet RFCs 959 and 1123.

o extra FTP commands SIZE and MDTM supported

o multi-homed site support

o resume interrupted transfers

o support for non-standard ports

o works through most firewalls

Usability features:

o easy-to-read help file ("The first help file I read all the way through", as one user told me)

o intuitive yet powerful user interface, following Microsoft's Interface Guidelines

o configurable logging of all client actions, to screen and/or file

o customisable messages on login, logout, and change of directory

o all FTP responses can be customised/translated using resource editors

Security features:

o host/network-based acceptance/denial of login

o idle/hung connection timeout

o maximum user count

o "read-only" operating mode

o individual user rights on directories

o hidden operation - can be run invisibly

o author won't mention your company's name in adverts without asking your permission (a job security feature for you)

As the first standalone FTP server for Windows (and now for Windows 95 and NT), WFTPD has a long history of speed and stability.  As a fast, stable FTP server, it is in place at major national and international Internet Service Providers, phone service companies, software and hardware manufacturers, tool shops, space agencies, Universities and even Realtors' offices.  The author's writing style was so admired by even his major competitors that some of them have felt compelled to cut and paste from the WFTPD documentation into theirs.

Despite the author working only part time for much of this product's development, most of WFTPD's features were first offered to Windows users by WFTPD, and many are even now not offered by other FTP servers for Windows.  The author now works full time on developing and supporting WFTPD, another advantage that is not present on many other Windows FTP servers.

Upgrade announcements will be sent out to all registered users of current versions of WFTPD, at which point they may download and install the new version for free.  The price of the licence for WFTPD includes the first year's maintenance and upgrades.  If you are a registered user and have not received your upgrade announcement a week after this message is first sent out, please email me at alun@texis.com.

Texas Imperial Software recently acquired its newest member, Colin Lester Jones (born 5/17-18/96) - buy WFTPD and help pay for baby to get some new shoes!


Changes Introduced in Version 1.9

(Minor version changes are at the bottom of this page)

The following features have been moved in this version:

o File|Security dialog is now under Security|User/Password
o Logging|Logfile dialog is now under File|Open Log
o File|Greeting dialog is now under Messages|Greeting

New items on the menu include:

o File|Close log - stops logging transactions to file, but carries on logging to screen.
o The Messages menu now contains Greeting (formerly under File), Farewell (for the logout message) and MESSAGE.FTP - when this toggle is turned on, any CWD operation will look for the file MESSAGE.FTP in the new directory, and if it exists, will display it to the user.
o The Security menu now contains User/Password (formerly File|Security), Host/Net (for restricting which hosts may log in to your server), and Rights (for assigning each user a different set of rights in each directory. Rights will be activated when I write the code to do it, probably in version 2.0.
o On-screen logging is now supported - this has been the most requested feature since the FTP daemon was first released!  Since my internet connection is often flaky, I figured I'd cut down on my incoming mail and actually put the feature in!
o RMD will not accept a parameter with ':', '\' or '/' in it - this way you have to CWD to a directory's parent in order to delete it.  This may seem cumbersome, but is a valuable security feature.  MKD has a similar restriction.
o CDUP and XCUP are supported, as is STOU, SYST, REIN.
o The title bar will display the log file when it is opened from the .INI file.
o If the backlog of stuff to send is bigger than the socket buffer, it's now expanded continually, and eventually when the information gets sent the buffer will reduce.  It'll do this in steps of 4K.
o I am still finding it difficult to open a file sharable by other processes, so the log file is still locked.

Minor version changes

1.9a - fixed a bug in the asynchronous message handling for trumpet users.
1.9b - fixed a really bad security bug that allowed unprotected access.
1.9c - fixed a tiny bug in the directory listing, that made it list times wrongly.  Also made the help file prettier!


Acknowledgements

I would like to acknowledge the following people for their help in producing this product. They are listed in more or less random order.

o The developers of the Winsock specification.
o The developers of QVTNet for producing an FTP server that was so awkward to configure, and which had so many bugs in, that I was prompted to write this program.  Also, for not fixing many of these problems, so many users seek out my program to replace QVT/Net.
o Peter Tattam, for producing a damn good Winsock implementation.
o Fred Whiteside (of Beame & Whiteside) for helping me find a version of the crypt function.  And Carl Beame for being friendly and helpful.
o Those first few registrations that made all the difference, and kept me going
o Chip Sparling, Bob Quinn, and all at FTP Software for sending me a PC/TCP Developers Kit in such a short time.
o Bob Quinn for changing the way PC/TCP worked so that developers like myself have an easier time of it, and for producing the winsock spec clarification document, which helped me realise all the mistakes I had made.  (And some of the ones winsock stack developers have made!)  If you want to write good solid Winsock code, read Bob's book "Windows Sockets Network Programming" (and see http://www.sockets.com)!
o Steve McCarthy and everyone at SunSoft, for helping me find out how to deal with problems caused by old versions of PC-NFS. (The trick is to UPGRADE!)
o All of my 3000+ registered users, and those using my program under site licences!  Without you, I would have stopped work on this program long ago (it's far exceeded what I personally needed it to do)
o Ben Edlund and New England Comics for producing The Tick, Paul The Samurai and The Man-Eating Cow.  It's great to see them (well, the Tick at least) on Fox every Saturday!
o Count Lazlo Stroganoff, Digby Spode and Hubert Carstairs (what are they doing now?)
o Mikes Flex, Channel, Stand and Hunt, and Anna Daptor
o The beta testers - now too many to mention
o And, much importance and a significant drum roll to my wife, for putting up with the amount of time I spend on this program, and for helping me to keep the business side working.
o My previous employers, TEAM Development, for being very understanding about the fact that I had a separate income.  (You'd be surprised how many other companies view this as an insult!)

o SHARP, for their AN-200SC video converter - $500 to allow me to watch all my English videos over here.


What is FTP?

FTP is the Internet standard File Transfer Protocol.  The WFTPD program attempts to provide the most useful and most often used elements of the daemon (server) side of this protocol, as described in RFC # 959, and amended in RFC # 1123.  I believe that I'm strictly compliant with both RFCs.  In addition, I am actively participating in the FTP extensions working group mailing list, to define the next version of FTP.


What is a daemon?

A Daemon, also referred to as a server, is a program which will run in the background carrying out certain tasks while the main work of the processor carries on in the foreground.  The daemon is connected to by a client program, usually on a different computer.

The term derives from a word meaning a 'helpful servant', and unlike "demon", has no intrinsic connection to either good or evil.  The word is supposed to be pronounced "day-mon".

Doctor Who and the Damons is a completely different story.


FAQ:How Do I Register?
Look at the How To Register section in this file.  Please be sure to use the order forms provided in this section.


FAQ: Site Licences
Generally I ask for $700 for each block of 100 licences, of whatever version.  This does not include the cost of source code. If you want to buy source code, please send me email, or contact me at the address in the How To Register section in this file.


FAQ: What Does Registration Get Me?
Firstly, you lose the limit on the number of files that can be transferred in a single session. You can also modify the greeting and farewell messages.  If you have sent me an Internet-reachable e-mail address on your order form, you will be added to a mailing list, and kept informed of all new versions during your maintenance period.  On the more esoteric side, you get a good feeling, and you encourage me to work on new versions and fix bugs.

Things mostly paid for by WFTPD:

Last year's tax bill
My wedding and honeymoon
A new computer (so I can develop faster, and so I can make Win32 versions)

Things I hope (perhaps unrealistically) to be paid for by WFTPD:

Some of the expenses naturally incurred by having a baby (Colin Lester Jones, born May 17, 1996)

A living wage, since I have been working full time on WFTPD since August 1996.


FAQ: How To Get New WFTPD
Registered users with current maintenance are informed of updates and bug fixes whenever they are made, and these new versions can be downloaded free - there is a charge of $5 imposed for delivery through regular mail.  Users registered before July 1996 will have their "first" year's maintenance start at the end of July 1996; users registered after that date will have a free year from the end of the month in which we ship the software to them.

You should be able to find news about the current version of WFTPD, along with links to download it, from the new Texas Imperial Software web site at http://www.abol.com/texas/index.html

The unregistered shareware version should always be available from the SimTel archives - currently at ftp://ftp.simtel.net/simtelnet/win3/winsock/wftpd232.zip and ftp://ftp.simtel.net/simtelnet/win95/winsock/32wfd232.zip.  I also try to put the file onto ftp.winsite.com, ftp.demon.co.uk and sunsite.unc.edu - all standard winsock sites.  Oh, and I shouldn't forget Adam Glick's useful winsock site, b61563.student.cwru.edu (you may even recognise the server when you log in!).


FAQ: I'm Missing PCTCPAPI.DLL
You've fetched down the winsock.dll file from ftp.ftp.com, which only works alongside the full TCP/IP package produced by FTP Software, called PC/TCP.  This winsock is NOT free - either find one that is, or buy one of the commercial stacks that support winsock programs.  Heaven knows - maybe you could even buy FTP Software's PC/TCP!


FAQ: Only One Connection Allowed
You are using an old version of PC-NFS.  I believe that this is a problem with version 5.0, but it certainly is a problem with previous versions.  Please contact your dealer, and get the new version, or whatever patches might exist.


FAQ: I Can't GET Files
If you are using FTP Software's PC/TCP, this is something they are working on (as of 5/24/94), but they are extremely close to getting a good working version, so I hear.  You might want to check the ftp site ftp.ftp.com to see if a new version of winsock.dll is there that fixes your problem.  Note that this winsock.dll will only work with FTP Software's PC/TCP stack.

A similar bug is apparently inherent in the winsock supplied with Spry's Internet In A Box package.  I hear rumours that they have a patch that fixes the problem, but I've not yet received a reply from their technical support email address.


FAQ: Is My Winsock Stack Bad?
Not necessarily - it's entirely possible, since the winsock specification is at times a little vague, it's likely that there may be some parts of the spec that I read in a different way from the people who developed your winsock stack.  Winsock developers are working hard to make their stacks work with the most frequent of the disagreements, and I am also ready to change my program to work wherever it turns out I have a misconception.

If you think there may be a problem with your winsock stack, please email me, or technical support for the manufacturers of your stack.  Please note that I will not allow bug reports to degenerate into each side blaming the other - if your winsock stack providers will not work with my software, I will attempt to work with them, and produce incontrovertible evidence one way or another.  In an argument with a winsock stack provider, if we both blame each other, one of us loses a customer.  I'd like for us both to keep the customer, and to get more through word-of-mouth advertising (which is cheap and efficient)


FAQ: My Winsock is Version 1.0
This is a common misconception - my program is designed to work with any winsock stack that implements version 1.1 or 2.0 of the winsock specification (it has a slight alteration to work more efficiently with version 2.0).  Most winsock stacks on the market implement version 1.1 of the spec, but to differentiate between different versions of their own stack, they give different version numbers to each copy of the stack.  Hence, PC-NFS may be at version 5.1, while PC/TCP might be at version 2.31, and Trumpet Winsock may have version 2.0 rev. B.  All of these stacks implement an interface that is compatible with version 1.1 of the winsock specification.  Note that this information may be out of date by the time you read it - winsock stacks are constantly being updated.


FAQ: How Do I Get Source Code?
Not unless you are willing to spend some money - I've made sales of the source code to a couple of companies, and it's a little unfair on these people if I offer the code free to anyone else, or if I sell it for significantly less.  Feel free to contact me if you wish to discuss buying the source code.  Bear in mind that the cost of the source code represents partly the amount of time put into developing it, and partly the possible loss of income from you selling derivative copies.


FAQ: Why The Rude Message?
Two small points here - first, the unregistered version is generally designed for testing, before you register.  I'd feel very embarrassed if I was using an unregistered version of shareware to deal with customers, especially the influential ones - what kind of impression does it give to your customers when they find you are using them as a test case?  The second point is that you probably spent enough time complaining to me that you've already cost yourself (or your company) at least $20.

As another interesting point, I've had many people tell me that they registered specifically because they found the message amusing.

The message stays!


FAQ: What's In The Next Version?
I'm not really sure what's going to be the big thing in the next version - it all depends on how much time I am able to devote to it.  Also, Look Here!


FAQ: When Is The Next Version?
Well, this is a tough one.  I've generally put out one release every six months, often coinciding with a change of address.  However, we should be staying at our Cedar Park address for some time now, and I will be spending my time divided between looking after Colin, my new son, and developing and supporting WFTPD.  Keep an eye out for news at my web site, at http://www.abol.com/texas/index.html.


FAQ: Address Change
My current (and final) mail address is alun@texis.com.

I know this is all confusing, but now that I have my own domain, this shouldn't ever happen again.  Mail sent to my old addresses should be forwarded to my current address - the only exception to this is WST, who seem to resent me for some reason.  Probably because they owe me several thousand dollars and seem disinclined to pay it.


FAQ: Winsock Stacks
I used to use the Trumpet winsock under Windows 3.1at home - this can be fetched from many public ftp sites.  It costs $20 to register, and seems to be pretty robust.  The canonical site is ftp.trumpet.com.au, but it is very difficult to log onto, because of its high traffic.

Most often, though, I use Windows 95 and its own support.

At one time, I used the Microsoft VxD TCP/IP stack, code-named Wolverine, which is available for free from the ftp site ftp.microsoft.com - it should be in directory /peropsys/windows/public/tcpip.  This is a fairly solid stack, and promises to be the basis of TCP/IP support in future versions of Windows.  Currently, this VxD stack works only on Windows for Workgroups 3.11.  The Windows '95 TCP/IP implementation is very good, and with the addition of a scripting package for dial-in SLIP/PPP connections, is the program I'll be using when I finally go to Windows '95.

Also available is the PC/TCP stack, from FTP Software, PC-NFS from Sun, Chameleon from NetManage, and several others.  Check in computer magazines for more details - look under network software.  If the advert doesn't explicitly say that it's winsock compliant, call the company before buying it.  WFTPD will only work on winsock compliant stacks.  Also, you could try reading the newsgroup "alt.winsock", which regularly has discussions on the various winsock implementations.  As with all newsgroups, it is helpful to just read the newsgroup quietly (known as "lurking"), since there is often a posting of answers to Frequently Asked Questions (FAQ), and some people get pretty annoyed if you ask a question that's already answered in such a document.


How do I make WFTPD work with Netscape / Mosaic / Cello?
This is much easier in version 2.1 and later of the software - as an example, the URL "ftp://your.host.com/file.htm" refers to the file "file.htm" in the anonymous user's home directory.  Anyone who had URLs pointing to earlier versions of WFTPD than 2.1 may need to rewrite their links.


Some of my users don't seem to be listed
This is usually due to a blank user entered in a previous version of the software (the current version will not accept a blank user name).  To fix this, you will need to edit your WFTPD.INI file, and in the [passwd] section, you should find an entry beginning with an '=' sign.  Remove this line - it's not connected to any user - and your problem should go away.  The current version of WFTPD will automatically remove these entries if it finds them.


Have you written any other servers?
I've written one other winsock program so far - "cooksock", which was a cookie server.  This reads in a file of "fortune cookie" type quotes, and for each connection received on port 17 (the well-known port for quotes), it sends out one of these quotes and then disconnects.

I don't think that a telnet server would be worth the effort it would require, since there are a lot of awkward decisions to be made as to how best to represent the DOS screen over a terminal line, especially when you cannot guarantee what type of terminal is at the other end.

There are other mail and web servers out there, and I'd be at quite a disadvantage trying to beat any of those.

I've been giving some consideration to writing a news server, but there's just no way it could happen with my current time constraints - maybe later this year, when I start work for myself, I shall have more time to start on this.


Frequently Asked Questions

Select the question you would like to ask, and the answer should pop up.

(Don't feel embarrassed if you have to ask any of these questions - if lots of other people hadn't already had to ask them, they wouldn't be here.  And please email me at "alun@texis.com" if you don't understand the answers, or if you have a question that doesn't seem to be represented here.  Who knows, it may be a question that I forgot to put here, or one that will be in a future list?)

Registration and contact information:

Q. How Do I Register?

Q. What Does Registration Get Me?

Q. What e-mail address can I reach you at?

Q. How do I get a new version of WFTPD?

Q. What do you offer in the way of site licences?

Q. I'm interested in learning winsock programming, or using your program commercially - can I get a copy of your source code?

Q. What winsock stacks do you know of that I might fetch?

Q. Have you written other servers?  Can you write a [telnet, news, web, mail] server?

Q. How do I find your current email address, or the current version of your program?

Q. Why haven't you processed my order yet - did you receive it?  I sent it to the address in an old copy of the help file - will it reach you?

Q. How much does it cost to upgrade from my registered 16-bit version to the 32-bit version?

Shareware concerns:

Q. Why is the evaluation version of WFTPD 'crippleware'?

Q. Why do you have such a rude message in the unregistered version?  ("My customers don't appreciate seeing this when they log in, and some of them are very influential people!")

Technical questions:

Q. When I run your program, a dialog says I am missing PCTCPAPI.DLL - why?

Q. My server only allows one connection, before I have to restart it - why?

Q. Why can I only transfer about the first 32k of all files, or not transfer anything at all?

Q. Is my winsock stack faulty, since it won't work with your software?

Q. You say you require winsock version 1.1 compliance, but my stack is version 1.0.  Where can I get the updated version?

Q. Why do I get "WSANODATA - no service record" warnings on starting WFTPD?

Q. How do I set my ftp server up for Mosaic / Netscape / Cello?

Q. I tried to pull down the list of users, but I don't get some of the users I know I've added - why?

Q. Is WFTPD multi-threaded?  Is a multi-threaded server better than one that isn't?

Q. Why does WFTPD say it can't find my user's home directory?

Q. Why does WFTPD tell me I can't run it in DOS mode?

Q. How do I change the port WFTPD listens on?

Q. Why do I get "Invalid Page Fault" messages with WFTPD?

Q. Why do I get a message "WSAEAFNOSUPPORT"?

Q. Does WFTPD work on NT 4.0? or on the latest Windows beta version?

An eye to the future:

Q. What's going to be in the next version?

Q. When are you going to ship the next version?

Q. What's going to be in the "professional" version, and how much will it cost?

Q. How do I make WFTPD run as a service under NT?

Q. How do I make WFTPD run as a service under Windows 95?


Look for these features soon...
Look for these features soon…

Please note that none of these features have yet been written or designed, and some of them may not yet make it into WFTPD.  Please tell me which features you'd like to see.  If there are other features you would like to see, please email me, and I will either add them to the wish-list, or explain why I don't think I want to implement them (sometimes people suggest things that surprise them in their consequences - one user suggested a feature that his system administrators told him would enhance the system security.  I was able to prove to him that implementing the suggestion would actually lead to a decrease in system security.  I wonder if those system administrators still work there?)

(The ordering is most definitely not indicative of preference)

Suggested Features (the "Wish-List")  If there are other features you'd like to see, email them to me at "alun@texis.com" :

o Access limited at various times to different numbers of users
o Different limit on number of Anonymous users
o User configurable limit on number of transfers per login or user.
o Tidy up on-screen log handling - perhaps allow access to the full log file?
o MESSAGE.FTP's name should perhaps be changeable, and it should not be PUTtable.
o Check back on host address->name->address mapping for security's sake.
o Verify authenticity of Zip files on upload (tricky, but who knows?)
o Host/Net restriction based on host name as well as IP address
o User count displayed on iconised description
o Socket flush - for use when you know there's no-one logged in, and you want to flush any remaining idle sockets (theoretically unnecessary, but there will always be bugs)
o Greeting/Farewell message box should use a fixed-width font, to allow better design of greeting screens.
o Code an NT service version, perhaps configurable through the control panel (coming in the near future, but look here)
o Redo the host/net security dialog to make it as easy to use as the User/Rights security
 o Use NT's user name and password information (could cause security nightmares!)
o Include time, date, etc. in greeting messages
o Use Windows 95 shortcuts properly.
o Output more statistics into the log file (time for transfers, amount transferred, etc)
o "Professional" version to allow several simultaneous servers.
o Have an option to require anonymous users to enter valid email addresses, or perhaps a user-specified format of password.
o Use a B-Tree based database file for users and rights, instead of the INI file - this will allow for many thousands of user Ids.

o Send MESSAGE.FTP only once per directory per user.
o Virtual directories - like links, but only visible through WFTPD.

Bugs (or mis-features) to (try and) fix:

None so far with version 2.34.


The Rude Greeting Message
The "Rude" Greeting Message

The message that we are talking about, in case you forget, is:

This FTP site is running a copy of WFTPD that is NOT REGISTERED

Shareware can only improve if supported by its users.

The easiest way to support shareware is to register it.

WFTPD costs only $20 to register.

To register this program, or receive new details on it, send email

to alun@texis.com (Alun Jones), or snail-mail to Texas Imperial Software,

1602 Harvest Moon Place, Cedar Park TX 78613-1419 USA

As added incentive for the site owner to register, you will be restricted

to five (5) transfers - to get more transfers, please re-login.

Please note - Alun Jones is only responsible for the software

that this site runs, and is not responsible in any way for either

the content of this site, nor its location on the Internet.

The only complaint I treat as valid is the complaint that you have not yet had time to send me the money, or that I have not yet responded to your registration.

The basic point is that WFTPD is NOT free software - it is shareware, which means you are welcome to distribute the unregistered version, and you are welcome to try the unregistered version out to see if the registered version is likely to fulfill your needs.  I would hope that you are either not likely to test unregistered shareware on any business clients, or that you keep them fully informed that they are participating in a test of unregistered shareware.  I doubt that you will find any test users that will protest at the simple message above.


What's new in this release
What's new in release 1.95

I think I've fixed the following problems:

o ABORting a transfer should work properly now.
o Leading spaces are not stripped from messages stored in the INI file
o MESSAGE.FTP is now displayed on all logins.
o "GET *.EXE" (NOT MGET) no longer produces "Internal Application Error".
o The scrollbar always shows up, even if WFTPD is started minimised.
o Memory leaks on closing WFTPD should be (mostly) fixed.
o Memory hogging is reduced, and logging is much improved, because I stopped fighting the system!

I also enabled these new options:

o Use the port address in the services file (if present), otherwise default to 21.
o PASV mode support (for Mosaic).
o Fetching files with full path names while maintaining security (for Mosaic).
o The Security options "Enable Security" and "Allow Anonymous" have moved to underneath the "Security ; General" dialog from the "Security ; User Security" dialog.
o The "Security ; General" dialog has an option to limit the number of users that can connect.  (Setting the limit to 0 makes it unlimited.  If you want to disable logins, simply close the ftp daemon!)
o All "Add/Alter" buttons now read "Update" so novice users can understand.
o I have tightened up the "PUT" functionality, so that hopefully it'll cause fewer problems.
o Directories don't show up any more in NLST results - only regular files.
o LIST and NLST results are now sorted before being output.
o LIST commands can no longer list directories you don't have access to (part one of beefier security)
o If users are added with no password, they get placed properly into the [passwd] section.

I have completely written the networking subsystem, so PUTting has sped up, and the greedy option now has no effect.  GET commands no longer tie up the machine, either!

This version seems to work well with Beta 14 and above of the Trumpet Winsock - Peter Tattam has fixed some messaging problems that were causing me trouble.


About the author

News Flash - a baby boy was born to Alun and Deborah, on May 17th, 1996.

Alun Jones is an English programmer, who married an American PC specialist in October 1994.  He's very pleased that there have been some site licences that allowed him to get married and go on honeymoon without going too deeply into debt.  The last source licence allowed him to buy a new machine, a new compiler, and a new operating system, so that he could produce both a Windows 3.1 version and an NT/Windows 95 version.

Alun appreciates all user feedback, and is smart enough to know that if he can fix a bug, it'll help him make more money because it's easier to sell a better program.  What he doesn't appreciate is people who complain about his program (especially in public forums), without first checking with him as to whether he might have already fixed the problem.  This is especially annoying when the bug referred to was fixed several months before - you have been warned!

Alun used to work for TEAM Development, an Austin-based consulting firm - if you'd like them to work on programs for you, you might want to talk to Paula Johnston at TEAM Development.  The address of TEAM Development is 3006 Bee Caves Rd., Ste. D-300, Austin, TX 78746.  The phone number is (512) 329 6630.  Please do not call this number expecting WFTPD support, help or sales - they can't help you, and I have told them they can be as rude as they feel like to anyone calling them about WFTPD.  Texas Imperial Software (and this product, WFTPD) are quite separate from TEAM Development.

Since August 1996, Alun has been working full time on WFTPD and similar quality networking programs.  This means he is able to undertake customization work, and possibly some consulting, when he isn't watching after the baby.  For consulting and customisation, call Alun at (512) 257 2578, or fax him at (512) 257 2579

What Alun really hates is Barney - the bloated purple Styrofoam dinosaur.  Kids should be encouraged to imagine, yes, but they should lead their own imagining, not have it led by some overweight Jurassic remnant with an apparent IQ lower than the average speed limit in this country.

About the author's wife

The author's wife, Debbie, is a native Texan who used to work for an unspecified Microsoft Support Partner on the Windows 95 Launch Team and has waited impatiently for Alun's 32-bit Windows 95 long file name aware, cool GUI version of this awesome software.  When the new version finally arrived, she managed to persuade several of her colleagues into using it, and has spread WFTPD's pernicious influence even unto Microsoft themselves.  Currently she is a Microsoft Certified Trainer, in Windows NT (workstation and server), and Windows 95, and is one exam away from becoming a Microsoft Certified Systems Engineer.  In addition, she is certified in Microsoft TCP/IP.

Just so that you, the savvy user knows, Alun's company is owned by his wife.  For you federal and state government organizations, this means minority owned !!!  (Get the picture ? )

Debbie really hates Information Super Highway metaphors.  If the computer people of America rise up together, we can beat this thing !!!  Please don't perpetuate these silly, ignorant sounding analogies.

Debbie would like to thank y'all for all of your registrations; they helped to pay for the Pentium she is using to type this with.  This gives Debbie half a chance at getting to use at least one of the two computers in the Jones's household.


General Security Dialog

The General Security dialog is accessible from the Security menu, and has five items of interest, besides the usual OK and Cancel buttons:

"Enable Security" - when checked, WFTPD will ensure that nobody logs in without entering a valid user name, and its associated password.  If not checked, users may log in with any name and password whatsoever, with full access to all areas of your disk.

"Allow Anonymous" - Anonymous ftp is the term for logging in to an ftp daemon as "anonymous", or "ftp", at which point you are asked to enter your email address as your password.  Hence, anyone can log in to your machine when this option is checked - they do not need to know a password, but they will be restricted by your choices in the Users / Rights Security dialog.

"Allow Uploads" - when checked, all users will be allowed to upload files to your machine.  When unchecked, WFTPD will make your site "read-only".

"Allow Anonymous Uploads" - When checked, anonymous users will be allowed to upload files (so long as "Allow Uploads" is also checked, and obviously, they can't log in if "Allow Anonymous" isn't checked.  Also, rights assigned on the Users / Rights Security dialog are taken into consideration).  When unchecked, anonymous users will only be able to download files, no matter what rights they may have been given.

"Disable non-reflexive PORTs" - added in version 2.30, this switch is disabled by default.  When checked, each PORT command received by the FTP server will be checked to see that its return address is the same as the IP address of the client that is requesting it.  If this option is disabled, WFTPD could be used by a hacker to (for instance) send mail to any SMTP server to which you have access, and which the hacker knows about.  Furthermore, that mail will appear to have come from your computer.  It is this author's opinion that good SMTP servers will not accept such a connection from an FTP server, for many reasons including the fact that WFTPD always tries to connect on PORT commands from its own local port number 20.  The server should recognise this as being an unlikely source port for an email message, and disable the connection.  Enable this switch if you really want to tighten down on security.  WFTPD will not connect to any reserved ports (i.e. those with port numbers <= 1024).

"Maximum number of users" - this is the largest number of users that may be logged into your server at any one time.  Each user requires one socket for his command and output connection, and each time they transfer a file, or do a directory listing, they will take up another socket for the duration of that transfer/listing.  By restricting the number of users that log in, you will make sure that your machine runs smoothly (it has less to do!), and that users will not face messages telling them that they cannot transfer a file because of a network error, when there are several users on at once.

Entering 0 as the maximum number of users sets the ftp server to accepting any and all incoming connections.  (If you want to set it to not allow any logins, simply close it down!)

"Time-out for inactive connections" - if a user stays logged in to your server, but does nothing, he's wasting one of your sockets, and hogging system resources.  You might want to put a value in here - often about 5 minutes (which is 300 seconds) should be sufficient for most users.  Once this period of time has gone by on any connection with no activity, the connection will be broken, and the user informed that he has been disconnected due to inactivity.  If you put a 0 here, then no-one will be disconnected for being idle for too long.  Try not to put something like 15 seconds, since that doesn't leave anyone time to type their commands in!  Try it out yourself from a command line ftp client, to check that things work.

Note that time-outs also catch connections that have died in unusual circumstances, and clears them up, too.  This can make things a little easier on your file system, and your server.


Why is WFTPD crippled?
Many people use the term 'crippleware' to refer to software that is restricted in some way in its unregistered form, and some people feel that 'crippleware' should not be encouraged.  I also feel that this should be unnecessary, but for reasons explained below, I have decided that I have to restrict the shareware version.

About five years ago, I wrote an HPGL to Postscript translator, HP2PS for short.  It apparently served its purpose rather well, and I decided to release it and ask that people simply send me some portion of the money they believed it was worth to them.  Over three or four years of answering email, fixing bugs, etc., still noone had sent me a penny.  The final straw came with Rxxxx Bxxxxx and Sxxxxx Mxxxxx of Nxxxxxxx Research Laboratories phoned me to discuss a couple of bugs and suggested features.  They offered to pay me once I had fixed the bugs and added their features, and so I set to work.  After finally fixing their bugs, and sending the new version off to them, they now don't return my phone calls.  What a surprise.

Then came WFTPD - in October 1993, I had something that I thought other people could use, so I put it out on the net, with no restrictions, and a registration fee of $20.  In the two months that followed, during which I added many features, two users registered.  I then decided to restrict the program as you see it now, and since then I have had on the order of more than one new registration every day - each site licence is counted as one registration here.

My point here is that if I had not restricted the software, I would have received so few registrations that I would have given up working on it, and there would not be a WFTPD program today.  And if Nxxxxxxx Research want to register WFTPD, they can pay in advance this time, please.


What's New in Release 1.96

Netscape & Mosaic compatibility checked - everything seems to work okay now.

RFCs 1123 and 959 are now complied with - this should mean your client can talk to me quite happily.  If not, there's a chance your client software may not have full compliance with these RFCs!

The NLST command lists directories as well as files, so all your Mac users will be happy.

Each new connection results in a log message (If you log Logins), detailing the IP address of the client connecting to WFTPD.

3D Controls are added - you'll need to have a copy of CTL3DV2.DLL in your WINDOWS\SYSTEM directory and nowhere else!

My address has changed once again - now, I live in Austin.

Two new options on the General Security dialog - "Allow Uploads" and "Allow Anonymous Uploads" - these should be self explanatory, but are explained in more detail under the topic for the General Security Dialog.

MESSAGE.FTP bug fixed - there are now no spurious blank lines, or extra numbers sent in the message.

The CWD command now accepts strings ending in slashes.  (DOS doesn't!)

The bug whereby the user count was often exceeded with no users logged in has been fixed.

The occasional hanging of the ftp daemon has been traced, and fixed.  Hopefully this can be left running for weeks without causing trouble.

A time-out facility has been added.  The server is only fully RFC 1123 compliant when the time-out value is set to a non-zero value (setting it to zero simply disables the time-out).  Please use this feature, since it means that people will not be able to clog your server, nor will crashed connections keep hanging around.

Most of the response messages have been put into the resource portion of the executable, so that you can modify them with a resource editor.  If you edit these strings, please bear in mind that sequences beginning with a '%' character are special to C, and they should not be altered or transposed.  If you do this, the program will crash.

The Logging options have been moved to their own separate dialog - now, you can enable/disable several options without having to keep opening the Logging menu.

The log file itself is now sharable while the program is running, so you can read it in other programs while WFTPD runs!

On closing WFTPD down, all transfers are interrupted properly, and all control connections are closed safely.

Entering a command "dir c:\dos" is now the same as "dir c:\dos\*.*" (assuming the directory c:\dos exists, that is!)

Above all, this version should be much more stable than 1.95, which I admit was put out in a bit of a hurry.


Why do I get "no service record" warnings?
Prior to version 1.95, I simply used port 21 in TCP to listen for incoming ftp connections.  Many people asked to be able to start the ftp server listening on alternate ports - for example, to get around some firewall restrictions.  So, I figured, if I ask winsock what port it's been told "ftp" is, then users can easily change that value (usually in the "services" file).  It now turns out that many of you do not have this file, or have not got it in the right directory.  Each winsock is different, but the Trumpet Winsock (which I get more of these reports on) requires the "services" file to be in the same directory as "winsock.dll".  It may also benefit you to know that the protocol and hosts files should be in this directory too, on Trumpet Winsock.  If this information makes no sense, please read the instructions that are supplied with your winsock stack, and if that does not help, please contact your winsock supplier, since I don't know anything more than this.


What's New in Version 2.02

2.02 adds more stability to version 2.01, fixing a number of small problems that users had noticed (mainly with Netscape, who won't answer my emails).  It also fixes a few problems that were noted while porting to 32 bits, and which were mostly to do with making sure the program could run longer without hitches.  Hopefully now, all "WSAENOTSOCK" messages in Trumpet will have disappeared (although generally, they are little to worry about), and all unused sockets will be closed, allowing the server to run for longer periods of time.  Also fixed in this release is the whole host/net security thing, which now works fully as documented.

2.02 is the first release of the 32-bit version of WFTPD.

2.01 is a security update to 2.00 - 2.00 had a bug in it that allowed users to log in without entering passwords.  2.01 does not have this flaw.  Below is a description of the 2.00 new features.

Well, quite obviously, the Rights Security dialog, along with its attendant increase in security is the new item that's in right now.

I've worked on the PUT procedures - now it only logs a PUT once, instead of three times.  There's a little more work in this area still to be done, but that may fix most problems.

Context sensitive help should now exist for all dialogs - try it with either F1, or the Help button on each dialog.  The About box should work properly now, too.

The scroll bars now work properly, and text output should be cleaner.

More work on putting - STOU now works as it should (ignore file name, and generate a random one)

Users now cannot log in if their home directory does not exist.

The status bar now displays the current count of connected users and open sockets, so that administrators may decide whether the system needs to be rebooted.


Why Shouldn't I Log Winsock Calls?

The main reason that you shouldn't enable Winsock Call logging is that it takes up an awful lot of space with messages that basically say "Status OK at some line or other", and because these messages can occur very frequently indeed, you will rapidly fill your log file with messages that make no sense to you if you don't have the source code.  Also, because it now has to spend time logging calls that were previously finished very quickly, you will slow your server down to a crawl, and also the machine that it runs on!

The only reason this option is here is to assist the author in tracking down specific problems that you are experiencing - even then, many problems can be traced without even having to try the Winsock Call logging.


Interesting Email I've received
Interesting Email I have received:

This is reserved for interesting emails I have received, obviously from people who haven't quite grasped the concept behind WFTPD - the names have been changed to protect the ... well, the names have been removed.

Alun;

    I really liked your gifs you had on line. The young ones where the best.

I'm assuming your FTP site will not be up for very long... I'd like to

some more of these. I only got a 1/2 dozen or so. Do you know where I can

get any videos of the young ones?

Sure - BBC Enterprises... :-)

And another one:

Is there a UNIX version of WFTPD?

Yes, but they're all very derivative :o)

My most common email?

How do I register WFTPD?

Look here

The most surprising?

How do I register FETCH?

(Fetch is a Mac FTP client!)


What's your current address and version of WFTPD?
How do I get up to date information on you and WFTPD?

The simplest way is to register and include an email address with your registration - then, I'll send you email announcing each release, and how to get your copy.

You can also check out our new web site at http://www.abol.com/texas/index.html

To find the newest shareware copy, you should look in the SimTel archives, whose main mirror site is ftp://ftp.simtel.net/simtelnet - this is where you'll find WFTPD.

To find my current email address (which should always be alun@texis.com), and my mailing address, simply use a 'whois' program (accessible from most UNIX shell prompts, and also available as a winsock program at SimTel), and ask it for AJ11 - that's me. (note that's the letters "AJ" followed by the number eleven)  Or, you could just ask it "whois texis.com" or "whois 'Texas Imperial Software'".


How do I make WFTPD run as an NT service?
This is from an email from one of my users:

"Anyway, I found a little utility called srvany.exe (something like that :-) that allows you to make any application a service - I tried it out with WFTPD and it works like a charm! The utility is included with Microsoft's NT Resource Kit, if you want to play around with it."

The whole process is explained in the SRVANY.WRI file in the resource kit - you'll need to expand SRVANY.EXE, SRVANY.WRI and INSTSRV.EXE.  There's also a knowledge base document, Q137890, that describes the process as well; it can be obtained from the Web at http://www.microsoft.com/kb/bussys/winnt/q137890.htm .  Make sure that you run WFTPD with the command-line switch 's', so that WFTPD doesn't immediately die when the NT user logs off.

Here's an excerpt from another email, from Sebastien Caisse, offering a more detailed explanation:

«Note that I expect that you know a bit about what you will be doing at least to a point that you know how to find a file in a certain directory, don't be offended by the simple remarks I put in, since some of them would have been helpful to have when I installed it, and others have been asked to me before.  All "" are NOT included in file name or whatever unless specified.  [] are used to specify text that may change depending on your computer.

«Step 1: Make sure you have "SRVANY.EXE" and "INSTSRV.EXE"! It took me some time to find out where it was, but I finally found it, (although to all NT veterans this is an easy answer, this is going to be helpful to those less acquainted to it) it's in the Resource Pack.  Now I didn't get at first what this Resource Pack was all about until I bought it, a 250$(can) package from Microsoft, with which they deny all responsibility, and officially shouldn't even support it (yeah, Microsoft, gotta love 'em!).  You can find the srvany once you install the Resource Kit on your server (Tip for the 3.51 users who didn't buy it yet, and don't really wanna buy it anyway: Only buy the upgrade, it comes with the CD and both the svrany and instsvr programs are on it, and only costs a 5th of the price).  Notes:  Make sure svrany and WFTPD is on your local hard disk, or it won't work! (well, actually that's what I've been told, I never actually tried it) So now you have anysvr, but don't know exactly how to use it, since all the documentation I saw were so flaky, well, here's it comes:

Step 2: Install svrany as a service:

Go into your DOS prompt, and type "instsrv [Service_Name] [SVRANY_Drive]:\[SVRANY_Dir]\srvany.exe"

Reminder: INSTSVR is found in your Resource Kit directory.  I usually call my service "WFTPD Server" :> (note that the "" are needed since there is a space!)

/* Note: I installed my service and used another account then the System, and don't remember what happened when I tried it in System account since I now have a permanent user for it, I guess I had a problem with using the System account and resolved to this solution, so I will assume that it is unsafe to use it */

Step 4: What next?

I would recommend creating a user specifically designed for this service instead of using the System account, so go create yourself a new user!  The user needs to have access to all the directorys you want WFTPD to serve, and make sure read/write rights go accordingly, and I don't suggest giving special read/write rights just for that user, or you'll be lost in user access hell, I personally just gave him a normal user access...

/* If they don't know how to build a user, then the chances are they're not an administrator -- would anyone else then an administrator be able (have access) to set up a service? I don't think so... */

Step 5: So you installed svrany as a service, but is it done?

No, you need to specify how it starts and link it to the user...

Go into your Control Panel, select Services, click on your service, then click on "Startup..."  Now select Automatic (this is why you wanted to install it as a service right?), then mark the option "This account:", fill out the correct user you want the system to use and of course, fill out the password section accordingly if need be.

Step 6: Yeah, bin there, done that...

A word of warning: you can ruin WinNT while playing in the registry editor.  If you stick to what I say, nothing bad should happen to it, but if something bad happens, nobody else then YOU is responsible for it.  In any case, I suggest making a backup of your registry, for safety purposes.  The Registry Editor is a very powerful tool!

Start your Registry Editor (It's in the directory "[YourNT_Dir]/System32" and is called "REGEDT32.EXE"  Go into the HKEY_LOCAL_MACHINE window, then into /SYSTEM/CurrentControlSet/Services/[Service_Name].

Add a Key (Edit | add Key) named "Parameters", then go into this key.  I insist, go into this key!

/* If they don't get it, I can't help it... Visibly, quite a lot a people I know created the value not in .../Parameters but in .../[Service_Name] */

Once you are in this key, add a Value (Edit | add Value) named "Application", which is a type REG_SZ, and the value is the application you want to run, in this case WFTPD so it should look like this: "[WFTPD_Drive]:\[WFTPD_Dir]\WFTPD.EXE".  Note that the value is NOT case sensitive, but I don't know about the value name/* +s if you add my suggested parameter :) */ some be keen on the value name/* +s */!

/* Add this part if you add the command line option I suggested for the log! */  If you want to add command line parameters, then add another value named "AppParameters" in the same key, also of type REG_SZ and put the parameters in the value box.

Step7: Now what?

Well, all you have to do now is start the service or reboot to check if everything is fine!»


How do I make WFTPD run as a service on Windows 95?
The following is taken from one of my users' emails:

Also, FYI, here's how to install WFTPD so that it runs at startup under Win 95 machines (if they require a network login, like mine, then simply putting them in the Startup group means that it won't be run if the machine is rebooted -- the Startup group isn't processed until after a person logs in!):

1.	Run the policy editor (poledit)

2.	Select the File|Open Registry menu item

3.	Double click on Local Computer

4.	Go to Local Computer/System/Run Services and make sure the check box next to it is enabled

5.	Click on Show

6.	Click on Add

7.	Supply a name (typically WFTPD) and a filename (e.g. d:\network\wftpd) in the spaces provided

8.	Click on OK, click on OK, click on OK (should now be back at the System Policy Editor window)

9.	Select the File|Save menu item

10.	Close the policy editor

This works pretty well; if my computer ever freezes and I'm away and need access to it, I can just have someone go into my office and hit the reset button.

If the user wants to run WFTPD in hidden mode, they can specify "d:\network\wftpd h" in the filename box.

Note, that to keep the program running while Windows 95 users log in and out (through the Shutdown menu), you must use the "s" option (And now, they can use the "m" option to run it minimised)


What's New in Version 2.1

(What's new in version 2.11 appears towards the bottom of this page)

From the wish-list:

 All users restricted to their home directory should see that as root, so as not to tempt them
 Note the current IP address and/or host name on startup
 Accept 'SIZE' command, if anyone can find me documentation for it.
 Command line option to run minimized
 Restrict passwords to eight characters in the entry dialog.

Right Write Rights, Right? - The "Write" right has been split into two rights - "Create" and "Overwrite".  "Create" allows you to make new directories and put new files.  "Overwrite" allows you to put files with the same name as existing ones, append to existing files, delete existing files, rename existing files, or remove directories.  Think of "Overwrite" as being the ability to affect existing files in any way, and "Create" as a polite upload capability.  Previous rights entries of "Write" are taken to mean "Create" and "Overwrite", and when edited, will be re-written to the INI file as such.  If you want to do this for all entries at once, simply edit the [rights.xxx] section (for each user 'xxx'), and change all the "W"s to combinations of "O" and "C", as appropriate.  'Overwrite' does not imply 'Create'.

Off The Beaten Path - Any user that is restricted to within their home directory will no longer be able to see the directory structure above their home directory, nor will they have to enter that directory structure when passing an absolute path.  This allows URLs on Web browsers to work more as people expect them to.  If you previously had references to WFTPD through URLs, you will either have to change them to match the way things currently are.  You may do this simply by removing the path to the restricted user's home directory from the URL.

Who Am I? - To help you in setting up WFTPD, and in telling your friends what address to connect to, WFTPD will now display on start up your numerical IP address.  This is the string of four numbers with dots separating them, and is the address that your users should be able to use, to guarantee connecting to you.  I don't try to print out the name of your system, since that requires Domain Name Service calls, which may take some considerable time to complete.  Besides, the numbers will provide a guaranteed route through, whereas the name may not even exist.

Time And Relative Dimensions In Space - A small bug with WFTPD's communication with WS_FTP has been fixed - when WS_FTP was not set to host type of WFTPD, it would list bad file sizes and dates.  This has been fixed in WFTPD, by printing two digits for the hours, even when the hours are less than 10.  John Junod, author of WS_FTP, has been most helpful in sorting out this, and other incompatibilities between our two programs.  This is why WS_FTP will work very nicely with WFTPD.  I recommend that your users run WS_FTP as their client of choice.

Space - The Final Frontier - I corrected the response to the seldom-used "ALLOcate" command, so that Frontier Technology's FTP client would work properly.  I guess the "be generous in what you accept" rule should be applied to Frontier Technology's client, but instead I decided to adopt the "be strict in what you send" part of the same quote :-)  ALLOcate is used in reserving space for a file about to be put, and makes little sense in our scenario.  A later version might use the parameter on this command to approve PUTs that are below the size remaining on the disk.

Just In Case - The case sensitivity of long file names in the 32-bit version of WFTPD is now preserved - previous versions forced lower case.  Case, however, is ignored when sorting file names in directory listings.  FTP-Serv U apparently alters case in file listings - I don't agree with this idea, since there is no point destroying case in a case-preserving system!  Note that, since case is only important when creating the name of a file/folder, WFTPD is not case sensitive when retrieving files - only when putting them.

Size IS Important - the MDTM and SIZE commands have been implemented, so that hopefully Netscape will be a little better behaved.  It would have been nice if I could have gotten this information from Netscape themselves, but they seem to be unable to respond to my email.  Has anyone noticed just how much NCSA Mosaic has improved since Marc Andreesen left NCSA for Netscape?  I think it merits close scrutiny :-).

More Speed, Less Haste - yes, another change to make WFTPD even faster - this time, to make directory listings come out faster - many of you have remarked that in directories with a thousand or so files, the ftp client would often time out.  This should not happen any more, since I have dramatically sped up the sorting.  This should also be a boon to those of you that weren't timing out, but were growing old while waiting for directory listings.

Service With A Smile - for those of you running WFTPD as a service in NT (using servany) or 95 (using instructions in other parts of this help file), try using the 'm' command-line option.  It runs the program minimised.  This is, of course, totally exclusive of the 'h' command-line option.  You cannot use the two together - it makes absolutely no sense at all.

Thanks for the Memories - No more temporary files when listing directories - it's all done in memory now.  This should help speed and reliability, not to mention not leaving tmp files around if the machine crashes.

Share and Share Alike - The sharing is now specifically set to allow reading, but no writing when a file is being transferred - I'd be grateful if you could test this thoroughly for me.

You can stop typing now... - Since encryption on the passwords is limited to eight characters, the entry in the dialog is limited to eight characters, also.

There's No Place Like Home - or at least, if there's no place such as your user's home directory, when you enter it into the User Security (Rights) dialog, you won't be allowed to leave.  This should reduce the load on my email.

Help, I Need Somebody! - the help file has been substantially altered to make it easier to find those items that I am most often quizzed about.  The FAQ section has been reorganised, as has the section on how to register.

-------------

What's new in version 2.11?

The fixing of these bugs made me decide to produce version 2.11, a bug-fix release:

Reading Allowed - on the 32-bit version, the structure used for storing the deny/allow flag was being read into only the bottom 16 bits of a boolean flag, meaning that, under most circumstances, any host referenced in the Host/Net section was denied access.

"This is London Calling" - due to some bad Microsoft documentation in my copy of Visual C++, the 32-bit version doesn't know what time it is - unless you work entirely in Greenwich Mean Time, or the more romantically named "UTC".  Later versions of the Visual C++ help files seem to get this point across, which is why I'm at a mystery as to why my copy of the help files are wrong!  To be fair, the current Microsoft documentation gives examples to help avoid this error.  However, it still gets the file size wrong, stating that the file size is achieved as follows:

nFileSizeHigh

Specifies the high-order DWORD value of the file size, in bytes. This value is zero unless the file size is greater than MAXDWORD. The size of the file is equal to (nFileSizeHigh * MAXDWORD) + nFileSizeLow.

Since my code didn't work this way, but worked when I used nFileSizeHigh + nFileSizeLow, I can only assume something is still up.

To err is human - I guess I count myself as human - I missed a couple of return values on file status routines, which meant that putting a file that didn't already exist on to a server would occasionally (or often, depending on what's in memory on your PC) produce the error "550 Error: xxx is a volume or a directory."  A similarly screwed up coding error meant that putting files to, or fetching files from, an absolute path would result in a bad path being generated, which then made for a file error.  Both of these bugs should have been fixed by this release, but the very intermittent nature of the first meant that I could not reliably determine whether it was fixed or not.


What's New in Version 2.2

What's new in version 2.20?

Here's the additions that prompted me to produce version 2.20:

Let's try that again - The "resume" capability offered by CuteFTP, or "reget" in ncFTP and many Unix ftp clients is now supported - if you are getting a file, and the transfer fails, or is aborted, you may continue fetching the file from the point that you stopped, rather than having to re-transfer everything that you already have.

Focus, Pinky, Focus! - when changing focus away from the home directory field to other applications, the warning dialog that appears could cause problems, including making the computer unusable.  This has now been fixed.

Just Browsing - the directory entry fields are now equipped with a "Browse" button, that will open up a directory browse dialog, to make it easier to find the directory you're looking for.

Up against the wall - Because many firewalls expect me to bind the local end of the socket to a port before opening a connection to a client on the other side of the firewall, I now do this specifically.  I am told this may break SOCKS support, but I suspect this to be more due to a bug in SOCKS - you may even find, if you use SOCKS, that everything works just fine.

Wage Slave - Due to bizarre circumstances, I am finally able to quit my current job, and work full time on development of WFTPD and other related projects.  To smooth this transition, we are making a few changes in the price structure of WFTPD - mainly, that I now don't care whether you want the 16-bit or 32-bit version, the price is the same, and the zip file that will be sent to you has both versions.  Also, I will be charging a yearly maintenance fee.  Everyone with valid, paid registrations by the end of July will receive one free year's maintenance from that date, and will be entitled to download the latest version of WFTPD, whether it be a bug-fix or just a feature update.  A new product, tentatively to be called "WFTPD Professional" is in the works, and will provide many features that Internet Service Providers, and other larger sites will find extremely useful.  This version will be priced higher, and will be developed on a parallel track with the regular version of WFTPD.  Starting at the beginning of August 1996, Texas Imperial Software will also be available for consulting services.


Command Line Arguments$ Options
Command Line Arguments -

The 'h', 'm' and 's' options, and changing the listening address or port.

The 'h' option - run "Hidden"

If you run WFTPD with a command line argument of 'h' or '-h' (case is unimportant), then the program will run without an icon, and will not show up in the task switcher.  This means that WFTPD cannot be closed without exiting windows, and its options cannot be altered.  This is probably only useful for remote system administration, where (to quote an existing user) "you don't want bozos deciding they know how to rewire their systems".

There is currently no way to prevent users of Windows 95 from using CTRL-ALT-DEL to find and kill WFTPD.

The 'm' option - run Minimised

If you run WFTPD with a command line argument of 'm' or '-m' (case is unimportant), then the program will start up minimised.  This is designed for people who either want to start WFTPD from the load= or run= lines of the WIN.INI file in Windows 3.1x, or who want to use the program as a Windows 95 service.

The 's' option - (Service) - don't stop

If you run WFTPD with a command line argument of 's' or '-s' (case is unimportant), then the program will not terminate when it receives a WM_ENDSESSION message - what this means is that when the Windows user logs off, the server will continue to run, which is useful if you want WFTPD to be run as a service on NT.  Starting in version 2.34, it's also useful if you want WFTPD to be run as a service on Windows 95

The 'i' option - specify INI file

When running WFTPD as a multi-homed site (by running several copies of WFTPD), it is useful for each home to be using a different INI file (the default is WFTPD.INI, in your windows directory).  By using the 'i' option, you may tell WFTPD to use a specific INI file - the file's complete path (including name and extension) must follow the option, with a space between the option and the filename.

Changing the listening address or port

You can also tell WFTPD to listen to a different port and/or address.  The command line syntax for this is to include an option of the form [IP-Address][:port], where IP-Address is the address that you want WFTPD to listen to - normally, this is 0.0.0.0, and this is what is defaulted to when you leave out the IP-Address.  The IP-Address will usually be numeric, but if a name is passed in, and can be resolved, it will be accepted.  A different port is specified by putting the port's number or name after the colon.  The default behavior is to look at the port for "ftp", which is usually 21 - if this is not found, then it defaults to 21, after warning you.  If the IP address and port are both provided, they must be specified together as in "WFTPD 127.0.0.1:21".

Here are some sample command lines - note that the port numbers and IP addresses are made up ones - if you don't know what IP address and port number you should be assigning here, you really have no need to supply them:

WFTPD	Run standard size, listening for all incoming connections, on the "ftp" port, usually 21.
WFTPD m	Run minimised.
WFTPD h	Run hidden.
WFTPD s	When run as a service, use this option to make sure it doesn't die.
WFTPD m 10.21.15.7	Run minimised, listening for incoming connections to address 10.21.15.7, on the "ftp" port, usually 21.
WFTPD h :qotd	Run hidden, listening for all incoming connections, on the "qotd" port, usually 17.
WFTPD 10.5.72.3 i c:\host1.ini	Run listening at address 10.5.72.3, on the "ftp" port, using file c:\host1.ini as the storage for WFTPD's settings (users, permissions, etc)
WFTPD myhost.mysite.com:80	Run normal size, listening for connections to the IP address represented by myhost.mysite.com, on port 80 (usually the HTTP port)


What's New in Version 2.3

What's new in version 2.30?

Okay - here's the new stuff in this version:

Beat a beta baiter - WFTPD works fine on my release copy of NT 4.0.  It does NOT work on NT 4.0 beta 2.  This is an example of why I cannot support beta releases of operating systems - if I had spent time to fix the problem, I would have found myself with code that didn't work in the release version, and which I would have needed to remove.

Service with a 	The command-line switch 's' was added, to prevent WFTPD from dying when run as an automatic service under Windows NT.  (MFC apps by default die when a user logs out, even if they are being run as a service)

Joker's Wild!	Unix-style path matching, so that wild-cards can occur at any point in the path - e.g. "LIST */WFTPD.*" works as you would expect it to.

More options than you can shake a small stick at (Mirror, mirror, on the wall…)	Unix-style command options for LIST/NLST - the options supported are F, c, d, f, l (the letter), r, s, t, u, 1 (the number), and R. All other options are ignored, since they either won't mean anything through WFTPD, or are more effort to implement than is worthwhile, considering the lack of requests for them.  This should allow mirroring software to work, because they generally rely on "ls -lRtu" to work.

Hey!  Where'd my program go?	On Windows 95 (and NT 4.0), when WFTPD is minimized, it shrinks to an icon on the system tray, with a small menu that appears when you click the right mouse button on that icon.  The number of users and sockets is displayed as a tooltip if you leave the mouse on the icon for a short while, and double-clicking with the left button on that icon will restore the window to its former size.  Most of the functions of WFTPD should be accessible from the right mouse menu.

Who's on first?	A modeless dialog box can be displayed that lists the current users, and allows you to disconnect unruly ones (multiple selections allowed).

Wait for me!	When you try and close WFTPD, if people are still logged in, you have the choice of disconnecting them, canceling and returning to normal operation, or waiting for everyone to log off.

Say what?	Sounds are now supported, and can be played on user login and logout.

Nutscape stupidity fixed	MACBinary commands are no longer logged as errors - for some reason, Netscape thinks it's essential, but doesn't ever answer my emails asking why.

You can be insecure again	WFTPD can now be used again with security disabled.

Bugs fixed:

•	The Browse Directory button for the home directory in the Users/Rights dialog now saves the directory chosen.

•	A GPF at or around 0x0002:0x2d94 in the 16-bit version has been removed.

•	The status text at the start of each WFTPD run is now displayed whether logging is on, or not.

•	Getting a 0 byte file is now possible, no more "illegal RESTart marker"

•	The correct response ("WIN32") is now given to SYST commands on Win32 systems.

•	Files and directories should no longer be occasionally left locked, as long as you install the idle timeout (from the General Security dialog)

What's new in version 2.31?

2.31's main purpose is to fix various problems that had been caused by the new listing code - this manifested in many ways, including listing the wrong directory, the wrong values for that directory, and even to ignore security settings on those directories.

I is initalise's initial	The 'I' option has been added to the command line, to allow users of multi-homing to better specify which INI file to use - for example "WFTPD I C:\HOST1\WFTPD.INI" tells WFTPD to use information from the C:\HOST1\WFTPD.INI file (this is where all data will be saved, too).  The default is still to use the file in your Windows directory.

Bugs fixed:

•	Miscellaneous bugs with the new directory listing function

•	Sending a PASV command followed by a PORT command will no longer cause your client to hang when the transfer starts.  (It's highly unlikely that your client would do anything so breathtakingly idiotic, but who am I to complain?)

•	No more GPFs when closing the program down and saying "OK" to disconnecting the users.

•	Debug code, such as the "message received on socket xx which I can't find" log entry, has now been removed completely.

•	Much revamped internal code, so as to add further support for multi-homed hosts, and to create the service implementation for the "professional" version.

Why version 2.32?

2.32 has fixed another couple of bugs, most notably that the command line parameters to change the IP address and port listened to were ignored in 2.31.  This is fixed in 2.32, and also the speed of downloads from WFTPD is greatly improved.  I was tempted to simply release these new fixes as the registered version of 2.31, leaving the unregistered users with the buggy version, but didn't fancy the problems of supporting two different versions with the same number.  So, 2.32 isn't a big update to 2.31, but might prove of use.

What about version 2.33?

As soon as I released 2.32, the letters came flooding in, telling me that it didn't work.  Eventually a pattern settled in - everyone was using Trumpet Winsock.  For the technical among you, every version of Trumpet Winsock to date has returned an error from the inet_addr function when passed the string "0.0.0.0".  This is one of those errors that you think "surely someone must have run into this before, and it's such an unlikely error I must be going nuts".  Fortunately, Peter Tattam of Trumpet Software International verified and acknowledged this bug in pretty short order - he'll be fixing it in his next release, and I'll work around it in this release.  The only change in 2.33 is to work around this bug, so it's not a big release, but is worth installing.

And now, 2.34 - what's with that?

For the longest time, I couldn't get the '/s' switch to keep WFTPD running on Windows 95 - I now have the trick figured out.  It's also got a bunch of changes to the engine that were brought on by development work on the WFTPD Professional version.  There's a price change to announce, as well as new terms of payment - by credit card, to be specific.  Check out the registration instructions for more details.


Is WFTPD multi-threaded?
Multi-threaded FTP server software is not necessarily a good thing, and changing WFTPD into a multithreaded program is more likely to reduce performance and stability than it is to improve it.  Currently, WFTPD operates using Asynchronous, non-blocking sockets, which allows the winsock stack to take more control in deciding how to switch priorities and manage bandwidth.  Asynchronous non-blocking sockets, such as WFTPD uses, scale far better as the number of users grows, than would any multithreaded solution.  In the most obvious implementation of multi-threading, the performance will start off slightly slower than WFTPD, and as users are added, will bog down rapidly in comparison with WFTPD.  WFTPD will eventually use some multi-threading features, mainly for directory listing.


Why can't WFTPD find my user's home directory?
The algorithm for finding the home directory is so basic that I have yet to see a situation where this error was reported other than that where the home directory specified for the user is not a full path.  This means it must include a drive letter, followed by a colon (":"), then a full path down from the root of that drive, with each directory spelt correctly, and with no backslash at the end of the path (Hint: go to the DOS prompt, and try to "CD" to the directory in the edit box of the Users/Rights dialog)

This version of WFTPD checks for valid directory entries, and will not let you exit the dialog without entering a valid directory.


Why haven't you received my order form yet?
I've been living in Cedar Park, just outside Austin since December 1995.  The automatic mail forwarding from my previous addresses may very well have expired.  If you put a return address on your envelope, it should have returned to you, otherwise it may very well be utterly lost in the mail.  I do my best to make sure that the major ftp sites are kept up to date with the latest versions of my software, which include more up-to-date registration instructions (order forms, addresses etc).  For the current version, visit the WFTPD web site at http://www.abol.com/texas/index.html - at some point, I hope to have a web site "http://www.texis.com", but that hasn't happened yet.


How much does it cost to upgrade from 16-bit to 32-bit?
Upgrading to the 32-bit version from the 16-bit version is now free, since I don't differentiate between the two on the order form any more.  If you are a registered user of WFTPD, you will have received both versions in your zip file.  If you do are registered, but can't find the 32-bit version, please email me for a new copy.


Why does WFTPD tell me I can't run it in DOS mode?
There's two things here - either you really ARE trying to run it in DOS mode :-), or you're trying to run the 32-bit version of WFTPD on a Windows 3.1x machine without first installing win32s.  You can download a current version of win32s from ftp.microsoft.com, or you can fetch the 16-bit version of wftpd from the WFTPD web site at http://www.abol.com/texas/index.html


How do I change the port WFTPD listens on?
WFTPD 2.11 and before asks the winsock stack directly what port the "ftp" service should run on.  This is often configurable by editing a services data file - the equivalent of the Unix standard "/etc/services" file.  You'll have to talk to your winsock supplier to determine just where this configuration change can be made.  The current version of WFTPD does this by default, but this behaviour can be overridden in the command line used to run WFTPD.  For instance, if you want to listen on port 2579, simply run "WFTPD :2579" (note the colon is a separator - the full parameter is an IP address (numerical or name), followed by a colon, then the port number (again, number or name - names are searched on in the services database).


Why do I get "Invalid Page Fault" dialogs with WFTPD?
Invalid page faults are rarely, if ever, actually caused by WFTPD.  The code is very stable, and is in use on many thousands of computers around the world.  Mostly, invalid page faults happen after a period of stable usage of WFTPD, which again points away from WFTPD as the cause.  There are, however, some things you can try.  The following have been suggested by my wife, who was one of the core team members of a Microsoft Windows 95 support centre:

Disable 32-bit disk drivers:  Right-click on the "My Computer" icon on your desktop, or in the explorer.  Select the "Properties" option in the menu.  In the "System Properties" dialog, select the "Performance" tab, and press the "File System" button.  In the "File System Properties" dialog, select the "Troubleshooting" tab, and from there you can disable the 32-bit disk drivers.  After pressing OK, you'll be asked to reboot.  If, over a period of time, you get no more invalid page fault errors, you need to contact the suppliers of your disk driver software for a new version that works properly with Win95.

Scandisk: You might also like to try doing a thorough scandisk on all local hard drives on your system, particularly the drive where Windows 95 is installed, the drive you boot from, and the drive where WFTPD is installed.  Re-installing WFTPD is also a good option to try AFTER doing the thorough scandisk, as the executable may have become corrupt.

Bad RAM: Another cause of this problem is faulty RAM.  Make sure your CONFIG.SYS file has the line "DEVICE=HIMEM.SYS /TESTMEM:ON" to ensure that HIMEM can test your memory.  If you have diagnostic tools that can check memory, please use those.

I'd just like to emphasise that if this problem _were_ caused by a fault in WFTPD, I should be inundated with howls of protest, rather than the few occasional emails I get.  Following the above steps worked to save my Boss' PC from Page Faults he blamed on Visual C++ 4.0 (they were caused by a bad 32-bit disk driver) - it could save you from wrongly determining WFTPD as a cause.

If you have tried all of my suggestions, and still get repeated page faults, please email me at alun@texis.com, and we'll sort things out.


Why do I get a WSAEAFNOSUPPORT error message?
The WSAEAFNOSUPPORT message is generated because TCP/IP support is not available to WFTPD.  This usually has two possible causes:

1. You don't have TCP/IP installed on your computer.  Your network software vendor should be able to tell you how to install it, or may have instructions of that ilk in their help files or manuals.

2. You have installed a 16-bit winsock stack on Windows 95.  This means that you will only be able to install 16-bit winsock applications on your machine.  The 16-bit WFTPD is available at ftp://ftp.simtel.net/simtelnet/win3/winsock/wftpd232.zip.  I thoroughly recommend that you reinstall the Microsoft TCP/IP stack, as it will enable you to run 32-bit winsock apps, which work far better with the 32-bit operating system you are running on.  16-bit apps can bring your system to a crawl even when they're not doing anything - just take a look at the CPU performance meter someday!


What's coming in the "professional" version?
The "professional" version of WFTPD should be available mid-March 1997.  Its initial price is slated to be $80 per copy, with discounts available for volume purchases, or for existing WFTPD users.  WFTPD Pro will install and run as an NT service, controlled by a Control Panel applet.  It will be tested and supported on NT 3.51 and 4.0, and will continue to be tested on new versions of Windows NT as they are released.  WFTPD Pro will also have the ability to run multiple hosts from the one instance, with configuration made far easier - each host will have a 'nickname', and the Control Panel applet will display clearly the nickname of the host that you are configuring.  Configuration information will be stored in the registry, rather than an INI file, and user information will be stored in a fast-access database format, specially developed for this purpose (this database will make its appearance in the second major release of WFTPD Pro, when the price will rise to $100 - existing WFTPD Pro users will upgrade for free).


Does WFTPD work on NT 4.0?  or on the latest Windows beta version?
I've had various reports of problems with NT 4.0 - Beta 2, especially.  Unfortunately, I am unable to offer support on any beta operating systems.  I have tested with the released version of NT 4.0 Workstation, and have not run into any problems yet.  If you are trying to run WFTPD on NT 4.0, beta 2, then I can offer no support.  If you have problems running on the shipping version of NT 4.0, please email me stating this and also the specific details by which I can re-create your problem.

Because of the substantial differences between beta versions of operating systems and their final, released versions, I cannot and will not offer support on beta versions of Windows.  This policy has been borne out by the fact that all known bugs in WFTPD on NT 4.0 beta 2 have disappeared with the final release of NT 4.0, demonstrating that those bugs were actually in the operating system.  By not trying to fix bugs that may be caused by buggy operating systems, I spare time to be used in processing new registrations, and in providing new versions of the software with new features.


What are all the various INI file settings?
What are all those INI file settings?

First, I'd like to note that the INI file should not, in general, be edited by hand - WFTPD provides user interface methods to set any of these values.  However, an understanding of what is stored where may help you if, for example, you are writing programs to modify WFTPD without using the interface.

Second, I should also like to note that these settings are not going to be used with WFTPD Professional - the majority of them will stay the same, but some will be shuffled around into a different hierarchy to better take advantage of the fact that all settings will be in the registry.  Some settings will disappear completely, since WFTPD Pro will only run as a service, and will not present the same user-interface.

Section "General":

Key name	Default Value	Comments
ScreenPosX	<default window position>	X position of the top left of WFTPD's window
ScreenPosY	<default window position>	Y position
ScreenWidth	<default window width>	Width of WFTPD's window
ScreenHeight	<default window height>	Height

Section "Homes":

Key name	Default Value	Comments
<user's name>	""	Contains the home directory for this user.

Section "Hosts":

Key name	Default Value	Comments
default	0	0 means allow, 1 means deny
<host / net IP address>	<value set for "default">	same as above

Section "Logging":

Key name	Default Value	Comments
ConnectNum	1	The next connection's number
Logging	0	Enable (1)/disable (0) logging
Puts	0	Log all uploads to this site
Gets	0	Log all downloads
Anonymous	0	Log anonymous login/out
Commands	0	Log all commands
Logins	0	Log all logins
Warnings	1	Log all warnings/errors
Winsock	0	Log all winsock calls and results - do not enable this - it is for debug only.
Logfile	""	The path and filename (including extension) for the file where logging occurs.

Section "Messages":

Key name	Default Value	Comments
MESSAGE.FTP	0	If 1, any login or CWD command will display the MESSAGE.FTP file in the new directory, if it exists.
Greet<n>	""	The n'th line of the greeting message - each line must be quoted with ~ characters.  N is a 2-digit number, starting at 00.
Bye<n>	""	n'th line of the farewell message - same as for greeting message.
HelloSound	""	Full path to the WAV file played when a user logs in.  If empty, the default sound is played from WFTPD's resources.
PlayHelloSound	0	1 to play the HelloSound on each login, 0 to stay silent.
GoodbyeSound	""	Same as for HelloSound
PlayGoodbyeSound	0	Same as for PlayHelloSound

Section "Passwd":

Key name	Default Value	Comments
<user's name>	""	Encrypted password - Unix standard crypt function is used.  For obvious reasons, I can't give out source code to this function, but I can point out that a version is available in the source code to the security tool "crack", which can be found in back issues of the comp.sources.unix Newsgroup

Section "Restricted":

Key name	Default Value	Comments
<user's name>	0 for regular users, 1 for anonymous	1 means the user is restricted to their home directory and below.  0 means the user is restricted only by their rights.

Section "Rights.<user's name>":

Key name	Default Value	Comments
<directory name, ending in '\'>	<inherited rights from parent, then from section Rights.*>	Values can be any combination of R,O,L,C - Read, Overwrite, List and Create.   The absence of a letter signifies the absence of that right on the specified directory. The single letter 'W' is treated as O and C.

Section "Rights.*":

Key name	Default Value	Comments
*	RWL	See above - default rights are to provide all access to all directories.
<directory name, ending in "\">	< inherited rights from parent, then from key *>	See above.

Section "Secure":

Key name	Default Value	Comments
Secure	1	1 means ask for passwords, and check user rights.  0 means any user can log in with or without any password, and can have access to your entire drive.  We recommend you keep this setting at 1.
Allow_Anon	0	1 means to allow anonymous users.
MaxUsers	0	0 means no maximum number of users.  Any other number means you can't have more users logged in than this setting.
Allow_Puts	1	1 means uploading is allowed to directories where users have O or C rights, 0 means it is not.
Allow_Anon_Puts	0	1 means anonymous users can upload if they have sufficient rights.  0 means Anonymous users can only download.
TimeOut	0	Time-out value in seconds, or zero for no time-out.  We recommend setting this value to about 600 (10 minutes)
Disable_Unsecure_Ports	0	0 means all PORT commands are accepted, allowing proxy ftp transfers to go ahead.  1 disables proxy ftp (transferring between two ftp servers), meaning that your server can't be used to attack other sites that trust your host.


Registration Information

Order forms must accompany all registrations.

Order forms can be reached from the bottom of this page.  Please read the entire page before proceeding to the order forms.  If you are ordering through a purchasing department, please attach written instructions to the order form, so that they know to pass the order form on with the payment.  Many purchasing departments simply throw the order form away, and send on just the purchase order / payment.  This page is not an order form.  I can always print a copy of this page out, so please don't send any more to me.

Prepaid orders have a lower price than credit (credit card / purchase order) orders

There are so many unpaid purchase orders we are trying to collect on that we must make this restriction.  Credit cards just cost more to implement anyway.  Any purchase orders unpaid over 60 days automatically lose the first year's free maintenance, and purchase orders unpaid over 90 days may be considered as a loss, and the user will be required to remove the software from their machines.  We will not take further purchase orders from any company with outstanding purchase orders.

Our "bounced cheque" fee is $25

Payment must be made in US dollars, or British Pounds (also known as "Sterling").

I am only able to accept payments in these two currencies.  No VAT is due - I don't make enough money from WFTPD in the UK to charge VAT.

Payment is accepted by credit card, cheques, cash, or Postal Money Orders.

Company purchase orders are accepted by mail or fax to me in the US (see below for details), but must be accompanied by the relevant order forms, and final payment must be made in terms defined here.

Cheques in dollars must be drawn on US bank branches, made payable to "Texas Imperial Software".

Basically, if your cheque doesn't have a USA address on it somewhere, it cannot be cashed here without a significant payment.

Cheques in sterling must be drawn on UK bank branches (or be Eurocheques), made payable to "Alun Jones"

Texas Imperial Software is an American company only, and has not been established yet in the UK.  Since I cannot cash sterling cheques made out to Texas Imperial Software, they have to be returned.

Money orders come with a receipt - keep the receipt in case the money order gets lost!

Credit card orders can now be accepted

Credit card orders are charged at $25 per copy, plus $5 shipping/handling for regular mail orders.  Credit card orders can be accepted online - visit our web site at http://www.abol.com/texas/index.html to find out how.  You can also fax credit card orders to (216) 245 5995.  Our credit card orders are handled by Sunmark Business Products, Inc, and that's what your bill will show.

Texas Residents must add 8.25% sales tax

Please allow adequate time to process your order

We aren't currently equipped to deal with "urgent" orders.  Registered mail has to wait at the post office until we can get out to collect it (usually at the weekend).  Mail may take a week or two to reach us.  It's also worth considering that if we move, mail gets forwarded automatically, FedEx/DHL/UPS/etc. don't - they sit in the warehouse for a few weeks before someone gets the idea to call you and ask what you want done with the order.

Price for prepaid orders of WFTPD:  either US$20 or GB£20 - shipping is US$5 or GB£5, if you really must have a disk sent to you.  Price for credit card or purchase orders for WFTPD: either US$25 or GB£25 - the above shipping charge also still applies if you want us to send you a disk.

The cost in pounds is slightly more expensive, but usually cheaper than getting a money order in dollars, apparently.  Please, if neither of these is your currency, make sure that your purchasing department knows the price of the software is based on one of these two currencies - occasionally, the value seems to have been converted to and fro in the purchasing process, and the total is not adequate to cover the cost of the software.

Software is sent through your suggested delivery method soon after receiving either a cheque, cash, money order (for US dollars or English pounds), or a purchase order.  If you use a purchase order, make sure it clearly states that the order is for "WFTPD - Windows FTP Daemon" - I am not sufficiently trusting to assume that an order for "General Lab Supplies" covers my software (Yes, I've been sent one of those)

Addresses & Fax Numbers

The regular mail address for sending order forms, payments or purchase orders in US dollars only is:

Texas Imperial Software

1602 Harvest Moon Place

Cedar Park TX 78613-1419

USA

Phone number +1 (512) 257 2578

Fax number +1 (512) 257 2579

This address should still be valid, but if you want to find the guaranteed current address of Texas Imperial Software, copy the following URL into your Web browser:

http://www.internic.net/cgi-bin/whois.pl?engine=rs&search=Texas+Imperial+Software

Or, if your payment is in pounds sterling:

Alun Jones (WFTPD)
47 Sugden Road
Long Ditton
Surrey
KT7 0AD
UK

Order forms and purchase orders can also be faxed to me at the number above.  E-mail correspondence for comments and suggestions should be sent to "alun@texis.com".  Note this is a change from my previous e-mail address.  (Why?  Click here)

It often helps me if you can tell me how you use the software - I have found some New and Innovative Uses for an FTP daemon out there.  This will allow me to determine whether all the features of the software are useful, or whether they need to be rewritten.

Click here for pricing on site licences.

The order forms are separately listed for:

Non-credit orders (cheques, money orders, cash, etc)

Credit orders (major credit cards, company purchase orders) - this costs $5 or £5 extra, and frequently takes me longer to arrange.

Either of these order forms may be printed from Windows Help.  If you do not have a printer, please make sure that all the items listed on the order form are present in whatever you send to me to register.


Order Form for Prepaid Orders
Order Form WFTPD version 2.34 - non-credit

Texas Imperial Software

1602 Harvest Moon Place, Cedar Park, TX 78613-1419

Name: 	_______________________________________________

Company Name:  	_______________________________________________

Address:  	_______________________________________________

_______________________________________________

Phone Number:  	_______________________________________________

Delivery Method:	         Regular Mail          E-mail             FTP      (mark at least one)

E-Mail Delivery by:	        MIME (Eudora Lite, etc)                  Uuencoded (MS Mail, etc)      (mark one)

E-mail Address:  	_______________________________________________
(Always fill in your email address, so that I can contact you if I have any questions regarding your order)

For FTP delivery, the following three entries are all required - I will not deliver WFTPD to an anonymous account under any circumstances.  Please remember to be careful about upper/lower case distinctions, or I may not be able to send your software to you.

FTP Site:	_______________________________________________

FTP User Name:	_______________________________________________

FTP Password:	_______________________________________________

Quantity	Description	Price Each	Total
	WFTPD - current version	US $20.00 / UK £20.00
(1)	Shipping (Only for orders to be shipped by mail)	US $5.00 / UK £5.00
If payment is made in pounds sterling, such payment should be payable to Alun Jones.  Only checks drawn on US and UK bank branches, or International Postal Money Orders will be accepted with this form.  There is a different form for credit card orders.

Texas residents must add 8.25% Sales Tax

For dollar payments, send this order form along with your check to Texas Imperial Software, at the address at the top of this form.  For sterling payments, send this order form along with your check to:  Alun Jones (WFTPD), 47 Sugden Road, Long Ditton, Surrey, KT7 0AD, UK.

Please contact Alun Jones at the above address or e-mail alun@texis.com for site licenses, comments or suggestions.


Order Form for Credit Card Orders
Order Form WFTPD version 2.34 - credit cards / company P.O.s

Texas Imperial Software

1602 Harvest Moon Place, Cedar Park, TX 78613-1419

This order form may be faxed to:	+1 (216) 245 5995 (credit cards)

+1 (512) 257 2579 (purchase orders)

Name: 	_______________________________________________

Company Name:  	_______________________________________________

Address:  	_______________________________________________

_______________________________________________

Phone Number:  	_______________________________________________

Delivery Method:	         Regular Mail          E-mail             FTP      (mark at least one)

E-Mail Delivery by:	        MIME (Eudora Lite, etc)                  Uuencoded (MS Mail, etc)      (mark one)

E-mail Address:  	_______________________________________________
(Always fill in your email address, so that I can contact you if I have any questions regarding your order)

For FTP delivery, the following three entries are all required - I will not deliver WFTPD to an anonymous account under any circumstances.  Please remember to be careful about upper/lower case distinctions, or I may not be able to send your software to you.

FTP Site:	_______________________________________________

FTP User Name:	_______________________________________________

FTP Password:	_______________________________________________

Quantity	Description	Price Each	Total
	WFTPD - current version	US $25.00
(1)	Shipping (Only for orders to be shipped by mail)	US $5.00
Credit card information (if ordering by credit card):

Expiry date: 	/	Card Number (16 digits):

Card Type:	VISA	Mastercard

Cardholder Signature:

If payment is made in pounds sterling, such payment should be payable to Alun Jones.  Only major credit cards (VISA / Mastercard) or company purchase orders will be accepted with this form.  There is a different form for prepaid (cheque / money order / cash) orders.

Texas residents must add 8.25% Sales Tax

For dollar payments, send this order form along with your check to Texas Imperial Software, at the address at the top of this form.  For sterling payments, send this order form along with your check to:  Alun Jones (WFTPD), 47 Sugden Road, Long Ditton, Surrey, KT7 0AD, UK.

Please contact Alun Jones at the above address or e-mail alun@texis.com for site licenses, comments or suggestions.