------------------------------------------------------------------------------
 Dftpd Overview
------------------------------------------------------------------------------

Dftpd is a distributed file transfer protocol (FTP) daemon.  It allows many
servers to be linked together to create the illusion of a single server.  The
server is controlled graphically using the DftpdI application, which is 
included in this installation, or by using the FTP command line via the SITE 
commands. This allows server administration from anywhere using either DftpdI
or a standard FTP client application.  Dftpd also provides secure SSL 
connections using explicit or implicit SSL, real time server information, 
resumable uploads and downloads, detailed logging, custom commands and 
scripts, and virtual directory links.  Dftpd now also includes a mirroring
feature that allows data connections to specified directories to be 
automatically distributed among multiple FTP servers. It supports Linux/Intel,
Windows 2000/Intel, Windows XP/Intel, Solaris/SPARC, and FreeBSD/Intel 
operating systems and architectures.  DftpdI (Dftpd Interface) requires the 
Java Runtime Environment (JRE) 1.4.0 or higher.

Visit http://www.dftpd.com for more information.

Please report any bugs or send questions/suggestions at 
http://www.dftpd.com/feedback.php


------------------------------------------------------------------------------
 Dftpd Installation Notes (see upgrade.txt for notes on upgrading)
------------------------------------------------------------------------------

Windows:

    Run -> setup-Dftpd_<version>.exe

        Proceed through the installation wizard.

    NOTE: Starting with Dftpd version 1.0.5_beta the installation wizard will 
          automatically upgrade previous installations.  All the server
          configuration settings and user information will be preserved.  Only
          the documentation, help files, and binaries (executables/libraries)
          will be overwritten (see changes.txt for a list of files/directories
          that are replaced).

UNIX:

    Extract Dftpd_<version>.tar.gz

        Run -> gunzip Dftpd_<version>.tar.gz

            This will unzip the .gz file (result is Dftpd_<version>.tar)

        Run -> tar -xf Dftpd_<version>.tar

            This will extract the contents of the .tar file to the current
            directory (result is the "dftpd" directory tree).

        Run -> mv dftpd /dftpd (or wherever you want to put it)

            If you want to use a directory other than "/dftpd" you must update
            the "rootpath" entry in the dftpd.conf file along with the
            dftpd-start and dftpd-stop scripts (see Changing the Dftpd
            rootpath/homedir).

    Security Note:
        Dftpd does not have to run as root.  It is recommended that you run
        Dftpd as a non-root user.  For example, to run Dftpd as the user
        "dftpd" use the following commands (NOTE: the user dftpd must
        already exist):

        [May require root access]
        Run -> chown -R dftpd:dftpd /dftpd

            This will change the owner and group of the /dftpd directory, and
            everything in it, to "dftpd".

        [As the dftpd user]
        Run -> /dftpd/bin/dftpd-start

            This will run Dftpd as the "dftpd" user.


Post install:

    Once the server is installed and started, login using login/password
    = dftpd/dftpd.  This account is restricted to only allow logins from
    the address 127.0.0.1 (localhost) --do not connect using the external
    IP of the machine.  Using this account you can then add other users
    with the following command:

        > SITE ADDUSER <username> <password> <IP#1 - 5>
        
        Example: SITE ADDUSER bender abc123 127.0.0.1 192.168.*

    To make this user a siteop add the "1" flag using the following command:

        > SITE CHANGE <username> flags +1

        Example: SITE CHANGE bender flags +1

    Once you've created another siteop you should delete the "dftpd" account
    for security reasons.  Delete the dftpd user with the following command:

        > SITE DELUSER dftpd
        > SITE PURGE

    To make the root directory writable to all users run "SITE CHMOD 777 /"
    using a siteop account (with flag 1).

    NOTE: If you are using the standard FTP client console application "ftp",
          you may need to add the keyword "quot" before the SITE commands.
          Ex. > quot SITE ADDUSER bender abc123 127.0.0.1 192.168.*

Changing the Dftpd rootpath/homedir:

    To move the Dftpd directory a few changes need to be made.  In the
    "dftpd.conf" file in the <Dftpd root>/etc directory the entry for 
    "rootpath" must be changed to the new full path of the Dftpd root
    directory.  If using a "default_homedir" that is not contained in
    "rootpath", the path for "default_homedir" must also be changed -- if
    the "default_homedir" begins with "./" it is relative to "rootpath".  In
    the "passwd" file, also in the Dftpd etc directory, the "HomeDir" entries
    for the users may need to be updated.  Any "HomeDir" entries that begin
    with "./" are taken relative to "rootpath".  Otherwise, the user's 
    "HomeDir" is treated as an absolute path.

    If you only want to change the home directory for the site, just update
    the "default_homedir" entry in the "dftpd.conf" file (to change the
    default home directory to use for new users).  Then change the "HomeDir"
    field for whichever users you want to change the home directory for.

    UNIX specific:

        On UNIX systems the "dftpd-start" and "dftpd-stop" scripts, located
        in the Dftpd bin directory, also need to be modified whenever the
        root directory of the server is changed.  In these files, the line 
        that changes directory, "cd <Dftpd root>/bin", needs to be reset to
        the new absolute path of the Dftpd bin directory.
        NOTE: The CWD of the server must always be the <Dftpd root>/bin
        directory.

Debugging:

    If you have difficulties starting the server check the program log file
    (default is dftpd.log) located in the <Dftpd root>/ftp-data/logs 
    directory.  Some likely errors are that the server was unable to listen
    on the specified port (default is port 21), the server could not locate
    the dftpd.conf file, or the rootpath is not properly set.  For login 
    errors check the access log file (default is (ddmmyyyy)_access.log file).
    Another way to help diagnose errors is to run the server in debug mode by
    starting it with the "-d" option (Ex. dftpd -d).  This will run the server
    as a console application and display everything that is happening on the
    screen.  When starting Dftpd in debug mode (with "-d"), make sure it is
    not also running as a service --so the listening port will be available.


------------------------------------------------------------------------------
 DftpdI Installation Notes
------------------------------------------------------------------------------

