BPFTP Server: Why can't people login?!?!
Figure out why and fix your NAT/Firewall settings with our new online tester. More Info

BPFTP Server: New USB Flash-Drive Portable Edition
Walk up and instantly start a FTP Server for quick remote access to any file. More Info

    Products       Members       Support       Contact Us      
Current Versions as of May 12th, 2008:
BulletProof Transfers!
Speakeasy Speed Test
 
 
Overview   BPFTP Server (Windows)   BPFTP Client (Windows) BPFTP Client (MacOS) BP Label Magic (Windows) BP Barcode Magic (Windows) BP MP3 Strip_It!
 Home >> Products >> BPFTP Server (Windows) >> Online Manual
BulletProof FTP Server for Windows Windows Support
Windows 32-Bit
Transfer Files with BulletProof Reliability!

Table of Contents
0.0 Legal License
1.0 Installation
1.1 Install
1.2 Uninstall
2.0 General Settings
2.1 Program Description
2.2 Interface
2.2.01 Application
2.2.02 Main Setup
2.2.03 General
2.2.04 Options
2.2.05 Advanced
2.2.06 Directory Cache
2.2.07 Stat Generator
2.2.08 Scheduler
2.2.09 Dynamic IP
2.2.10 Multip IP
2.2.11 Passive Mode
2.2.12 Visual
2.2.13 Logging
2.2.14 Free Files
2.2.15 Events Manager
3.0 HOW TO
3.1 Quick Tutorial
3.2 Setup User Accounts
3.2.01 Add Users
3.2.02 Access Properties
3.2.03 Misc Properties
3.2.04 Message Files
3.2.05 Ratio/Quota
3.2.06 Add Groups
3.3 Advanced Virtualization
3.3.01 Virtual Directories
3.3.02 Linked Files
3.4 Spy User/Activity
3.5 IP Access/Restrictions
4.0 Advanced Settings
4.1 FTP Commands
4.2 Command Line Parameters
4.3 Performance Tips
4.4 Install as System Service (Windows 2k3/XP/2k/NT)
5.0 Misc
5.1 Registration/Purchase Information
5.2 Online Help
5.3 FAQ

0.0 -- Legal/License

THIS SOFTWARE AND THE ACCOMPANYING FILES ARE SOLD "AS IS" AND WITHOUT WARRANTIES AS TO PERFORMANCE OR MERCHANTABILITY OR ANY OTHER WARRANTIES WHETHER EXPRESSED OR IMPLIED.

USE THIS SOFTWARE AT YOUR OWN RISK. THE AUTHOR WON'T BE LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE.

THE AUTHOR CAN NOT BE HELD RESPONSIBLE FOR ANY MISUSE OF THIS SOFTWARE TO DISTRIBUTE ILLEGAL OR COPYRIGHTED FILES.


1.1 Installation

Now that you have obtained a copy of BPFTP Server, you can install it using our installer: just follow the instructions and everything should be fine.

After installation, the BPFTP Server directory will contain these files:

BPFTPSRV.EXE - The FTP-server executable
LICENSE.TXT	 - The License file
VERSION.TXT	 - List of what has changed each version
MANUAL/		 - Help Manual of the FTP Server

Other files created at runtime by application :

HITOMETER_UP.TOP - Uploaded files history
HITOMETER_DL.TOP - Downloaded files history
FTPSRV.INI       - General settings
USERS.INI        - Users accounts
GROUPS.INI       - Groups accounts

Stat generator will also create :

RESULT.TOP
TOP-DAY.TOP
TOP-WEEK.TOP
TOP-MONTH.TOP
TOP-ALL.TOP

Once you've set it up you'll find some more files like 'ini's and 'log's in it.


1.2 Uninstallation

To uninstall BPFTP Server, remove it via the 'Add/Remove Programs' item of the Control Panel or use the shortcut in your start menu. After uninstallation, delete the configuration files (Accounts.ini, Groups.ini and Ftpsrv.ini).


2.1 Program Description

BPFTP Server is a new FTP Server which tries to bring all the user's requested features together, it is always a work in progress. We try to implement as many functions as we can while at the same time try to enhance already present features.

