New Version 3.x

This version has so many new features, that I decided to raise the version number a little bit. Also, it may be distinguished from releases and betas made by other people. This version has been tested quite a while and should run stable now. I cannot guarantee that every feature works 100% because the whole source has been rewritten, so bug-reports are welcome. If you are want to upgrade from 2.x click here for upgrade information. Version 3.x has the following enhancements:

Admin tool

F4A now features an admin port, that is a port for an admin tool (GUI) to connect to. The admin tool (GUI) has then control over the server via the FTP4ALL DAEMON PROTOCOL (F4ADP). Check out the admin tool I created, it is Java based and therefor runs under Win & UNIX. I created it under Win using a Java development tool based on Suns JDK 1.1.x.
You need to set the following option in the registry: To run it, get and install Suns JDK 1.1.6 (or later). Be sure to include the current working directory (.) in the CLASSPATH environment variable. Then go to the classes subdir and type java Main. After that, connect to the server on the admin port you specified in the config file (dont use the FTP service port !!!). To login use a valid superuser account. The GUI works well under Windows with JDK 1.1.6 and under Linux with Blackdowns JDK 1.1.7p3 port.
The GUI is now the primary tool for administering f4a. Although the SITE commands still work, I do not guarantee that future features will be accessible with these commands. For now, there is already one feature that cannot be accessed with the GUI only: the user permissions.

Permission concept

You grant permissions (rights) to users. Every user is in a user class. The idea is that users in a higher user class have the power over users in a lower class. User classes are (descending power): SUPERUSER, SITEOP, GROUPOP, NORMAL.

This means: A SUPERUSER has power over SITEOPS, SITEOPS over GROUPOPS and GROUPOPS over NORMAL users. The rights that one user of a particular group has can be granted and revoked. It means also, that users in a lower class have absolutely no power over users in a higher class (they can have power over users in the same class if they have the appropriate right granted). For example, a groupop can never kick a siteop, even he is in the same group.

Permissions are subject to user classes. The following user classes now exist:
CLASSRelation to rights
SUPERUSERIt is not necessary to grant rights to users that are in the superuser class. Superusers have all rights anyway.
GROUPOP, SITEOPThese classes require that you grant rights
ANONYMOUS, NORMAL,TEMPLATEThese classes have no rights anyway. If you grant rights to users, they do not apply as long as you do not move these users into the GROUPOP or SITEOP classes.

The following rights have been introduced:
RightMeaning
SERVER RIGHTS
STATETo change the server state: open, close or shut down
PORTSTo change the port numbers during runtime
GUIThe right to log into the server using a GUI
MONITORTo receive notifications of user activites (to monitor the site)
FILEACCESSnot used yet
REGISTRYTo access the registry (read and write)
MESSAGESTo access the messages (read and write)
CONFIGTo access the config files (read and write)
GROUP RIGHTS
GROUP_ADDTo create a new group
GROUP_EDITTo edit the defaults of a group
GROUP_DELETETo delete a group
GROUP_LISTTo list/read the defaults of all groups
USER RIGHTS
USER_DISABLETo disable/enable a user account
USER_KICKTo kick a user
USER_PASSWDTo change a users password
USER_ADDTo create a normal user
USER_EDITTo edit a normal user
USER_DELETETo delete a normal user
USER_READTo read a normal user
USER_ADD_SOTo create a siteop
USER_EDIT_SOTo edit a siteop
USER_DELETE_SOTo delete a siteop
USER_READ_SOTo read a siteop
USER_ADD_GOCreate a groupop
USER_EDIT_GOEdit a groupop
USER_DELETE_GOdelete a groupop
USER_READ_GOread a groupop
USER_ADD_ANONadd an anonymous user
USER_ADD_TMPadd a template
USER_EDIT_IPedit the ip range/ident
USER_EDIT_CREDITchange the credit and ratio
USER_EDIT_STATSchange the statistics
USER_EDIT_RIGHTSgrant and revoke rights
USER_EDIT_INFOchange info
USER_EDIT_UIDchange uid
USER_EDIT_LOGINSchange number of logins
USER_EDIT_SPEEDSchange upload and download speeds

Enhanced statistics

F4A now has now upload, download, user, group, week, month, year and all-time (total) statistics. The statistics are dumped into the log directory or the directory you specify as statdir in the configuration file. F4A writes statistic files whenever it detects a period change (new week, new month or new year). You can force F4A to output all statistics by signalling ftpd USR2. The statistic files are ASCII files sorted descending by amount. There are three columns:
  1. user or group name
  2. upload or download amount in bytes
  3. transfer time for the bytes in seconds
The following table lists the statistic files:
dl_g_m_YYYYMMgroup download statistics of year YYYY month MM
dl_g_tall-time (total) group download statistics
dl_g_w_YYYYWWgroup download statistics of year YYYY week WW
dl_g_y_YYYYgroup download statistics of year YYYY
dl_u_m_YYYYMMuser download statistics of year YYYY month MM
dl_u_tall-time (total) user download statistics
dl_u_w_YYYYWWuser download statistics of year YYYY week WW
dl_u_y_YYYYuser download statistics of year YYYY
ul_g_m_YYYYMMgroup upload statistics of year YYYY month MM
ul_g_tall-time (total) group upload statistics
ul_g_w_YYYYWWgroup upload statistics of year YYYY week WW
ul_g_y_YYYYgroup upload statistics of year YYYY
ul_u_m_YYYYMMuser upload statistics of year YYYY month MM
ul_u_tall-time (total) user upload statistics
ul_u_w_YYYYWWuser upload statistics of year YYYY week WW
ul_u_y_YYYYuser upload statistics of year YYYY

Standard directory tree

The following standard directory tree has been introduced (see standard subdirectory of this distribution):
FTP messages are now stored in files only, all settings in the config file regarding server messages have been removed. The messages must be stored under the msg subdirectory in the standard tree. User and group specific messages must be stored under msg/usr and msg/grp. User specific messages are preferred over group specific, and group specific over default. The following messages are supported:
file nameevent
cdupdirectory up
chdirchange directory
downloadfile downloaded
goodbyelogout
listdirectory listed
mkdirdirectory created
rmdirdirectory removed
startupmessage before login
toomanylogin failed, because max number of users reached
uploadfile uploaded
welcomesuccessful login

Upload and download speed limits

You can now assign upload and download speed limits to users. There are both a minimum and a maximum limit. They are given in kilobytes per second, and must be between 0 and 32000. A limit of 0 (zero) means that there is no limit. Negative values are not allowed. Reasons for setting:
minimum upload speed - keep lamers out
maximum upload speed - preserve bandwidht
minimum download speed - keep lamers out
maximum download speed - keep leechers from taking all the bandwidth, restrict anonymous/guest access
F4A enforces maximum speed by delaying the transfer if the speed is exceeded. If the minimum speed is not reached (from 30 seconds on), the transfer is aborted with an error message.

Group defaults

Until now, groups had only two attributes: id and name. Now, there are several more, like number of logins, speed limits, ident@ip or ratio. Whenever a group admin creates a new user, the new user is initialized with these defaults. For superusers and siteops, they can also create a user with the group defaults by using the command "SITE USER ADD <username> <groupname>". Note if there is a user called <groupname>, then the new user is created from this user (this is the old template concept).

Port change during runtime

You can now change all server ports while the server is running. Changes take effect immediately. The command for this is SITE BIND.

Other Changes

The following keywords in the configuration file are now invalid: A limit of less than zero (e.g. -1) means that the user has no download permission at all.