Pre install:

    To use DftpdI JRE 1.4.0 or higher must be installed.  The Java Runtime
    Environment (JRE) is available for the Windows, Linux, and Solaris
    platforms.  The JRE can be downloaded from http://java.sun.com
    (or directly http://java.sun.com/j2se/downloads.html).  To start DftpdI,
    using the icon on the start menu (or run_dftpdi.bat) in Windows or
    "dftpdi" on UNIX systems, the "java" command must be in your path.    
    In Windows, installing the JRE should automatically add "java" to your
    path.  On UNIX systems you must manually add the java "bin" directory
    to your path (Ex. /usr/java/j2re1.4.1_02/bin).  If "java" is not in your
    path, DftpdI can still be started directly by switching into the dftpdi
    directory and running "/usr/java/j2re1.4.1_02/bin/java dftpdi".
    Similarly in Windows DftpdI can be started by switching into the dftpdi
    directory and running
    ""C:\Program Files\Java\j2re1.4.1_02\bin\java" dftpdi".

Windows:

    Run -> setup-Dftpd_<version>.exe

        DftpdI is installed through the Dftpd installation wizard.  The
        wizard will create an icon to start DftpdI in the Dftpd group in
        the start menu.

    OR

    Extract DftpdI_<version>.zip

        This will create a directory called ./dftpdi.  This directory
        is typically placed in the dftpd directory tree
        (Ex. C:\Dftpd\dftpdi).  DftpdI can be started by running 
        "run_dftpdi.bat" --normally there will be an icon in the
        start menu when the installer is used.

UNIX:

    Extract Dftpd_<version>.tar.gz

        After extracting Dftpd, as described above, there will be a
        sub-directory called "dftpdi" (Ex. /dftpd/dftpdi).

    OR

    Extract DftpdI_<version>.tar.gz

        (Use the same procedure described above for Dftpd)

        This will create a directory called ./dftpdi.  This directory
        is typically placed in the dftpd directory tree
        (Ex. /Dftpd/dftpdi).

Post install:

    By default DftpdI will already have a server entry pointing to the
    localhost (127.0.0.1) using login/pass dftpd/dftpd.  Once the server
    is started, DftpdI should be used to perform the operations described
    in the Dftpd "Post install" section above.


------------------------------------------------------------------------------
 SITE commands 

 - Used for basic server information/administration.
------------------------------------------------------------------------------

SITE ADDIP <username> <IP>

    Add an IP address to a user.

    <username> The username to add.
    <IP>       The IP address to add.

    IPs can contain wildcards (*).
    Note that a user may have a maximum of 10 IP's.

    Example: SITE ADDIP user *.dftpd.com
              SITE ADDIP user 192.168.1.*

SITE ADDUSER <username> <password> <IP#1 - 5>

    Add a user to the site.

    <username> The username to add.
    <password> The password to set for this user.
    <IP#1 - 5> Optional: Up to 5 ips may be specified here.

    After you add a user, use "SITE ADDIP" to add IP's to
    the new account.

SITE ALDN [<num results>] [<local|remote>]

    Display Alltime Downloaders.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE ALUP [<num results>] [<local|remote>]

    Display Alltime Uploaders.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE AUTHMODE <mode>

    Sets the authentication mode.

    <mode> Authentication mode.

    0 = allow clear and SSL connections
    1 = allow SSL connections only

    NOTE: This setting is not written to the site configuration
          file.  If the site configuration file is modified or the
          server is restarted, this setting will be overwritten.

SITE CERTINFO
    
    Displays SSL certificate information.

SITE CHANGE <username> <field> <value>
SITE CHANGE { <user1> <user2> } <field> <value>
SITE CHANGE =<group> <field> <value>
SITE CHANGE <* or username w/wildcards> <field> <value>

    Change Field For a User

    Fields:  comment
             credits
             flags
             group_slots # [#]
             homedir
             idle
             permissions
             ratio
             max_dlspeed
             max_ulspeed
             max_sim_down
             max_sim_up
             num_logins # [#]
             startup_dir
             tagline
             time_limit
             timeframe # #
             wkly_allotment #

SITE CHGRP <username> <group>
    
    Adds/Removes a user from a group.

    <username> The username to edit.
    <group>    The group to toggle for this user.

    SITE CHGRP <username> by itself to list a user's affils.

    NOTE: Users in the "Anonymous" group can login using any password

SITE CHMOD [-R] <mask> <pathname>

    Changes the permissions (mode) for files/directories.

    <mask>      mode for the path.
    <pathname>  path to set the mode for.

    The -R option will change the mode for all files and
    directories recursively.  Only SiteOps can use the -R
    option.

    Ex. SITE CHMOD 444 file.zip
    Ex. SITE CHMOD 777 /site/incoming

SITE CHOWN [-R] <user>:<group> <pathname>
    
    Changes the user/group that owns a file.

    <user>      user to set as the owner.
    <group>     group to set as the owner.
    <pathname>  path to set the owner for.

    The -R option will change ownership for all files and
    directories recursively.  Only SiteOps can use the -R
    option.

    Ex. SITE CHOWN admin:SiteOps file.zip
    Ex. SITE CHOWN admin file.zip
    Ex. SITE CHOWN :SiteOps file.zip

SITE CHPASS <username> <password>

    Change a specified user's password.

    <username> Name of the user to change the password for.
    <password> New password for the specified user.

SITE COPY <source> <destination>

    Copy files or a directory.  The source path can contain
    wildcards '*'.

    <source>       The source path to copy.
    <destination>  The destination path of the copy.

    NOTE: No owner will be set for the copied files.
          Use SITE CHOWN to set ownership.  Also, this
          command ignores filesystem permissions.

    You can enclose <source> in braces '{' '}' if you have
    spaces in the path.

SITE DAYDN [<num results>] [<local|remote>]

    Display the top downloaders for today.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE DAYUP [<num results>] [<local|remote>]

    Display the top uploaders for today.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE DELIP <username> [<IP#>|<IP>]

    Delete an IP from a user.

    <username> The username to delete.
    <ip#>      The IP NUMBER to delete.
    <IP>       The exact IP to delete.

    You can get the IP list using the "site user <username>" command.
    Note that a user may have a maximum of 10 IP's.

SITE DELTREE <directory>

    Delete a directory tree (recursively).

    <directory> The directory tree to delete (can contain wildcards).

    After you delete a directory tree,  you may later restore the
    directory by using "SITE RESTREE".

SITE DELUSER <username>

    Delete a user from the site.

    <username> The username to remove (can contain wildcards).

    After you delete a user,  you may later
    reinstate their account by using "SITE READD".

SITE DIRINFO [-R] <directory>

    Display information for a directory.

    <directory> The directory to display information for.

    The -R option will display the information for the entire
    directory tree (including all sub-directories).

SITE DIRMIRROR [<MirrorID>] <directory>

    Changes/Displays the mirror ID for a directory.

    If the <MirrorID> parameter is omitted, the current mirrod ID for
    the specified directory will be displayed.

    <MirrorID>  Mirror ID to use for the directory.
                0 = Do not use mirroring for the directory
    <directory> The name of the directory to set the mirror ID for.

    Example: SITE DIRMIRROR 2 directory1
             (This will associate the mirror entry, with MirrorID = 2,
             with directory1 or any of its subdirectories)

    To list MirrorIDs, use the SITE REMOTE MIRRORS command.

SITE DISKINFO [<directory>]

    Display information for the disk containing the specified directory.
    By default the current directory will be used.

    <directory> Directory path to check the diskspace for.

SITE DUPE [-max <num>] [-from <mmddyy>] [-to <mmddyy>] <filename> [<filename2> ...]

    Searches the dupe log for the specified filenames.  The filenames
    can contain wildcards.  The filenames used for searching are case
    sensitive.  By default the max number of returned results is 20.

    Example: SITE DUPE -from 010199 -to 010100 MyFile*.zip MyFile*.txt
             this will return all files starting with "MyFile" and
             ending with ".zip" or ".txt"

SITE DUPEENABLE <directory>

    Enables/Disables dupe checking for a directory.

    <directory> The directory to enable/disable dupe checking for. 

SITE FLAGS [<username>]

    Display a user's flags.

    <username> User to display flags for (default is current user).

SITE FRATIO [<ratio>] <file/directory>

    Changes/Displays the ratio for a file or directory.

    If the <ratio> parameter is omitted, the current ratio for the specified 
    file or directory will be displayed.

    <ratio>          ratio for the file or directory.
                     0 = Unlimited (Leech), -1 = Default (user's ratio)
    <file/directory> the name of the file or directory to set the ratio for.

    Example: SITE FRATIO 2 directory1
             (This will give users 2x the size of the upload credits when
             uploading to directory1 or any of its subdirectories)

             SITE FRATIO 0 file1
             (This will make it free to download file1 --no credits will be
             deducted for downloading this file)

    NOTE: Directory ratios can be [-1-9].  File ratios can only be 0 or -1.
          Subdirectories will use the ratio of the first non-default ratio
          that is found when going up the directory tree.

SITE FSCK
    
    Runs a filesystem check (removes defunct entries in the DFTPD filesystem).

SITE FSINFO
    
    Displays filesystem information.

SITE FSSYNC

    Synchronizes the filesystem in memory with the FS (.fs) files.

SITE GADDUSER <group> <username> <password> <IP#1 - 5>

    Adds a user to the site and changes that user to the specified group.

    <group>    The group to put the user in.
    <username> The username to add.
    <password> The password to set for this user.
    <IP#1 - 5> Optional: Up to 5 ips may be specified here.

    After you add a user, use "SITE ADDIP" to add IP's to
    the new account.

    NOTE: Users in the "Anonymous" group can login using any password.

SITE GENKEYS

    Create a new SSL certificate and keys (certificate information
    is taken from cert.conf).

SITE GINFO <GROUP>

    Shows detailed information on a group.

    <GROUP> Group to display information on.

SITE GIVE <username> <kbytes> [<message>]
    
    Gives credits to a user (taken from you --if not an admin).
    (NOTE: The message part is optional)

    <username>  User to give credits to.
    <kbytes>    Number of credits (Kb) to give.
    <message>   Message to send to the user given the credits.

    Example: SITE GIVE user 1000
             (This would give user 'user' 1 meg of your credits)

SITE GPAD [<num results>] [<local|remote>]

    Display the alltime group downloads.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE GPAL [<num results>] [<local|remote>]

    Display the alltime group uploads.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE GPMD [<num results>] [<local|remote>]

    Display the top group downloaders this month.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE GPMN [<num results>] [<local|remote>]

    Display the top group uploaders this month.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE GPWD [<num results>] [<local|remote>]

    Display the top group downloaders this week.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE GPWK [<num results>] [<local|remote>]

    Display the top group uploaders this week.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE GROUP [<group>]

    Shows your current groups or leaves/joins a group.

    <group> Group to leave/join.

    Ex. SITE GROUP
        This will display the groups you are in.
    Ex. SITE GROUP ftp
        With this you will join/leave group 'ftp'.

    NOTE: Users in the "Anonymous" group can login using any password.

SITE GROUPS

    Shows the available groups.

SITE GRPADD <group> [<description>]

    Add a new group to the site.

    <group> The group to add.
    [<description>] Description of the group (optional).

    Example: SITE GRPADD MyGroup My Group.
             This will add the group MyGroup with the description
             "My Group.".

SITE GRPDEL <group>

    Delete a group from the site.

    <group> The group to delete.

SITE GRPLOG <group> <logins>
    
    Change login restrictions for a group (number of total group logins).

    <group>  The group to edit.
    <logins> Maximum number of users logged in from this
             group at the same time.

    Example: SITE GRPLOG STAFF 20
             This will allow the group STAFF to have a maximum of
             20 users logged in at any one time.

SITE GRPNFO <group> <description>

    Change the description for a group.

    <group>       The group to edit.
    <information> The description of the group.

SITE GRPREN <groupname> <NEWgroupname>

    Rename a group.

    <groupname>    The group to rename.
    <NEWgroupname> The new name for the group.

SITE HELP [<command>]

    Displays a message describing all the SITE commands.

SITE IDLE [<seconds>]
    
    Display/Set the idle timeout.

    <seconds> Number of seconds to set the idle timeout to.

SITE KICK <user>

    Kick a user from the site.

    <user> The user to kick (can contain wildcards).

    To list Users Online, use the SITE WHO.

SITE KILL <pid>

    Kill a pid (connection).

    <pid> The PID to kill.

    To list PIDs, use the SITE SWHO command.

SITE LINK <targetdir> <sourcedir>

    Create a directory link (virtual directory).

    <targetdir>  The name of the link.
    <sourcedir>  The existing directory to create a link to.

    To specify an absolute source directory use -A<sourcedir>
    Ex. SITE LINK incoming_link -AD:\incoming
    Use "SITE RMLINK" to remove a link.

    You can enclose <targetdir> in braces '{' '}' if you have spaces in
    the name.
    Ex. SITE LINK {dir name} -AD:\incoming

SITE LINKS

    List directory links (virtual directories).

SITE LOGINS [<ndaysold>] [<searchstring>]

    Display failed logins.

    <ndaysold>     Max number of days back to search (default = 0, infinite).
    <searchstring> String to search for in the log data (case-sensitive).

SITE MONTHDN [<num results>] [<local|remote>]

    Display the top downloaders for this month.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE MONTHUP [<num results>] [<local|remote>]

    Display the top uploaders for this month.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE MSG READ                                   - read your msgs
SITE MSG SAVE                                   - move msgs to inbox
SITE MSG PURGE                                  - dele msgs in trash
SITE MSG TREAD                                  - read msgs in trash
SITE MSG <username> <message>                   - send a message
SITE MSG { <user1> <user2> } <message>          - send to mult users
SITE MSG =<group> <message>                     - send msg to group
SITE MSG <* or username w/wildcards> <message>  - send msg to every1

    Send a message to a user.

SITE NEW [<num results>] [<basedir>]

    Display the newest created directories in a specified directory tree.

    <num results> Max number of results to display.
    <basedir>     Base of the directory tree to display.

    By default the max number of results is 10 and the base directory is
    the current directory.

    NOTE: This list is ordered by when the directory was added to the DFTPD
          filesystem, which is not necessarily when it was created.

SITE NUKE <directory> <multiply> <message>

    Nuke a directory (remove the directory and deduct credits from the uploader).

    <directory> The directory to nuke.
    <multiply>  The nuke multiplier value.  i.e. "5" would nuke
                5x the filesize from the offenders credits.
    <message>   The message to put in the nukelog.

    NOTE: You must enter the ENTIRE directory name.  It IS case-sensitive.
          You can enclose the directory in braces if you have spaces in the
          name.
    Ex. site NUKE {directory name} 1 I dont like it

SITE NUKELOG [<ndaysold>] [<searchstring>]

    Show the nuke log (log of previously nuked directories).

    <ndaysold>     Max number of days back to search (default = 0, infinite).
    <searchstring> String to search for in the log data (case-sensitive).

SITE NUKETOP [<num results>] [<local|remote>]

    Display the top nuked users.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE PASSWD <password>

    Change your password.

    <password> New password for the current user.

SITE PERMISSIONS [<username>]

    Display a user's permissions.

    <username> User to display permissions for (default is current user).

SITE PURGE [<username>]

    Purge deleted users (deleted with SITE DELUSER).

    <username> User(s) to purge (can contain wildcards).

    By defaule ALL deleted users will be purged.

    Ex. SITE PURGE
        This will remove ALL users who have the deleted (6) flag.
    Ex. site purge user1
        This will remove just "user1" and leave the rest of the deleted users.

SITE PURGETREE [<directory>]
    
    Purge deleted directory trees (deleted with SITE DELTREE).

    <directory> Directory(s) to purge (can contain wildcards).

SITE RATIO <username> <ratio>

    Set a user's ratio.

    <username>  User to set the ratio for.
    <ratio>     Ratio for the user [0-9].  0 = Unlimited (Leech).

    Example: SITE RATIO user 3
             (This allows the user to download 3 times as much as upload)

SITE READD <username>

    Readd deleted user to the site (deleted with SITE DELUSER).

    <username> The username to re-add (can contain wildcards).

    Note that in order for a user to be readded, they must have been
    deleted with the SITE DELUSER command.

SITE REMOTE

    See "SITE REMOTE" section for more information.

SITE RENUSER <old_username> <new_username>

    Renames a user.

    <old_username> The user to rename.
    <new_username> The new name for the user.

    NOTE: The password for the user will become unusable once
          the user is renamed.  Use SITE CHPASS to reset the
          password.

SITE REQFILLED <#>

    Fill a request.

    <#> Request number to mark as filled.

     Example: site reqfilled 7
              (this will remove request number 7 from the list)

SITE REQLOG [<ndaysold>] [<searchstring>]

    Show the log of filled requests.

    <ndaysold>     Max number of days back to search (default = 0, infinite).
    <searchstring> String to search for in the log data (case-sensitive).

SITE REQUEST [<request>]
    
    View requests or make a request.

    <request> Title of the request.

SITE RESTREE <directory>

    Restore a deleted directory tree (deleted with SITE DELTREE).

    <directory> The directory tree to restore (can contain wildcards).

    Note that in order for a directory tree to be restored, it must have
    been deleted with the SITE DELTREE command.

SITE RMLINK <targetdir>

    Remove a directory link --permanently (added with SITE LINK).

    <targetdir>  The name of the link to remove.

SITE RULES

    Show site rules.

SITE SEARCH [-f] [-l] [-<maxresults>] [{<rootdir>}] <string>

    Searches the site for a specified file/directory name.

    <maxresults> Max number of results that will be returned.
    <rootdir>    The root directory of the search (default is CWD).
    <string>     The string to search for (can contain wildcards).

    The SITE SEARCH command searches the site contents for directory
    names that match the specified <string>.  If the -f option is
    specified, filenames will also be searched.  If the -l option is
    specified, directory links will be followed.  The search is not
    case-sensitive and can contain wildcards.  If a <rootdir> is
    specified, the search will start at the specified directory.
    Otherwise, the search begins at the CWD.  The <rootdir> parameter
    must be inside "{ }" --if specified.  If <maxresults> is specified,
    the number or results returned will be limited to the specified
    number.  By default, the max number of results is 20.  Set
    <maxresults> to 0 for unlimited.

    Ex. SITE SEARCH {/} halflife*
    Ex. SITE SEARCH -f -10 halflife*.zip

SITE SEEN <user>
    
    Check when a user was last online.

    <user> User to get last online time for.

    This will display the last time <user> logged in.

SITE SHOW <Filename>

    Displays the userfile in raw format.

    <Filename> Userfile to display (ascii/txt file).

SITE SHUTDOWN <level>

    Sets the shutdown level for the server.

    <level> Shutdown level.

    0 = server open
    1 = deny all but siteops

    NOTE: This setting is not written to the site configuration
          file.  If the site configuration file is modified or the
          server is restarted, this setting will be overwritten.

SITE STATE <username>

    Displays the current state of an online user.

    <username> User to display the current state for.

    NOTE: This command only applies to users that are
          currently online.

SITE STATS [<username>]

    Show the user's statistics.

    <username> User to show statistics for (default is current user).

SITE SWHO

    Alternative who (displays pid for individual connections).

SITE SYSLOG [<ndaysold>] [<searchstring>]

    Show the user changes log.

    <ndaysold>     Max number of days back to search (default = 0, infinite).
    <searchstring> String to search for in the log data (case-sensitive).

SITE TAGLINE [<tagline>]

    Shows/Sets your tagline.

    <tagline> New tagline for the current user.

SITE TAKE <username> <kbytes> [<message>]

    Take credits from a user.
    (NOTE: The message part is optional)

    <username>  User to take credits from.
    <kbytes>    Number of credits (Kb) to take.
    <message>   Message to send to the user.

    Example: SITE TAKE 1000 user
             (This would take 1meg of credits from user)

SITE TIME

    Show the local and GMT time for the server.

SITE TRAFFIC

    Display total uploads/downloads by all users.

SITE UNDUPE <filename>

    Remove filename(s) from the dupe log.

    <filename> Name of the file to remove from the dupe log.

    Example: SITE UNDUPE file*.zip
            (this will undupe file1.zip, file2.zip, etc)
            SITE UNDUPE filename.zip 

SITE UNNUKE <directory> <multiply> <message>
    
    Unnuke a directory.

    <directory> The directory to unnuke.
    <multiply>  The unnuke multiplier value.  i.e. "5" would give
                back 5x the filesize to the nukees credits.
    <message>   The message to put in the nukelog.

    NOTE: You must enter the original directory name, not the
          NUKED-directory.  It IS case-sensitive.

SITE UPTIME

    Displays the amount of time the server has been running.

SITE USER [<username>]

    Show users on the site (Type username to see user's stats).

    <username> Name of the user to show statistics for.

SITE USERDATA <username>

    Display the user file (along with the encrypted password).

    <username> Name of the user to display data for.

    This displays the contents of the userfile over the control
    connection. 

SITE USERS <keyword>
    
    List users on the site (all user accounts).

    Keywords:  <flag>, =<group>, remote, local.

    If keyword is one character long, it is considered a flag, and only
    users with that flag will be listed.

    If keyword starts with character '=', it is considered a group, and
    only users in that group will be listed.

    Otherwise keyword specifies a username, which can contain wildcards.

    By default all users are listed.

SITE USERSYNC

    Synchronizes the user list in memory with the user files.

    NOTE: This is usually not necessary.

SITE VERS

    Show FTP daemon version (and author(s)).

SITE WELCOME

    Show the welcome message.

SITE WHO
    
    See who's online.

SITE WIPE <file/directory>
    
    Delete files/directories --permanently (accepts wildcards).

    <file/directory> File or directory to delete (can contain wildcards).

    Example: SITE WIPE *.txt
             This will delete all the files ending in .txt in the current
             directory.

             SITE WIPE dir1
             This will delete directory dir1 and everything inside it.

    WARNING: The files/directories deleted using SITE WIPE cannot be
             restored.

SITE WKDN [<num results>] [<local|remote>]
    
    Display the top downloaders for this week.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.

SITE WKUP [<num results>] [<local|remote>]
    
    Display the top uploaders for this week.

    <num results>  Max number of results to display.
    <local|remote> Display either "local" or "remote" users only.


------------------------------------------------------------------------------
 SITE REMOTE commands

 - Used for distributed server information/administration.
------------------------------------------------------------------------------

SITE REMOTE ADDALIAS <alias> <IP> <port> <username> <password> [<rmotepath>]

    Add an alias for a remote site (vitual dir linked to another FTP server).

    <alias>      The local path that will alias the remote path.
    <IP>         The address of the remote server.
    <port>       The port the remote server is running on.
    <username>   The username to use on the remote server.
    <password>   The password to use on the remote server.
    <remotepath> Optional: The absolute path on the remote server

    Use "SITE REMOTE CHANGE" to change the properties of an alias.

    You can enclose <alias> in braces '{' '}' if you have spaces in
    the name.

SITE REMOTE ADDMIRROR <MirrorID> <weight> <alias>

    Add an alias to a mirror entry.

    <MirrorID>  ID of the mirror entry to add the alias to.
                (if MirrorID = 0 a new entry will be created)
    <weight>    Weight to assign the alias.
    <alias>     Alias for the site to add as a mirror.
                (Alias = LOCAL -> this site)

    To list MirrorIDs, use the SITE REMOTE MIRRORS command.

SITE REMOTE ALIAS <alias>

    Show information about an alias.

    <alias> The local path that will alias the remote path.

SITE REMOTE ALIASES

    Display the list of aliases.

SITE REMOTE CHANGE <alias> <field> <value>

    Change a field for an alias.

    Fields:  address
             port #
             username
             password
             remote_path
             server_type
             num_logins #
             share_users
             encmode #
             timeout #

    You can enclose <alias> in braces '{' '}' if you have spaces in
    the name.

SITE REMOTE CONNECTIONS [<alias>]

    List connections to aliased sites (current open connections).

    <alias>  Specific alias to see connections for (default is all aliases).

SITE REMOTE DEFMIRROR <MirrorID> <alias>

    Set the alias to use as the default mirror site for the mirror
    entry.  There must always be 1 (and only 1) default mirror site.

    <MirrorID>   ID of the mirror entry to set the default site for.
    <alias>      Alias for the site to use as the default mirror site.
                 (Alias = LOCAL -> this site)

    To list MirrorIDs, use the SITE REMOTE MIRRORS command.

SITE REMOTE DELALIAS <alias>
    
    Delete an alias --permanently.

    <alias>  The local path that will alias the remote path.

SITE REMOTE DELMIRROR <MirrorID> <alias>

    Delete an alias from a mirror entry --permanently.  When the
    last alias is deleted from a mirror entry the entry will be
    removed.

    <MirrorID>  ID of the mirror entry to remove the alias from.
    <alias>     Alias for the site to remove.
                (Alias = LOCAL -> this site)

    To list MirrorIDs, use the SITE REMOTE MIRRORS command.

SITE REMOTE DISCONNECT <alias>

    Disconnect all the connections to an alias.

    <alias> The alias to disconnect all connections from.

    To list connections, use the SITE REMOTE CONNECTIONS command.

SITE REMOTE HELP [<command>]

    Displays a message describing all the SITE REMOTE commands.

SITE REMOTE KILL <SDsc>

    Kill a specific connection to an alias.

    <SDsc> The socket descriptor to kill.

    To list SDescs, use the SITE REMOTE CONNECTIONS command.

SITE REMOTE LOGIN <username> <timestamp> <homeip> <homeport>

    Log a user into an aliased site (DFTPD only).

    <username>   the name of the user to be logged in.
    <timestamp>  the time the user information was last updated.
    <homeip>     the IP of the server the user is comming from.
    <homeport>   the PORT of the server the user is comming from.

    NOTE: This command should not be used manually.

SITE REMOTE MIRRORS

    Display the list of mirrors.

SITE REMOTE SHAREDCONNECTIONS
    
    List connections from shared users (DFTPD only).

SITE REMOTE SHAREDLOGIN <username> <homeip> <homeport>
    
    Log in a shared user (DFTPD only).

    <username>   the name of the user to be logged in.
    <homeip>     the IP of the server the user is comming from.
    <homeport>   the PORT of the server the user is comming from.

    NOTE: This command should not be used manually.

SITE REMOTE SHAREDQUIT <username> <homeip> <homeport>
    
    Log Out a Shared User (DFTPD only).

    <username>   the name of the user to be logged out.
    <homeip>     the IP of the server the user is comming from.
    <homeport>   the PORT of the server the user is comming from.

    NOTE: This command should not be used manually.

SITE REMOTE TUNNEL <alias> <command>
    
    Send a FTP command directly to an aliased site.

    <alias>   The local path that aliases the remote path.
    <command> The command to forward to the remote machine.

    You can enclose <alias> in braces '{' '}' if you have spaces in
    the name.

SITE REMOTE UPDATE <username> <timestamp> <homeip> <homeport>
    
    Update the information for a user (DFTPD only).

    <usernam>    The name of the user whos file should be updated.
    <timestamp>  The time the user information was last updated.
    <homeip>     The IP of the server the user is comming from.
    <homeport>   The PORT of the server the user is comming from.

    NOTE: Set <timestamp> to 0 to force an update.
          This command should not be used manually.


------------------------------------------------------------------------------
 Dftpd Configuration options  
 
 - Used to configure the server (set in dftpd.conf).
------------------------------------------------------------------------------

# Server shutdown: 1=deny all but siteops, 2=deny all, 0=sever open
#shutdown <0|1|2>
shutdown                0

# Authentication mode.
# 0 = allow clear and SSL connections
# 1 = allow SSL connections only
#auth_mode <0|1>
auth_mode               0

# Port the server will listen on (default 21).
# NOTE: The server must be restarted to change this.
#server_port <port>
server_port             21

# Port the implicit SSL server will listen on.
# By default the server will not listen for implicit SSL connections.
# The standard implicit SSL listening port is 990.
# NOTE: The server must be restarted to change this.
#server_sslport <port>
#server_sslport          990

# The IP address the server should listen on (bind to).  By default the
# server will listen on all IPs (bind to all IPs).
# NOTE: The IP must be in dotted notation (Ex. 127.0.0.1).
#       The server must be restarted to change this.
#bind_ip <xxx.xxx.xxx.xxx>
#bind_ip                 127.0.0.1

# Login prompt to display to the user
#login_prompt <login string>
login_prompt            login

# Long name for the site
#sitename_long <long site name>
sitename_long           My FTP site

# Short name for the site
#sitename_short <short site name>
sitename_short          my-ftpd

# The root path of the server.
# This must come before all other relative paths.
#rootpath <full path to Dftpd root>
rootpath                /dftpd

# default_homedir is used to set the homedir for newly created users.
# If the path starts with "./", the path will be taken relative to the
# rootpath.  Otherwise the path will be treated as absolute.
#default_homedir <home directory path>
default_homedir         ./site/

# Path to the server data --always relative to the "rootpath".
#datapath <data directory path>
datapath                /ftp-data

# Settings for site NUKE command.  The first parameter is a prefix string
# to use for nuked directories (Ex. NUKED-).  The prefix string is added
# to the directory name when it is nuked.  The second parameter specifies
# how the nuke command should behave.  0 -> delete all nuked directories
# (permanently removes all files and dirs).  1 -> delete all files, but
# keep directories.  2 -> keep files and directories.  Using 2 enables
# unnuke to restore the nuked directory.  The third parameter is used to
# determine if a directory should be treated as empty.  If the total size
# of the files in the directory are less than or equal to this value, the
# directory will be treated as empty.
#nukedir_style <prefix> <0|1|2> <kbytes>
nukedir_style           NUKED-      2   0

# The amount of kbytes that will be removed from the user if
# the nuked directory is empty.
#nuke_empty <kbytes>
nuke_empty              5000

# The highest multiplier a nuker can use.  If nuke_mult_max is set
# to 0, there is no limit.
#nuke_mult_max <multiplier>
nuke_mult_max           5

# Sets the number of days back to check for dupes.  Setting dupe_check
# to 0 will disable dupe-checking.  Dupe checking is always case insensitive.
#dupe_check <ndays>
dupe_check              30

# Specifies filemasks for files that should not be added to the dupe log.
# Dupe checking will not apply to these files.  Use [:space:] to enter
# filemasks with spaces.  The mask are always treated as case insensitive.
# Multiple ignore_type commands can be used.
#ignore_type <filemask> [<filemask> ...]
ignore_type *.txt *.nfo readme
ignore_type *.doc

# Max number of users allowed on the site, max allowed when full
# (must have flag 1 or 4)
#max_users <max users> <max when full>
max_users               15 3

# Will resolve an IP. If set to 0 will not bother resolving the IPs to names.
#resolve_dns <0|1>
resolve_dns             1

# Filesystem synchronization cycle time (minutes).  This is the
# frequency at which the filesystem in memory will be synchronized with
# the *.fs files (located in ROOTPATH/fs).  This operation can also be
# performed manually using the "SITE FSSYNC" command (must be siteop).
# If fs_sync_freq is set to 0, synchronization will only be done when
# the server is stopped.
#fs_sync_freq <minutes>
fs_sync_freq            60

# Max transfer speed, in Kb/sec, for the site (0 = unlimited)
#speed_limit <DL_LIMIT> <UP_LIMIT>

# Specifies who is allowed to use FXP for passive transfers (PASV).
# Users that are allowed to use FXP can make data connections on
# a different IP address than their control connection.  Use
# "allow_fxp_pasv 0" to completely disable FXP for passive transfers.
# NOTE:  Passive FXP must be enabled on servers that allow remote
#        connections.
# EXAMPLE: allow_fxp_pasv 1 2 =SiteOps =STAFF -admin
#          This will allow passive mode FXP to be used by users with
#          the flags 1 or 2, in the SiteOps or STAFF group, or the
#          user named admin.
#          allow_fxp_pasv !8 *
#          This will allow passive mode FXP to be used by all users
#          except users with the 8 flag.
#allow_fxp_pasv <*|flag|-user|=group>
allow_fxp_pasv *

# Same as allow_fxp_pasv except applies to active transfers (PORT).
#allow_fxp_port <*|flag|-user|=group>
allow_fxp_port 0

# Sets if the PORT command (active mode transfers) can specify a data
# port below 1024 (standard service ports range).
# If allow_service_ports is set to 0, the PORT command will only allow
# ports greater than 1024 to be used.
#allow_service_ports <0|1>
allow_service_ports 0

# Range of ports to use for PASV mode data connections (default = any port).
# If <high> is 0 any port will be used (OS will assign ports).
# NOTE: When a range of ports is specified with the "pasv_port_range" option,
#       only <high>-<low>+1 data connections will be able to be made at one
#       time.  Also, <low> should be at least greater than 1024 to avoid
#       conflicts with standard services (in general make <low> > 5000).
#pasv_port_range <low> <high>

# IP address the server should use when making data connections
# (this will be the address returned in the PASV command).
# This is useful when the server is behind a firewall and is assigned an
# internal IP address.
# By default the IP address of the network interface the client is 
# connected to is used.
#server_ip <xxx.xxx.xxx.xxx>


#########################################################################
# Custom commands
#

# The following specifiers can be used in the arguments passed in EXEC
# mode.
# %u = username
# %y = group
# %R = root directory of the server (rootpath)
# %d = absolute path of the user's CWD
# %Y = permissions
# %Z = flags

# Used to define a custom SITE command.  There is no limit to how many
# site_cmd can be specified.  The first argument can be D, G, or L:
#    D -> the command should be forwarded to aliased (remote) DFTPD sites.
#    G -> the command should be forwarded to any aliased site.
#    L -> the command should not be forwarded (local only).
# The second argument for "site_cmd" is the name of the custom command.
# The name of the custom command can only be 1 word --with no spaces.
# The command name is not case sensitive.  The third parameter can be one
# of three posibilities:
#    EXEC will execute a script/binary.
#    TEXT will display a text file.
#    IS   will execute the internal SITE command specified afterwards.
# The fourth parameter is the name of the script/binary, text file, or
# internal command depending on the type of custom command.  The path for
# the fourth parameter is relative to the root directory (rootpath).  A
# fifth argument is only used with the EXEC and IS options to specify 
# arguments to pass to the script/binary or internal command.  If multiple
# arguments need to be passed, use [:space:] between the arguments.
# NOTE: EXEC commands that specify a file ending in .sh will be passed
#       to the "bash" program.  Files with any other extension will be
#       run as a binary.
#site_cmd <remote mode> <cmd name> <exec/text/is> <filename> [optional arg]
site_cmd D NFO EXEC /bin/nfo.sh %R[:space:]%d
site_cmd D ZIPLIST EXEC /bin/ziplist.sh %R[:space:]%d
site_cmd D ZIPCHK EXEC /bin/zipchk.sh %R[:space:]%d

# Sets the permissions for a custom SITE command.  After a command is
# specified with site_cmd the permissions for the custom command should
# be set with "custom".
# NOTE: When using the IS mode, only the specified permissions are used.
#       The permissions for the internal command will not be applied.
# Example1: site_cmd L MYUSERS IS USERS
#           custom MYUSERS *
# (In this example all users will be allowed to use the "SITE MYUSERS"
#  command.  However, the permissions for "SITE USERS" will remain
#  unchanged.)
# Example2: site_cmd L TEST EXEC /bin/test.sh arg1[:space:]arg2
#           custom test =SiteOps 1 2 -admin
#custom <cmd name> <*|flag|-user|=group>
custom NFO !8 *
custom ZIPLIST !8 *
custom ZIPCHK !8 *


#########################################################################
# Custom scripts
#

# Custom scripts (or binaries) to be executed before/after any command.
# The first parameter is the name of the command before/after which to
# execute the script.  The second parameter can be either "pre" or "post",
# to run before or after, respectively. The third parameter is the full
# path to the script to be executed, relative to the rootpath of the site.
# If using a command with a space in it, like a SITE command, you need
# to use "[:space:]" between the words (Ex: SITE[:space:]WHO).
# Both "pre" and "post" scripts will be passed 4 parameters:
# $1 = full command string the user used
# $2 = user's login name
# $3 = user's group
# $4 = user's absolute CWD path
# "Post" scripts cannot echo anything to the client --they are executed
# after the response is sent to the client.  If the last line echoed by
# a "pre" script starts with "4xx" or "5xx", or if the script can't be
# executed, the FTP command that should run after the script will not be
# executed.  Any lines that are echoed by a "pre" script should contain
# the proper FTP prefix code.  In general successful results should start
# with "2xx" and failure should start with "5xx" (Ex. "200- Success").
# Also, when multiple lines are sent back to the client, the intermediate
# lines should start with "xxx-" (Ex. 200- success) and the final line
# should start with "xxx " (Ex. 500 Error).  Only error responses should
# contain a final line since successful responses will be followed by the
# response to the FTP command that was specified.
# NOTE: EXEC commands that specify a file ending in .sh will be passed
#       to the "bash" program.  Files with any other extension will be
#       run as a binary.
#cscript <cmd name> <when to run> <path/filename>


#########################################################################
# Commands used to set who can use what SITE commands
#

# Default SITE flags:
# ADDIP       "1 2 7"
# ADDUSER     "1 2 7"
# ALDN        "!8 *"
# ALUP        "!8 *"
# AUTHMODE    "1"
# CHANGE      "1 7"
# CHGRP       "1 7"
# CHMOD       "*"
# CHOWN       "1"
# CHPASS      "1 2 7"
# COPY        "1"
# DAYDN       "!8 *"
# DAYUP       "!8 *"
# DELIP       "1 2 7"
# DELTREE     "1"
# DELUSER     "1 2 7"
# DIRINFO     "*"
# DIRMIRROR   "1"
# DISKINFO    "1 J"
# DUPE        "1"
# DUPEENABLE  "1"
# FLAGS       "!8 *"
# FRATIO      "1"
# FSCK        "1"
# FSSYNC      "1"
# GADDUSER    "1 7"
# GENKEYS     "1"
# GINFO       "1 2 H"
# GIVE        "1 G"
# GPAD        "!8 *"
# GPAL        "!8 *"
# GPMD        "!8 *"
# GPMN        "!8 *"
# GPWD        "!8 *"
# GPWK        "!8 *"
# GROUP       "!3 *"
# GROUPS      "!8 *"
# GRPADD      "1"
# GRPDEL      "1"
# GRPLOG      "1"
# GRPNFO      "1 2"
# GRPREN      "1"
# HELP        "!8 *"
# IDLE        "1 I"
# KICK        "1 D"
# KILL        "1 E"
# LINK        "1"
# LINKS       "1"
# LOGINS      "1"
# MONTHDN     "!8 *"
# MONTHUP     "!8 *"
# MSG         "!8 *"
# NEW         "!8 *"
# NUKE        "1 A"
# NUKELOG     "1 A B 7"
# NUKETOP     "!8 *"
# PASSWD      "!8 *"
# PERMISSIONS "!8 *"
# PURGE       "1"
# PURGETREE   "1"
# RATIO       "1 2 7"
# READD       "1 2 7"
# RENUSER     "1 7"
# REQFILLED   "!8 *"
# REQLOG      "1 A B 7"
# REQUEST     "!8 *"
# RESTREE     "1"
# RMLINK      "1"
# RULES       "!8 *"
# SEEN        "!8 *"
# SEARCH      "!8 *"
# SHOW        "1"
# SHUTDOWN    "1"
# STATE       "1 E"
# STATS       "!8 *"
# SWHO        "1 E"
# SYSLOG      "1"
# TAGLINE     "!8 *"
# TAKE        "1 F"
# TIME        "!8 *"
# TRAFFIC     "!8 *"
# UNDUPE      "1 C"
# UNNUKE      "1 B"
# UPTIME      "!8 *"
# USER        "!8 *"
# USERDATA    "1 R"
# USERS       "1 H"
# USERSYNC    "1"
# VERS        "!8 *"
# WELCOME     "!8 *"
# WHO         "!8 *"
# WIPE        "1"
# WKDN        "!8 *"
# WKUP        "!8 *"
#
# Default SITE REMOTE flags:
# REMOTE[:space:]ADDALIAS           "1"
# REMOTE[:space:]ADDMIRROR          "1"
# REMOTE[:space:]ALIAS              "1"
# REMOTE[:space:]ALIASES            "1"
# REMOTE[:space:]CHANGE             "1"
# REMOTE[:space:]CONNECTIONS        "1"
# REMOTE[:space:]DEFMIRROR          "1"
# REMOTE[:space:]DELALIAS           "1"
# REMOTE[:space:]DELMIRROR          "1"
# REMOTE[:space:]DISCONNECT         "1"
# REMOTE[:space:]HELP               "!8 *"
# REMOTE[:space:]KILL               "1"
# REMOTE[:space:]LOGIN              "R"
# REMOTE[:space:]MIRRORS            "1"
# REMOTE[:space:]SHAREDCONNECTIONS  "1"
# REMOTE[:space:]SHAREDLOGIN        "R"
# REMOTE[:space:]SHAREDQUIT         "R"
# REMOTE[:space:]TUNNEL             "1"
# REMOTE[:space:]UPDATE             "R"

# The first argument specifies the SITE command to set flags for.  The
# remaining arguments specify the flags required to access the command.
# The flags arguments can also specify specific users and groups to
# allow/disallow.  To specify a user use -<username> to specify a group
# use =<groupname>.  '*' is used to specify all users.  To disallow
# flags, users, or groups add a '!' before the flag, username, or
# groupname.  The flags are processed in order (from left to right) until
# a match is found (either allow or disallow).  For example, specifying
# "!8 *" will first reject any user with the '8' flag and then allow
# anybody else.  The flags specified with site_flags will replace the
# default flags for the command.
#site_flags <SITE command> <flags>


#########################################################################
# Commands used for logging configuration
#

# Formatting string for the log date field
#  %a = abbreviated weekday name according to the current locale
#  %A = full weekday name according to the current locale
#  %b = abbreviated month name according to the current locale
#  %B = full month name according to the current locale
#  %d = day of the month as a decimal number (range 01 to 31)
#  %H = hour as a decimal number using a 24-hour clock (range 00 to 23)
#  %I = hour as a decimal number using a 12-hour clock (range 01 to 12)
#  %j = day of the year as a decimal number (range 001 to 366)
#  %m = month as a decimal number (range 01 to 12)
#  %p = current locale's AM/PM. indicator for 12-hour clock
#  %S = second as a decimal number (range 00 to 61)
#  %w = day of the week as a decimal, range 0 to 6, Sunday being 0
#  %y = year as a decimal number without a century (range 00 to 99)
#  %Y = year as a decimal number including the century
#  %z = time-zone as hour offset from GMT
#  %Z = time zone or name or abbreviation
#  %O = display the 5-digit (w/ + or -) UTC offset in minutes (Ex. EST -> -0300)
#  %% = A literal `%' character
#log_date_format <format string>
log_date_format %d/%m/%Y:%H:%M:%S

# Formatting string for the program log file
#  %D -> date (format is specified using log_date_format)
#  %S -> sub-system (where in the prog the log is coming from)
#  %M -> message (message that is passed in)
#log_prog_format <format string>
log_prog_format %D;%M

# Program log file name
# Uses the same format options as log_date_format
#log_prog_name <program log name>
log_prog_name dftpd.log

# Formatting string for the access log file
#  %d -> date (format is specified using log_date_format)
#  %s -> server IP
#  %l -> server listening port
#  %c -> client IP
#  %p -> client port
#  %u -> user name
#  %m -> FTP command (method)
#  %a -> argument to the command
#  %r -> 3-digit response code from the server
#  %t -> response text from the server
#log_access_format <format string>
log_access_format %d;%s;%l;%c;%p;%u;%m;%a;%r;%t

# Access log file name
# Uses the same format options as log_date_format
#log_access_name <access log name>
log_access_name %d%m%Y_access.log


#########################################################################
# Commands used for the remote features
#

# IP address used to identify the server when making remote connections
# to other DFTPD servers.
# By default the IP address of the first network interface is used
# (not 127.0.0.1).
#site_ip <xxx.xxx.xxx.xxx>