Compatibility BPFTP Server has been tested and shown it's compatibility with all of the major FTP Clients, including:

  • BPFTP Client
  • AbsoluteFTP
  • Crystal FTP
  • CuteFTP
  • Flash FXP
  • FTP.EXE
  • FTP Voyager
  • Internet Explorer 4.0
  • Internet Explorer 5.0
  • Netscape Navigator 4.5
  • WS_FTP PRO
  • Windows Commander


    2.2 -- Interface


    2.2.01 -- Application

    Let's start with the main interface which is very easy to understand.

     

    Toolbar Buttons
    - Switch on/off your FTP Server
    - Enable Wordwrap for screen log
    - Clear screen log
    - Close the FTP Server: no more connections are accepted
    - Enable logging to file
    - Enable logging to screen
    - Exit from FTP (also shutdown the FTP)
    - Server Statistics for user/transfer/connection
    - Information on connected user(s), transfer rate/idle time/upload/download
    - Make the FTP Server console stay always on top
    - Display/hide connected users list on console's first right columnn
    - Display/hide banned/forbidden users on console's second right column
    - Setup FTP Server
    - Events messages/audio
    - Setup log: what to log on screen/file
    - User account management
    - Group management
    - Free files: free files to download regardless what ratio/credit is set; wildcards accepted.
    - Multi homed IP management (mainly for windows NT)
    - Display About box As you can see, you can almost completely setup the BPFTP Server by this toolbar.

    Menu/Popup Buttons
    - Refresh
    - Display grid in main window
    - Spy user, show information on user
    - Pause list
    - Kick the selected user (+ ban query)
    - Copy to clipboard

    Onscreen log
    This is the big area on the screenshot where all server events are monitored:

  • Client commands: green
  • Server answers: blue
  • Server Comments: black You can select what is logged on the server console/in a log file under logging.

    Connected users list & refused IPs on the server
    The two colums on the right list users who are currently connected to your server. As well you get an overview of who is 'banned / not welcome' to your service or who is allowed to log in exclusively. Both can be hidden using the and buttons. We will go into detail on the other options later.

    Main Menu
    Here you can find most of the toolbar buttons.

    Tray Icon
    When you start the server, a tray icon appears near the system clock. It allows you to:

  • Start/stop the server
  • Show/hide the server window (reduce to tray icon)
  • Exit (shut down) the server
    I think this is enough for a short review. Let's take a look at the server setup!



    2.2.02 -- Main Setup

    Well, first you need to setup the ftp port (21 is the default; you may wish to use another in case you're behind a firewall or something) and the maximum number of users that can log in simultaneously (0 is unlimited access).



    2.2.03 -- General

    • Server Name (registered users only): allows you to specify the name of your server that users see when they log in.

    • Launch with Windows: under Windows 95/98 you can start the server without any user being logged on to the computer, (NT needs system services configuration which is not implemented yet, however there's a workaround).

    • Activate Ftp server on Startup: launch the server as soon as it is loaded.

    • Put Into Tray On Startup: starts minimized with an icon in the tray.

    • Allow multiple instances: you can start the server many times but be sure to take care of the configuration files.

    • Show Loading status at startup: displays the status progress bar.

    • Scan drives at Startup: displays free space status of your system's drives on the onscreen log.

    • Confirm Exit: ask for confirmation on exit.

     


    2.2.04 -- Options

    • Protect FTP Server Directory: the server won't show or give access to anything relative to the directory it resides in (generally a good idea to have this checked!!).
    • Encrypt Account Passwords: passwords will be encrypted after they were entered in the password edit box. This is a one-way encryption so if you forgot a password you cannot get the plain-text password back!

      Note: you should once and for all decide which method to use before starting to set up a large number of accounts since you can't change methods in between i.e. you cannot select the method to use on an account basis! For example, if you setup 10 accounts without encryption and do a new one with encryption the server won't be able to recognize the old passwords since he tries to verify their encrypted version; since they are all saved in plain-text, the server thinks they are incorrect even if the correct ones were entered!
    • Login Check, Password Check is/are Case Sensitive: with these settings you can choose wether 'DEMO', 'DeMo', 'dEMO' are the same words for the server concerning Login and Password (only if not encrypted).
    • Delete partially uploaded files: turn it on if you do not want users to be able to resume uploads, or if you don't want partially uploaded archives on your server. If checked these files will be deleted when the ABORT command is sent (clients do not always abort transfers by the ABORT command so this feature is not 100% successful). Any tries to resume uploads will fail.
    • Use all lower case for files/Dirs: any file lists generated by the server are composed of lowercase characters. This is useful for Netscape users as Netscape sorts files by case (A > B > .. > a > b > ..).
    • Disable log to screen when minimized: if you minimize your application, the server will stop logging to screen (less CPU usage).
    • Show Relative Path: all users will see relative paths.
    • Show Received Messages: user can send messages using 'SITE MSG <message to send>'; received messages flash the message list to notify you.
    • Show Client not logged in: displays users not logged in (no user/pass provided yet) in the user/server activity list.
    • Limit User/Pass to XX then Kick/Kick + Ban: if User/Pass exceeds the number allowed then you can kick or kick + ban user.
    • Refuse connections with same IP: users can log in only once per IP Address, preventing 'hammering' of your server.
    • Block Banned IP (instead of notifying client): this results in not notifying the client that his IP is banned; the client is blocked when he tries to connect.
    • Resolve IP to Hostname: this option resolves IPs to hostname, for example '195.136.125.123' could be resolved to 'xxx.club-internet.fr'. You should consider to enable it only if you ban hostnames as it is a slow function that can cause a severe cpu load on your computer. Furthermore some IPs do not have hostnames associated, so the server will timeout after a certain period if it does not find a hostname.



    2.2.05 -- Advanced

    • Receive Buffer: The amount of data sent at the same time, default is 4096 bytes.
    • Server Allows: If you do not want users to upload or download (strange isn't it ;)) then select the corresponding mode.
    • Server Priority: Allows you to select server priority (Real Time is not recommended).
    • Block Server-to-Server transfer (FXP): Disables the use of Port commands not referring to client IPs, disable Bounce attack.
    • Anti Hammering: This feature is useful to prevent people/clients from hammering your server, i.e. people who coulnd't log in (e.g. because the max. user limit was reached) but keep trying to repeatedly which can prevent the server from serving other connections properly. You can 'ban' these lamers for a speciefied period of time. For example, if a user tries to connect more than 10 times in 30 seconds then he will not be able to connect for 5 minutes because his IP is blocked (the server does not answer); after that time he will be able to retry to connect.



    2.2.06 -- Directory Cache


    This feature makes the server keep the directory list in memory for a specified amount of time. This prevents disk access for listing directories but needs memory. The list shows how the server caches the directory list and the hits achieved to the cache.

    Default settings: 20 directories, 5 minutes.



    2.2.07 -- Stat Generator

    Did you ever wish to keep a top hitlist of your server without having to process the log files by hand? Well, this feature is for you: it scans the file 'transfer.log' which is written after all clients disconnected and produces a 'result.top' file (which is an ini-file) containing the 'top uploaders/downloaders' on your site.

    File Structure: LOG_TRANSFER.LOG
    Example:21/04/99 11:55:26#Anonymous#00:02:50#41964#8993#50957#3#2#297,994#3#2

    • Date Connection
    • User Account Name
    • Time connected
    • Bytes Downloaded
    • Bytes Uploaded
    • Bytes Uploaded + Bytes Downloaded
    • Files Downloaded
    • Files Uploaded
    • (Bytes Uploaded + Bytes Downloaded) / Time Online = Session Speed
    • Time spent downloading in seconds
    • Time spent uploading in seconds

    File Structure: RESULT.TOP
    [General]
    Last Updated=20/04/99 16:47:07
    Day Bytes Uploaded=6352591
    Day Bytes Downloaded=5665139
    Week Bytes Uploaded=6352591
    Week Bytes Downloaded=5665139
    Month Bytes Uploaded=6352591
    Month Bytes Downloaded=5665139
    All Time Bytes Uploaded=6352591
    All Time Bytes Downloaded=5665139

    [This Day-Uploader-N1]
    NAME=Anon
    BUP=5570779
    BDOWN=4883327
    DLKBPS=529,875
    ULKBPS=320,013

    [This Week-Uploader-N1]
    ...
    [This Month-Uploader-N1]
    ...
    [All Time-Uploader-N1]
    ...
    [This Day-Downloader-N1]
    NAME=Anon
    BUP=5570779
    BDOWN=4883327
    DLKBPS=529,875
    ULKBPS=320,013

    [This Week-Downloader-N1]
    ...
    [This Month-Downloader-N1]
    ...
    [All Time-Downloader-N1]
    ...

    After that, the server will process files named: "TOP-DAY.MDL","TOP-WEEK.MDL","TOP-MONTH.MDL","TOP-ALL.MDL" (these files must be placed in the server directory), processed files will be named "TOP-DAY.TOP, ..."

    In these files you have to specify tags to replace by Name, Bytes uploaded...

    Tags Available:

    
    //General
    %DATE: Current Date
    %TIME: Current Time
    YYYY = DAY/WEEK/MONTH/ALL %YYYYTOTALBUL : total bytes uploaded during YYYY %YYYYTOTALKBUL: total Kbytes uploaded during YYYY %YYYYTOTALMBUL: total Mbytes uploaded during YYYY %YYYYTOTALBDL : total bytes downloaded during YYYY %YYYYTOTALKBDL: total Kbytes downloaded during YYYY %YYYYTOTALMBDL: total Mbytes downloaded during YYYY // Top Upload %TOPULNAMEXX : user account name ranked XX in upload (1 for first, 2 for second ... 25 for last) %TOPULMBULXX : MB uploaded by user ranked XX in upload %TOPULMBDLXX : MB downloaded by user ranked XX in upload %TOPULKBPSULXX: average upload transfer rate in KB/s achieved by user ranked XX in upload %TOPULKBPSDLXX: average download transfer rate in KB/s achieved by user ranked XX in upload // Top Download %TOPDLNAMEXX : user account name ranked XX in download (1 for first, 2 for second ... 25 for last) %TOPDLMBULXX : MB uploaded by user ranked XX in download %TOPDLMBDLXX : MB downloaded by user ranked XX in download %TOPDLKBPSULXX: average upload transfer rate in KB/s achieved by user ranked XX in download %TOPDLKBPSDLXX: average download transfer rate in KB/s achieved by user ranked XX in download
    So a "TOP-DAY.MDL" file could be:
    Date: |%DATE|            .  Daytop Stats!  .
    Time: |%TIME|
    
    ----<:TOP 5 UPLOADERS:>-----------------------------------------
    1. |%TOPULNAME1|  |  |%TOPULMBUL1| MB  |  |%TOPULKBPSUL1| KB/s
    2. |%TOPULNAME2|  |  |%TOPULMBUL2| MB  |  |%TOPULKBPSUL2| KB/s
    3. |%TOPULNAME3|  |  |%TOPULMBUL3| MB  |  |%TOPULKBPSUL3| KB/s
    4. |%TOPULNAME4|  |  |%TOPULMBUL4| MB  |  |%TOPULKBPSUL4| KB/s
    5. |%TOPULNAME5|  |  |%TOPULMBUL5| MB  |  |%TOPULKBPSUL5| KB/s
    
    ----<:TOP 5 DOWNLOADERS:>---------------------------------
    1. |%TOPDLNAME1|  |  |%TOPDLMBDL1| MB  |  |%TOPDLKBPSDL1| KB/s
    2. |%TOPDLNAME2|  |  |%TOPDLMBDL2| MB  |  |%TOPDLKBPSDL2| KB/s
    3. |%TOPDLNAME3|  |  |%TOPDLMBDL3| MB  |  |%TOPDLKBPSDL3| KB/s
    4. |%TOPDLNAME4|  |  |%TOPDLMBDL4| MB  |  |%TOPDLKBPSDL4| KB/s
    5. |%TOPDLNAME5|  |  |%TOPDLMBDL5| MB  |  |%TOPDLKBPSDL5| KB/s
    
    Total Mbytes Uploaded this day  : %DAYTOTALMBUL Mbytes
    Total Mbytes Downloaded this day: %DAYTOTALMBDL Mbytes
    
    With "Log_Transfer.log" you can even write your own stat analyzer.
    With "Result.top" you easily get to know the top ranked users.

    Another useful log is "Log_Xferfiles.log" which keeps a log of all files transfered by all users (if they have logged in successfully).

    This file has the following structure:

    [<User Account Name> - Time of connection - Time of disconnection]
    ULXX=<file XX uploaded>| <Transfer Stat = "(00:00:00 - 0,000 KBps)">
    DLXX=<file XX downloaded>| <Transfer Stat = "(00:00:00 - 0,000 KBps)">
    
    File transfers are logged including paths (c:\server\uploaded\file.exe) so that you can easily see who uploaded what.

     

    Stat Interface

    If you want your stats to be refreshed at any given time, simply select the interval between two refreshes. You can also specifiy the accounts to be included/excluded from the stats file. By default all accounts are included but if you don't want to monitor some account (e.g. 'anonymous') simply uncheck it in the account list and stats on this one won't be computed.

     


    2.2.08 -- Scheduler

    The Scheduler allows you to:
    • go online/offline/offline + exit/close/open/reboot/logoff/shutdown
    • schedule at which Date + Time actions will take place

     


    2.2.09 -- Dynamic IP

    Dynamic IP is used to allow users who have dynamic IPs (IPs changing every time they dial in to the Internet) to be processed by the server even if the changes occur while the server is running. Your server does not need to be restarted, it will detect and use the new IP(s)!

     


    2.2.10 -- Multi IP Settings

    If you want to reserve IPs for multi domains usage, you need to enter those IPs you wish to use in the list. IPs can be masked (192.168.*); the same rules of the IP Access List apply.

    This list is also useful for dynamic IPs, as you can have dynamic IPs being used by the server. When a new IP matching the list is detected then it will be used by the server. Furthermore you can tell the server to only use IPs matching the masks list, this way you can run another instance of the server on another IP.

    This way the service will only be available for users who want to connect to the server on the IP 192.168.0.1. It allows you to configure an anonymous user for each ftp server:

    Anon_192.168.0.1 on IP 192.168.0.1 with login: anonymous
    Anon_192.168.0.2 on IP 192.168.0.2 with login: anonymous
    ...

    Users can have the same login/password on different 'virtual' servers.

     


    2.2.11 -- Passive Mode

    Passive mode IP : when you run the server bahind proxy, passive mode reports current local ip (192.168.xxx.yyy for example). To make BPFTP reports correct ip, enter it in the ip box.

    • Fixed IP : you are assigned a fixed ip by your ISP, enter it in the box.
    • Dynamic IP : you are assigned a dynamic ip and are using a service like dyndns.org (or other) to keep your domain name pointing to your ip, enter the hostname in the edit box.

    Passive port range : this is the range of ports that BPFTP Server will use with passive mode, (it is to simplify use of forwarding rule in router for example).

     


    2.2.12 -- Visual

  • Hottrack effect for list view (user list, server activity): by pointing your mouse on the list, the item will be selected automatically, you do not have to click.
  • Switch Time Left/Progression in Server Activity: you will see the time left, alternatively with file progression under the Server Activity window.
  • Delete file to recycle bin: file will be sent to recycle bin and can be recovered if needed You can customize your server's tray icon by using your own, simply specifiy any 16*16 bmp image.

     


    2.2.13 -- Logging

    Setup

    • Path to log file
    • Type of Log File: Single/daily/weekly/monthly/yearly
      (examples: 'FTP-18-apr.-1999.log' = a daily log file / 'FTP.LOG' = a log path).
    • Max Lines on log screen
    • Apply to Both/Apply to Screen Log/Apply to Log file: choose where to apply the following rules.
    • Log All IP: All IPs Are logged.
    • Log only these IP: only IPs listed below will be logged.
    • Do not log these IP: only IPs listed below won't be logged.
    • IP List: enter the IPs here.
    •  

      Advanced

    • Standard Log Syntax: use normal log syntax (maybe faster in some cases)
    • Custom syntax: lets you define the way BPFTP will log events.

      Tags for log syntax:

      • %NAME: Account Name
      • %LOGIN: Login for account
      • %DATE, %TIME: Events date, time.
      • %ID: User Unique Identifier
      • %IP, %HOST: User IP, HostName (if 'resolve ip' is enabled)
      • %LOG: event to log

    • Color Settings: defines the color of the screen log font.

       

      Screen Logging

    • Log Tried Connections
    • Log users logged
    • Log disconnection
    • Log directories creations: MKD, XMKD ...
    • Log Uploads: STOR, APPE
    • Log Ended Uploads
    • Log changes of directory: CWD, CDUP ...
    • Log files deletion: DELE, RMD ...
    • Show Answers from server
    • Show Clients commands
    • All/None

      File Logging

    • Log Tried Connections
    • Log users logged
    • Log disconnection
    • Log directories creations: MKD, XMKD ...
    • Log Uploads: STOR, APPE
    • Log Ended Uploads
    • Log changes of directory: CWD, CDUP ...
    • Log files deletion: DELE, RMD ...
    • Show Answers from server
    • Show Clients commands
    • All/None



      2.2.14 -- Free Files

      Well this feature is only important to users who need ratios on their sites. Sometimes users that don't have credit on your server need to download an index file (a description of all the files on the server) or a file with info on how to get credit on your site in the first place. If they do not have credit then they can't download this index file unless it is denoted as a free file.

      Wildcards are allowed! In my example above, the user can download any .TXT files in the \files\-directory as well as any .ZIP files in any of those directories he has access to. Files that match any of the masks will be free for download => they won't be counted for credit/ratio.
      Possibilities are:
      - \XXX\XXX.zip
      - XXX.zip
      - X:\XXX\XXX.XXX

      XXX can be anything ?, *.



      2.2.15 -- Events Manager

      Well this feature can reveal more useful to you than it seemed to be on first glance!
      The most simple way to use it is to set sounds to user actions but execute action can go much further...

      Command Events

      • OnAccountDisabled: Message, Sound, Execute
      • OnDirCreated: Message, Sound, Execute
      • OnDirDeleted: Message, Sound, Execute
      • OnEvery05mins: Sound, Execute
      • OnEveryDay: Sound, Execute
      • OnEveryHour: Sound, Execute
      • OnExceedUserPass: Sound, Execute
      • OnFileBanned: Message, Sound, Execute
      • OnFileDeleted: Sound, Execute
      • OnFileDownloaded: Sound, Execute
      • OnFileRenamed: Sound, Execute
      • OnFileUploaded: Sound, Execute
      • OnFileUploadFailed: Sound, Execute
      • OnIPChanged: Sound, Execute
      • OnLogFileRotate: Sound, Execute
      • OnQuotaExceeded: Message, Sound, Execute
      • OnSameIPConnect: Message, Sound, Execute
      • OnServerClosed: Message, Sound, Execute
      • OnServerStarted: Sound, Execute
      • OnServerStopped: Sound, Execute
      • OnStatRefreshed: Sound, Execute
      • OnTooManyUsers: Message, Sound, Execute
      • OnTooManyUsersForAccount: Message, Sound, Execute
      • OnUserAndPass: Message, Sound, Execute
      • OnUserDisconnect: Sound, Execute
      • OnUserDisconnect: Sound, Execute
      • OnUserHammering: Message, Sound, Execute
      • OnUserIsBanned: Message, Sound, Execute
      • OnUserQuit: Message, Sound, Execute
      • OnUserLoggedIn: Sound, Execute
      • OnUserTimeOut: Message, Sound, Execute
      • OnWelcomeUser: Message, Sound, Execute

        (more to come soon)

      The following events do already send a default messaged to the user: OnSameIPConnect, OnServerClosed, OnTooManyUsers, OnUserIsBanned, OnUserQuit, OnWelcomeUser. They are overridden if you define your own reply messages.

      You can also specify how to launch applications: hidden (no interface), normal, maximized, minimized.

      Event can also be restricted on filemask : '*.exe;c:\ftp\*.*|c:\path\application.bat %parameters' for file related events OnFileUploaded, OnFileDownloaded ...

      Known Tags

      %FILE: Complete path to file (including filename).
      %FILE_8.3: Same as %FILE but with 8.3 path format.
      %FILENAME: Only filename (archives.zip, archives.rar ...).
      %FILENAME_8.3: Same as %FILENAME but with 8.3 path format.
      %FILEEXT: Extension of the file in uppercase (.EXE, .RAR ...).
      %FILENOEXT: Filename without extension.
      %FILEPATH: path without filename (c:\temp\ ...).
      %FILEPATH_8.3: Same as %FILEPATH but with 8.3 path format.
      %FILESIZE: File Size in bytes.

      %DIRCREATED: Name of newly created directory (for OnDirCreated Event).
      %DIRTARGET: Name of directory where new dir has been created.
      %DIRTARGET_8.3: Same as %DIRTARGET but with 8.3 path format.
      %DIR: Full path to new directory.
      %DIR_8.3: Same as %DIR but with 8.3 path format.

      %DATE: Current date.
      %TIME: Current time.

      %EVENT: returns fired event name.
      %SERVERIP: Server IP separated by comma.

      %CLIENTNAME: User Account.
      %CLIENTGROUP: Group Account.
      %CLIENTIP: User IP.
      %CLIENTLOGIN: Login used by client.
      %CLIENTPASSWORD: Password used by client.

      (tags from message files are also available but impersonal events will not use client specific tags).

      For example: - OnFileUploaded:
      Sometimes you may want to add files to uploaded archives (e.g. site info like 'this file passed «server name»', or description files like 'File_id.diz', etc.). Depending on the file type like zip, rar, or anything else you could setup a batch file:

      IF "%1"==".RAR" GOTO RARFILE
      IF "%1"==".ZIP" GOTO ZIPFILE
      GOTO QUIT
      :RARFILE
      c:\rar\rar.exe a %2 c:\myad\ad.txt
      GOTO QUIT
      :ZIPFILE
      c:\zip\pkzip.exe -a %2 c:\myad\ad.txt
      GOTO QUIT
      
      :QUIT
      
      In the field 'Execute' just enter the path to your batch file:

      c:\myad\mybat.bat %FILEEXT %FILE

      Now every time a file has been successfully uploaded, your batch file is started automatically which in turn scans the filenames for rar and zip extensions and adds your file 'ad.txt' those archives.


      3.1 Quick Tutorial

      In this little tutorial, I will show you how to setup an FTP server in about 1 minute. I'm assuming that you've already read the add user paragraph.

      1. First we need to open the user account window and create a new account; we will call it 'Anonymous', no login/pass is defined to let everybody connect without restrictions. We give our new user access to our ftp root located at 'c:\ftproot' which is empty for the moment, and as we think about sharing a cdrom drive, we share 'j:\' to later define a shortcut to this drive.

         

      2. we setup the user to see relative paths, prevent him from seeing hidden files and so on

         

      3. to give our user access to our cdrom drive 'j:\' we simply create a windows shortcut (.lnk) in 'c:\ftproot\', and we check 'Links/Dir to add to directories', 'Treat as virtual directories' & 'Resolve windows shortcuts',

         

      4. start your favorite FTP Client and log in to your server at 'localhost' or '127.0.0.1' with any login/pass. You should see the following:


        (note the 'd' for directory)

         

        or if you checked 'treat as links' & unchecked 'Relative Path':


        (note the 'l' for link)

      5. a click on 'CD-ROM' brings you to:

         

        or if you checked 'treat as links' & unchecked 'Relative Path':



      3.2 Setup User Accounts

      After installing the BPFTP Server, you may want to launch the server. You'll see the loading bar and then the main interface. At this state your server is quite useless, because you must setup user accounts, file access, etc. first!


      3.1.01 -- Setup User Accounts

      Click on the toolbar button to bring up this form:


      1. create a new user: right-click on the left list and select 'Add' in the popup menu
      2. enter the new user account (note: this is not always the user login) and click 'OK'
      3. if you want your user to use a login ('Demo' in the example) then check the box 'login'. If you do not check the 'login' box the user can log in with any login. This can be useful to setup an 'anonymous' user.
      4. setup a password: check the password box or let the user log in with any password, even a blank one (again a sort of free account).
      As the number of combinations may become a little difficult to understand, here's a short overview:

      Case 1:
      +Login checked and specified
      +Password checked and specified
      ->user logs in both with Login and Pass

      Case 2:
      -Login not checked
      -Password not checked
      ->Any user can have access to this FTP account, providing any username and even a blank password

      Case 3:
      +Login checked
      -Password not checked
      ->user must specify the correct login but can provide any (even a blank) password

      Case 4:
      -Login checked
      +Password checked
      ->Any login can be specified, only the password is verified -> if a user with this password exists then the user will be logged as this user
      ->In fact this acts as if the password was the login for those 'loginless' user

      In case there is a free account and users try to log in with bad passwords or bad usernames, they will automatically be logged in on the free/anonymous account (one with no login & password enabled).

      So I'm quite sure you will find the right combination that serves your purposes.

      In our example, the user must supply: Login=Demo and Password=Demo.
      If you want to setup an anonymous user simply create an account named 'anonymous' with no login and no password (both unchecked).

      Note: if previously specified under Main Setup | Options, login and password are case sensitive: 'DeMo' and 'demo' are not the same login.

       


      3.1.02 -- Directory Access

      Now that a user can log in, you must provide access to your shared files.
      • right-click on the directory list and select 'Add' in the popup menu
      • select the proper directory and choose an access mode:
      Files:
      R: Read Access enabled: a user can download from the specified directory
      W: Write Access enabled: a user can upload in the specified directory
      D: Delete Access enabled: a user can delete files in the specified directory
      A: Append Access enabled: a user can resume an upload in the specified directory

      Directory:
      M: Make Directory enabled: a user can create directories in the specified directory
      L: List Directory enabled: a user can list files in the specified directory
      K: Delete Directory enabled: a user can delete directories in the specified directory
      S: Subdir enabled: a user can go down subdirectories of the specified directory

      You can as well uncheck all access rights, this will give a user no access to the directory, it won't even be listed.
      Note:

      1. if you try to share the server directory (i.e. allow users to have access to your ini-files) then the server will ask you to confirm the specified directory since this is a large security breach!
      2. if you specify an incorrect (non existent) directory then the directory will be striked through
      3. the user's home directory is always the first directory in the list; the font is colored red
      4. you can rename a directory by right-clicking on it and selecting 'edit'
      5. the directory hierarchy is not important as BPFTP Server will always know the nearest parent directory in the list:

        for example, if a user has access to:

        c:\temp\upload - RWDMLSK
        c:\temp\upload\read - R---L--

        and c:\temp\upload has the following structure:

        c:\temp\upload\my favourite picture\
        c:\temp\upload\amiga 500\
        c:\temp\upload\read\

        then the user will have RWDMLSK access to all directories except c:\temp\upload\read; in this directory he will only have RL access. You see, there's no need to specify any order for the directories. Try to play around a little with the directory settings and you will make for a marvellous FTP Server!

       


      3.2.03 -- Misc Properties

      Need more advanced properties for your account? For a better configuration we provide you with some extra options:

      • Hide hidden files/dirs: files whose attribute is 'hidden' won't be visible in the list
      • Enable Account: should always be enabled unless you temporarily wanna shut off a user without deleting his account
      • Allow Noop Command: the user can stay connected to the server simply by sending the NOOP command, otherwise he will be disconnected by your specified Time Out
      • Enable Time Out: users who don't do anything for this period of time will be disconnected
      • Max users: allows only N users to log in the server sharing the same account, default is unchecked => no restrictions
      • Connection per IP: allows only N connections of the same IP to log in to the server, default is unchecked => no restrictions
      • Show Relative Path: users see their home dir as the root of the file system. If 'c:\userroot\' is the default home dir users will see '\' as their root.
      • user can change his password: using SITE PSWD <old password> <new password>
      • user can chat with other users: using SITE CHAT <user> <message>
      • user can see who is connected: using SITE WHO => returns username - date of connection - IP/HostName - speed

      3.1.04 -- Message Files

      There are 3 types of message files:
      • Login message file: sent by the event manager after the welcome message
      • ChangeDir message file: sent each time a user changes his current directory
      • Links File: processed while sending directory list
      Note: the ChangeDir file can also be a file without a specific path, in that case the server will check any directory for this file and process it in case it exists. Using this method you can add specific files with different messages to every directory.
      Alternatively you could place a message file (maybe called 'chgdir_msg.txt') e.g. in your upload directory exclusively so people would only see a message when they would enter it to upload files. In any case you should set this file's attribute to 'hidden' and also check 'Hide files/dirs with 'hidden' attribute set' under 'Setup User/Group accounts | Miscellaneous'.

      The first two message files support many tags:

      %MAXUSERS = the maximum number of users which can be connected to the server at the same time
      %LOCALIP = the IP address of the server
      %UIP, %CLIENTIP = the IP address of the client
      %CLIENTIP_000 = returns formated ip like 192.168.000.010 (for use with filename and sorting).
      
      %UHOSTNAME = the hostname of the client
      %UNAME = the user's account name
      %USPEEDLIMIT = the maximum speed the user will be able to send/receive at
      %CNOW = the number of users currently connected
      %CALL = the total number of user connections to the server since startup
      %C24H = the number of connections during the last 24h
      %UTIMEOUT = current user TimeOut
      
      %LOGFILE = (current log file), %LOGFILEOLD (previous log file) to go with OnLogFileRotate events.
      
      %URATIOCREDIT = current user ratio credit (if ratio is enabled)
      (%URATIOCREDITxx with xx=KB, MB,GB)
      
      %UQUOTACURRENTxx (with xx=KB, MB, GB) = current quota
      %UQUOTAMAXxx (with xx=KB, MB, GB) = max quota
      
      %UHOME = current user home dir (if showrelativepath is disabled)
      %UCURRENTDIR = current user dir
      %URATIO = current upload/download ratio
      %URATIOUP = current upload ratio 
      %URATIODOWN = current download ratio 
      
      %WELCOMEIP = create a file named "welcome_<ip>.txt" (welcome_192.168.0.128.txt) and server will send it as welcome message for ip (to be used with virtual server).
      %WELCOMEUNAME = merges "welcome_uname.txt" (uname = username) from server directory in the message / event.
      
      %SERVERSECS  = \
      %SERVERMINS  =   time the server is online
      %SERVERHOURS = /
      %SERVERDAYS  =/
      
      %SERVERTIMEUP = server uptime since online
      %SERVERTOTUPTIME = server total uptime since installation
      
      %TOPDAY, %TOPWEEK, %TOPMONTH, %TOPALL = merge .top file in the message
      
       -= All Session =-
      
      (xx = KB,MB,GB)
      
      %SERVERxxUP  = uploaded to the server (all sessions)
      %SERVERxxDOWN = downloaded from the server (all sessions)
      %SERVERxxALL = transferred to the server = %SERVERxxUP + %SERVERxxDOWN
      
      %SERVERSPEEDxx = Current server speed
      
       -= Server Session =-
      
      %SESSIONxxUP = KB uploaded to the server by clients
      %SESSIONxxDOWN = KB downloaded from the server by clients
      %SESSIONxxALL = KB transferred to the server = %SESSIONKBUP + %SESSIONKBDOWN
      
      %SESSIONxxTOTAL = KB transferred by the server including uploads, downloads,
                        directory listings, answers to commands ...
      
      %SESSIONFILESUP = number of files uploaded to the server 
      %SESSIONFILESDOWN = number of files downloaded from the server 
      %SESSIONFILESALL = %SESSIONFILESUP + %SESSIONFILESDOWN
      
      %SESSIONAVG = average bytes transferred by the server
      
       -= Time/Date =-
      
      %TIME_EX = reports formated time as "hhmmss"
      
      %TIME, %SERVERTIME = server's machine time
      
      %DATE_EX_DMY, _YMD, _MDY = returns formatted date : 2000-11-30 for example (D=day, M=month, Y=year)
      
      %SERVERDATE = server's machine date
      %SERVERLOCALHOST = server's local hostname
      %SERVERVERSION = server version
      
      %DISK = if 'Show Relative Paths' is not enabled return disk drive
      %DFREE, %DFREEKB, %DFREEMB, %DFREEGB = free space in current directory (byte, Kbyte, Mbyte, Gbyte)
      
      %DFREEx (x=drive letter) = report free drive space on x (also avail. : %DFREExKB, %DFREExMB, %DFREExGB).
      
       -= user =-
      
      %FUP = number of files uploaded by current user (current session)
      %FDOWN = number of files downloaded by current user (current session)
      %FTOT = %FUP + %FDOWN (current session)
      
      %BUP, %KBUP, %MBUP, %GBUP = number of bytes uploaded by current user (current session)
      %BDOWN, %KBDOWN, %MBDOWN, %GBDOWN = number of bytes downloaded by current user (current session)
      %BTOT = %BUP + %BDOWN (current session)
      (%KBTOT, %MBTOT, %GBTOT)
      
      %BDOWNALL, %KBDOWNALL, %MBDOWNALL, %GBDOWNALL = downloaded by current user (all session)
      %BUPALL, %KBUPALL, %MBUPALL, %GBUPALL = uploaded by current user (all session)
      
      %TMIN = minutes since current user is connected
      %TSEC = seconds since current user is connected (not equal to %TMIN * 60)
      
      %UFILESPEED, %UFILESPEEDKB, %UFILESPEEDMB = report speed for last transfer.
      
       -= Server =-
      
      %SITEWHO = who's online.
      
      %PCPROC = type and number of server ürocessor (Intel, AMD, Cyrix ... K6, Pentium II, ...)
      %PCRAM = amount of physical memory
      
      %OSVER = Windows version (95, 98, NT, Service Pack if available ...)
      
      %S_IP = server IP separated by commas
      

      A typical login file could be:
      ==========================================
      Hello, user from %UIP !
      You are user #%CNOW of %MAXUSERS maximum users
      It is %SERVERTIME, we are the %SERVERDATE.
      ==========================================
      You are connected to %SERVERVERSION, this server has %PCPROC and %PCRAM KB of Ram.
      This server has already served %SESSIONKBUP KB to client and received %SESSIONKBDOWN KB
      at an average rate of %SESSIONAVG KB/s.
      You will be disconnected after %UTIMEOUT s of inactivity.
      
      Have a nice day on our server!
      
      That's all for those files.

       


      3.1.05 -- Ratio/Quota Settings

      Well, you have certainly seen such features in other servers ;) What is it ?



      1 - Ratio
      When you don't want lamers to download your files without uploading some of their own then you can set a ratio.

      For example, if you want a user to get 1 byte of download for every byte they upload, the ratio is set to 1/1; 1 byte upload for 2 bytes to download makes a ratio of 1/2. If they upload a file of 100 bytes at a ratio set to 1/2, they will have 200 bytes for credit but only 50 bytes if the ratio is set to 2/1.

      For uploads: NewCredit = CurrentCredit + RatioDownload / RatioUpload * FileSize
      For downloads: NewCredit = CurrentCredit - FileSize

      Count bytes per session / Count files per session
      Some ratios may have to be temporary such as those of anonymous users sharing the same account: when users log in they are given a default credit specified in the credit box. This credit is only valid for the time of their connect and is not shared by all users connected under this account.

      Count bytes all sessions / Count files all sessions
      Well this ratio persists after a disconnect, so you will be given the credit you had the last time before you disconnected from the server. Having this ratio method set by the admin, two users that connect under the same account will share their credit between each other: if their credit is 1000 bytes, ratio 1/1 and A downloads 500 bytes then A's & B's credit will be 500 after A finished downloading.

      Note: credits are updated during your operation so that a stopped download will only decrement your credit by the amount of bytes/files you have downloaded successfully; when you continue the download later on, your credit will be corresponding. Another point is that credits are internally pre-calculated.

      For example: A & B connected under the same account with a credit of 30 MB, A starts downloading 16 MB before B, B wants to download 15 MB (A has not finished his download) then B cannot start downloading cause 16 MB + 15 MB > 30 MB. If A stops his download then his credit will only be decremented by the amount he downloaded so far => B will be able to download if A has downloaded less than 1 MB. This procedure only applies to 'Count bytes all Sessions/Count files all sessions' (credit is decremented only at the end of the download for both 'Count files'-methods).

      2 - Quota
      This is another useful feature which allows you to set the maximum space each user can use on your server. Like Ratios, Quotas are calculated during upload (for REST method , etc.). A user cannot upload if he exceeds his quota => he needs to delete some files. If a user's quota is zero and he deletes a file, his quota remains at zero.

      3 - Bps, Speed Limit
      Simply enter the speed limit you want to apply to the account. Don't forget that 1KB = 1024 bytes!

       

      IP & Banned Files


      These options are used to limit possible annoyances on your server:

      • IP Access: specifies IPs that have access (or are banned) under this account: this means that your IP when matching the mask is allowed (+) / not allowed (-) to login under this account.

      • Banned Files: clients who try to upload files with names matching the mask are not allowed to upload (they can rename the files though).
        Admins also can enter wanted/unwanted files: allow (+) or disallow (-) do work as with all masks of the server. If a (+)-mask is entered, only filenames that match the mask are ok. If a (-)-mask is entered, everything is accepted except filenames matching the (-)-mask.

      Note: IP Access follows the rules of the Server's global IP access settings (wildcards, rules, etc.).

       


      3.1.06 -- Add Groups for User

      If you want several users to have the same access rights to your FTP Server it's a good idea to setup one group account for all of them rather than giving new accounts to each. This is a very sophisticated method to handle large numbers of users/user rights without too much of work.

      Click on to define a group

      In our example we have created a group called 'Demo_Group'. All members of this group have RLS access to 'C:\'. The group password is not defined so if you want your users to have a password then you can specify:

      • one password for the group => all members of this group will have the same password
      • one password for each of the members => each member of this group will have his personal password
      Note concerning group rules:
      • user directories are composed of user directory (if specified) + group directories => the first dir is always the user's home dir. If you don't specify a directory for a user he will have access to the group directory and the group's home dir will be his home dir.
      • a user's access rights always have priority over his group's settings (so if a user ratio is checked then the group's ratio won't be effective, same for quota => you can set up personal user settings for each group member)
      • misc and ratio are to be set similar to the user settings

        -> user > Group
        -> group properties are the default for all group members (as long as the user hasn't his own rights defined!)


      3.2.02 -- Links File and Virtual Directories

      What is a links file? See below:

      You may already have seen the yellow icon with a red arrow if you are familiar with FTP (some FTP clients do not show this arrow but only the 'l' under file attributes) and wondered how it was done. In fact, this is one of the easiest things to do but sometimes obscure for beginners.

      What do we need?

      • a directory/Cdrom drive/harddrive to share
      • access to this directory for the concerned user
      • 'Notepad.exe' (or any other text editor) to edit the link file
      That's it! For example, imagine that you would allow access to your CD-Rom drive 'G:\' for a user named 'Demo'.
      • the first thing to do is to give the user access to 'G:\'
      • create a new file with Notepad: we will call it 'Demo_links.txt'
      • add an alias called 'My Secret Files' to 'G:\' in the 'Demo_links.txt' so the content of the file reads:
        My Secret Files | G:\
        
        (Note: if you can't find the pipe-symbol '|' on your keyboard hold down ALT and enter 124 on the numpad!)

      • save the file in a directory of your choice (not in a shared directory since other users could access the links file and thus resources they were not meant to use!) and set a path to this file under 'Add links from this file' of the user's account.
      • uncheck 'Show relative paths' under Main Setup | Options and (if already set) under User/Group Accounts | Miscellaneous | Files (note: 'Show Relative Paths' can be used for Virtual Directories as explained below)

      Finished! Now the user will see a shortcut to 'G:\' named 'My Secret Files'; a click on it redirects him to 'G:\'. Was it that difficult? Well, for those of you who want more options, here are some extra tips: when you want a user to have a shortcut to his Home Directory create a link with an '~' as the path (note: the tilde-symbol '~' can be reached via ALT + 126 on your numpad). So this user will have 2 links:

      My Secret Files   | G:\
      To Home Directory | ~
      

      To have your links listed first, I suggest you to put a '+' (or any other letter with a higher priority than 'a') as the first letter:

      +My Secret Files   | G:\
      +To Home Directory | ~
      
      Now these links will be atop of the directory list.
    This can also be done for a group account so that all members have the same links. Simply set the 'Add links from this file' in the group account instead of the user account (don't forget to give the group access to the shared directory).

    Note:

    • links pointing to invalid (non existent) directories are not shown
    • links pointing to themselves are not shown (if a user is in the directory pointed to by the link)
    • links are shown in all user's directories (this may change in future versions of BPFTP)
    Once you understood how to handle these files you can start creating some Virtual Directories.

     

    Enhanced links: Virtual Directories (VDs)

    Think of this:

    • you run an FTP Site with BPFTP and you specify that clients shall see relative paths instead of full paths
    • a user can access his home directory by entering: ftp://user:pass@192.168.0.1/ in their web browser
    • you also want users to have access to: ftp://user:pass@192.168.0.1/My Lastest Photos/ but this dir is located on another drive or does not even exist on your server (however, it's NOT in the user's root path and thus usually not accessible for him)
    Solution: create a link file as you did above and add an alias, for example:
    My Latest Photos | G:\
    
    Do not forget to give at least read access to this drive. Having done that, 'My Latest Photos' can be accessed by users typing ftp://user:pass@192.168.0.1/My Latest Photos/ without you having to copy this directory into the user's home directory. The difference between links and VDs is that clients are not simply redirected but VDs 'simulate' the real directories. A directory that is physically elsewhere (on another drive or even a network resource) is 'mapped' into the user's home directory.

    To reiterate:
    User 'Demo' has access to 'c:\ftproot' which is his home directory. When he logs in the only things he can see is this directory (listed as '/' since 'Show Relative Path' is enabled) and it's contents (the directory 'drivers' and 2 files). Now you enable 'Treat links file as Virtual Directory' and also select the links file from above. Now the user will see 'My Latest Photos' as a VD in his home directory even though this directory is not physically placed in 'c:\ftproot\'. Now the user can click on 'My Latest Photos' and his path becomes '/My Latest Photos'. The contents of this directory come from 'G:\'.

    Note:

    • You can mount as many VDs as you like in your home directory
    • IMO this is a more aesthetic way to link directories
    • do never forget that you still have to give access to the target path of the VD otherwise it won't even be seen by the user!

    3.2.02 -- Link Settings

    This feature allows you to redirect clients to any directory placed on other drives.

    You can specify how links are handled:

    • as Links: when a user clicks on a link the current directory becomes the target link directory
    • as Virtual Directories: the user sees a fake directory (not physically existent in his home directory) that redirects him to drives/directories at other locations.
    You can add links from a file (see links file) or define links using a Windows ShortCut (.lnk file): simply create a shortcut to the target directory and give a user access to this directory. The last option is to auto-include links to the user's home directory called 'Home' which will always redirect to the user's home directory.

    Notes:

    • Virtual Directories are only mountable from the home directory.
    • a Virtual Directory's date will have the target directory date.
    • only '.lnk'-files in the home directory will be processed, others are ignored.

    For more information see 'Links file & Virtual Directories'.

     


    3.4 -- Spy User/Activity

    As I personally like to see what happens on my ftp server, we have implemented some features to spy on users and check their activities. Double-click on a user in the right column of the server's main interface to bring up the 'Server Activity' window:

    In this form you get an overview of the connected users and their activities, you can see:

    • wether a user is logged in as anonymous (he is masked; accounted users are not)
    • which directory he's currently in and wether he's idle/downloading/uploading
    • the time the user's connected
    • the progress of the user's current action: download in '%', upload in 'KB' (we can't know how much bytes will be uploaded)
    • the total amount of bytes downloaded/uploaded by this user
    • the user's current credit if available
    • the user's transfer speed
    • the user's average download/upload speed: these values are updated after each successful transfer
    • what files have been uploaded/downloaded during this session

    Clicking on a user will bring you the Spy User form (see the smaller window inside the main window). This little window shows you the commands & server replies for the currently selected user, basically the same stuff you can read on the main interface onscreen log.

     

    RealTime Interaction ...

    Is there really anyone who never dreamed of being able to kick, ban, send messages to users connected to your ftp server? Well, these commands are for you! Right-click on a user in the right column of the server's main interface or when your're in the 'Server Activity' window to get a small menu:



  • Kick: disconnects user (you're also asked if you want to ban him)
  • Stop Current Transfer: stops the current download/upload (you're also asked to give a reason that's send to the user)
  • Mass Kick: disconnects all users (+ ban query)
  • Deny IP Access: bans selected user's IP
  • Spy User: brings up the 'Spy User' window
  • Send Message: see below
  • Freeze List: pause the refresh timer
  • Refresh: manual refresh
  • Show Grid: displays grid in the 'Server Activity' window

    Enjoy your time as a dictator... ;)

     

    Sending Messages or how to guide your users


    Clicking on 'Send Message/BroadCast' will bring you the above window, enter your text and if you want, select time, date, reply notice and click on send. In most cases (depends on the user's FTP client/settings) the user will receive your message and see something like:

    214 14/03/99 14:14:02 archives.exe is located in \temp\archives
    You can reply using SITE MSG 
    Using this method you can guide your users or simply talk to them! Please note that not all FTP-clients do show these messages so don't be too astonished when you're not getting an answer!

     

    Statistics/Hit-O-Meter

    Statistics inform you about the general amount of transfers/traffic on your server, failed/successful connections...

    You can also check the Hit-O-Meter for info about file downloads/uploads.


    3.5 IP Access/Restrictions

    For those of you who have some 'enemies' or simply wanna restrict access to their servers then this section is for you. Right-click on the IP List (right column) and select 'Add IP', the form below appears:

    Using this form you can allow/refuse access based on IP Addresses/hostnames. In our example above we have defined 3 access rights:

    +192.168.0.*: allows anyone from 192.168.0.* to connect
    +192.168.1.*: same with anyone coming from 192.168.0.*
    -192.168.0.[1-3]: refuses IPs from 192.168.0.1 to 192.168.0.3 in order to restrict previous rules

    These above settings allow only people from the local intranet to log in.

    Supported wildcards

    Well, to define access rules you can use the following wildcards: ?, *, [xxx-xxx].

    For example:

    • 19?.16?.*.[100-120]: 192.163.125.101 and 190.168.5.116 can login, 190.168.5.1 can't since '1' is not in [100-120]
    • use *.wanadoo.fr if you do not like people coming from wanadoo.fr

    How does it work exactly?

    As long as you do not specify any IP address everyone can connect, but as soon as you specify only one (+)-IP address, only users belonging to these IPs can log in! As soon as you setup a (-)-mask everyone not belonging to the excluded IPs can connect.

    For example:

    • no mask is specified: everyone can connect (as you may have guessed)
    • the (-)-mask is undefined, the (+)-mask is set to +192.168.0.*: only users having IPs starting with 192.168. can connect
    • the (+)-mask is undefined, the (-)-mask is set to: -192.168.0.1, -192.168.0.4: everyone except those two IPs can connect
    Take care not to set up ambiguous IP rules such as +192.168.0.*, -192.168.0.* => in this case noone could connect!

    4.0 -- Advanced Settings


    4.1 FTP Commands

    BPFTP Server supports most of the important FTP commands. Here's some info on the most frequently used commands:

    ˇ ABOR used when client aborts his current command
    ˇ ALLO <param> param represents the number of bytes a client would like to upload, ALLO checks if enough
                   disk space is availabe
    ˇ APPE <param> param is the filename to be resumed in an upload
    ˇ CDUP / XCUP / PWD / XPWD / CWD <param> directory navigation
    ˇ HELP display supported commands
    ˇ LIST / NLST list files
    ˇ MDTM yyyymmddhhmmss[+-xxx] <path/file> specify the new date/time for the specified filename
    ˇ MKD <param> / XMKD <param> create directory named <param>
    ˇ NOOP notifies the server not to kick the user, simulates a command, does nothing
    ˇ PASV switches to passive mode
    ˇ PORT <param> specifyies address, port to connect to
    ˇ PWD <param> returns current user directory
    ˇ QUIT disconnects from the server
    ˇ REIN reinits current user without having to disconnect, user could now relogin with USER and PASS
    ˇ REST <param> sets the byte offset to start from for file upload
    ˇ RETR / STOR / DELE / APPE <param> RETRieve / STOre / DELEte / APPEnd file (resume upload)
    ˇ RMD <param> remove directory
    ˇ RNFR <param> / RNTO <param> ReName FRom, ReNameTO used to rename a file
    ˇ SITE CHAT <user> <message> sends a message to another connected user
    ˇ SITE PSWD   allows user to change his password
    ˇ SITE WHO returns who is connected: User Name - Connection Date - IP/HostName - Transfer KBps
    ˇ SITE ZONE displays server's time zone relative to UTC
    ˇ SIZE <param> returns size of specified object
    ˇ STAT returns server's info & current user
    ˇ STOR <param> param represents the file to be uploaded to server
    ˇ STOU <param> stores unique, same as store but generates unique filenames - not yet implemented
    ˇ SYST returns system type
    ˇ TYPE <param> sets transfer mode to ASCII or Binary
    ˇ USER <param> / PASS <param> user name and pass for logging on the server
    
    Note: some commands returned by the HELP command have no function assigned to them. This is the case for UNIX oriented commands such as STRU, SMNT which belong to the UNIX file system.


    4.2 Command Line parameters

    BPFtp Server allows you to add the following command line parameters:

    -h: put the server into tray on startup
    -s: autostart the server
    -p:21: specify ftp port (21 here)
    -service: tell the server it is running as a system service (see 'Install as system service' first).
    -nouserstats: disable saving account stats.
    -nousertransfers: disable user upload & download reports (no saving to file or monitoring in server activity).

    Command lines switches that can be specified when an instance is running :

        -reload  : reload user accounts (users.ini)
        -offline : put the server offline
        -online  : put the server online
        -exit    : application shutdown
        -open    : open the server to new connection if it was closed
        -close   : close the server from new connection
        -stat    : takes the file "stat.mdl" from the server installation directory which contains tags (%CNOW ...) and produces a file "stat.top" containing tags replaced by their value
        -startlogging : start logging to file
        -stoplogging  : stop logging to file
        -kickall      : disconnect all users currently connected to the server
    

    To add them simply right-click on the BPFTP-icon on your desktop and choose properties -> shortcut. In the target box append the parameters you want to use. For example: 'c:\Program Files\BPFTP Server\BPFTPSrv.exe -h' (without the quotes).

    4.3 Performance Tips

    As I know that many of you want the best performance for each program they have, we will give you some tips to make your server run faster.

    Console Tips

    As you may have already noticed, logging everything to screen can affect your server's performance: displaying lots of text lines really slows down the server (believe me).

    So what should I log ?

    • if your server has many clients (> 20), then do not log superfluous commands (specific commands or frequent commands like 'change directory', etc.) on screen
    • logging to file does not take many CPU cycles so I think you can log everything unless it becomes enormous so that you should set a daily log
    • Do not audit (log) users who are not critical to the server. IMO it's often useless to log anonymous user's commands. Alternatively you may want to log anonymous users only and 'trust' accounted users. See configure logging.
    • Do not log server answers to screen if not needed: try a 'SITE INDEX *.*' on 'C:\' and you'll see what I mean if you have 10000+ files...
    • disable 'log to screen when minimized' if you run the server minimized
    • arrange the receive buffer so that it feets your needs (I STILL recommend to keep it at 4096 though)
    • set the server priority to high if it is a dedicated FTP Server (use 'Realtime' at your own risk, you've been warned!)
    Let us know if you have other performance tips or general tips, we'll be happy to include them!

    4.4 Installing the server as system service

    I'm assuming you have installed FireDaemon by Formida which can be downloaded from http://www.firedaemon.com/.

    Well, I suggest you'll read the entire Formida's doc for installing BPFTP Server as a System Service.
    Personally I have done so by typing the following:

    c:\>%MXBIN%\firedaemon.exe -p
    FireDaemon v0.07b (c) 1999 Formida Software Corporation
    
    This process will install a new FireDaemon service for you.
    Please answer the following questions:
    
    Service Name (no spaces): BPFtpserver
    Application Working Directory (eg. d:\path): c:\program files\BPFtpserver
    Application Executable (eg. d:\path\filename.exe): c:\program files\BPFtpserver\bpftpsrv.exe
    Application Options (eg. /opt1 /opt2): -h -s -service
    Service successfully installed!
    Press Enter to continue.
    
    After that I entered:

    c:\net start BPFtpserver
    Le service FireDaemon Service: BPFtpserver démarre
    Le service FireDaemon Service: BPFtpserver a démarré
    
    That's all. To start it up at boot time I clicked on 'Services' in the configuration panel


    Some excerpts from Formida's FAQ:

    Q: "How can I make my service visible (for debugging)?"

    Go to the Services applet in the Control Panel. Find the appropriate Fire Daemon service. Click on the Startup button. This dialog box has two sections: 'Startup Type' and 'Log On As'. In the 'Log On As' section select the 'System Account' option and check 'Allow Service to Interact with Desktop'. You will then need to stop and restart the service.

    Q: "I want my service to start as a domain user. How do I do this?"

    Go to the Services applet in the Control Panel. Find the appropriate Fire Daemon service. Click on the Startup button. This dialog box has two sections: 'Startup Type' and 'Log On As'. In the 'Log On As' section select 'This Account' and type in the domain account you wish to use (eg. FORMIDA_A-P\JamesB) plus the domain password. If they are correct the user will be given the 'Log On As' a Service privilege. You will then need to stop and restart the service.

    Installing with Srvany (documented by Eaton, Mr. Bo (WDC)):

    To install BPFTP Server as an NT service. 
    
    This will cause the FTP server to start whenever the server is re-booted, whether a user logs in or not. It will also leave the FTP server running after a user logs off. This does not happen with the normal FTP installation.
    
    Install the NT 4.0 Resource Kit to C:\NTRESKIT\ 
    
    Go to a DOS prompt, and switch to the C:\NTRESKIT\ directory. 
    
    Execute the command line: 
    INSTSRV BPFTPSERVER C:\NTRESKIT\SRVANY.EXE 
    
    Run "regedit" from Start/Run. This is the registry editor. 
    
    Locate the entry: "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ 
    BPFTPSERVER\" 
    
    Add a "key" named "Parameters" 
    
    Within the new key "Parameters", add a string value named "Application" 
    
    Set the new "Application" entry equal to "C:\PROGRAM FILES\BP FTP SERVER\G6FTPSrv.exe" (without the quotes.) 
    
    Add another string value named "AppDirectory" 
    
    Set the new "AppDirectory" entry equal to "C:\PROGRAM FILES\BP FTP SERVER" (without the quotes.) 
    
    Add another string value named "AppParameters" 
    
    Set the new "AppParameters" entry equal to "-service" (without the quotes.) 
    
    Exit regedit. 
    
    Go to the Control Panel Services applet. 
    
    Find the G6FTPSERVER service, and select the "Startup" button. 
    
    Select Startup Type = Automatic, check Logon as System Account, and check "Allow Service to Interact with Desktop". 
    
    Run the FTP server and access "Setup/Main/General" for options. *Un*Check "Launch with Windows (9x version only)", "Allow multiple instances", and "Confirm Exit". Check "Activate FTP on Startup."
    
    Note: logging on as system user allows interaction with desktop, which means the FTP server console can be viewed. However because the logon is not a domain account, the FTP server cannot access network mapped drives. That is not a problem for our product, because the FTP server only accesses local files on the harddisk. However if there is ever an exceptional case where we want the FTP server to access network mapped drives, it must logon as a domain account, and the server console will not be visible.
    
    Note: If the server is started via the service, it is best to stop it by stopping the service through the control panel applet, rather than exiting from the ftp server console.
    
    To Test the Service: 
    Reboot the server, but do not logon as a user. 
    From another PC access the FTP server on the NT server. 
    Now logon to the NT server as a user, and check that the FTP server is running. 
    Now log-off from the NT server, but leave it running (Close all programs and logon as another user.) 
    From another PC access the FTP server on the NT server. 
    

    5.0 -- Misc