||BulletProof FTP Server for Windows
Windows Server 2012/2008/2003
64-bit & 32-bit
|Host your own Windows FTP Server with our BPFTP Server
Buy Now ::
Free Download (14.27 MB) ::
Version 2014.1.2.22 - 2015-FEB-03
A summary of this release comprises of:
- Fixes for Events Mgr -> SMTP and
processing of %VARIABLES
x Fixed, + Added, * Improved/Changed, i Information, ! Wish-List from Customers
Version 2014.1.2.22 - 2015-FEB-03
x Fixed: Management -> Events Manager -> SMTP: Added support for %VARIABLE in TO/CC/BCC
x Fixed: Management -> Events Manager -> SMTP: TO was always using the Email address of the sender configured in Management -> Settings -> Email
x Fixed: Management -> Events Manager -> SMTP: BCC/CC was not correctly being used
x Fixed: Management -> Events Manager -> SMTP: Fixed a problem where the last-line of the email body was being duplicated
x Fixed: Management -> Events Manager -> SMTP: Added UUENCODE and max-line-length of 76
x Fixed: Management -> Events Manager -> SMTP: Resolved a problem parsing for the %VARIABLE in the message body. It was output all variables instead
Version 2014.1.0.21 - 2014-SEP-04
* Improved: Server Monitor -> Log Watch: Removed a log message for every data-connection that is opened and NAT/PMP was not found to be supported during first attempt. Message removed "NAT/Router does not support UPnP Port-Mapping (NAT-PMP) as the first request timed-out. Trusting that port-forwarding is active for tcp/ip port: (on WAN) at the NAT/Router."
x Fixed: Management -> Settings -> NAT/Firewall -> Passive Data-Port Range: Reworked the changes made in 2014.1.0.20 to correct a rare condition of "integer overflow" and bug in which "socket-settings" where not reset upon trying another data-port (which caused it to not work on busy-port and still returned 21 as the data-port)
x Fixed: CRASH ON CLOSE: wrapped an exception handler around code in the form-destruction which was generating a crash-report TFBPSMain.FormDestroy()::FBPSDM_InternalLists.HitMeter_Download_SortAndStore.Free()
* Improved: Server Monitor -> Current Activity: removed reporting of *all* handled-exceptions to the Console -> Error Log, reporting only or when debug-logging is enabled (or $ifdef DEBUG)
Version 2014.1.0.20 - 2014-AUG-26
* Improved: Management -> Settings -> NAT/Firewall -> Passive Data-Port Range: Symptom, sometimes a ftp-client unable to retrieve a directory or file-transfer as the result of a bad port sent with "227 Entering Passive Mode (1,2,3,4,0,21)" (where ip=126.96.36.199 and port=21 (0*256+21)). Resolved a problem in which it was possible for an incorrect data-port (tcp/ip 21) to be returned to the ftp-client on heavily used ftp-servers (or ones configured with minimal data-ports). This was due to the method in which a data-port was selected from the pool, after 5 attempts of randomly picking a port and finding it busy; the software returned 21, which is bad and not in the data-port range. Rewrote this portion of the program to pick ports and try them for a period of 30 seconds, before returning an exception in the software. Example of bad return "227 Entering Passive Mode (1,2,3,4,0,21)". In sampling, the error occurred 58 times out of 38608 with a pool of 100 ports during a 20 hour run-time on Aug 25th.
Version 2014.1.0.19 - 2014-AUG-22
* Fixed: Management -> Auto|Manal-Import: Resolved a problem in Auto/Manual Import of previous version Settings, Users/Groups. (internal structure used to store these files was not being destroyed prior to new files being put into place, as a result the new files (aka imported) were being overwritten immediately by cached files stored in memory-structure)
* Fixed: STARTUP: On new installation and first-start, fixed a problem that crept up in 2014.1.0.18, in which the "Auto Import Migrate Settings, Users/Groups" wasn't being triggered if there were no current files found
Version 2014.1.0.18 - 2014-AUG-22
* Improved: Console -> Error Messages: refactored and moved into private frame-container
x Fixed: FREEZE ON STARTUP: Condition found in which the program appears to "freeze" during "Configuring..." and will not respond; added a timeout value of 10 seconds before it gives up. Condition was triggered when the computer was FIREWALLED and OUTBOUND connections on tcp/ip port 80 are BLOCKED. (http web-get on "http://bpftpserver.com")
x Changed: INTERNAL-CODE: ARM added to bpftpserver-service.exe due to TBPSLicense inclusion in TBPSSettings
* Changed: INTERNAL-CODE: DevEx (13.1.4 to 13.2.6)
* Changed: INTERNAL-CODE: InnoSetup from 5.4.2a to 5.5.5a
* Changed: INTERNAL-CODE: JCL 188.8.131.5275 (184.108.40.20697), JVCL 3.48 (3.45) ... it appears that JvFormStorage was generating a "divide by zero" exception on FormClose
* Changed: INTERNAL-CODE: Refactored to create a DataModule specifically for ImageLists (TBPSDM_ImageLists)
* Changed: INTERNAL-CODE: Refactored to create a DataModule specifically for Settings/Files (TBPSDM_SettingsAndFiles)
* Changed: INTERNAL-CODE: Removed JvAppInstances from TFBPSAbout, as it wasn't used
* Changed: INTERNAL-CODE: Rz migrated from 6.1.7 to 6.1.9 (stFilesCanBeFolders=FALSE, hides *.ZIP files from dialogs which ask for a folder)
* Changed: INTERNAL-CODE: madExcept updated to 4.0.10 from 4.0.9
x Fixed: Management -> Events Manager: Added support of loading configuration data migrated from older versions of the software produced before SEP 2013 (v2.x, v2010, v2011, before v2013.1.0.9)
x Fixed: Management -> Events Manager: If an invalid file was specified for the EXE, an exception-error was incorrectly displayed as a result of a bug that displayed the filename for the file-not-found condition.
* Improved: Management -> Security Options -> Defend Attacks -> Anti-Hammering: Added the ability to BAN-IP of guilty ftp-client, as well as Block (or ignore) for X minutes
x Fixed: Management -> Security Options -> Defend Attacks -> Brute Force & Anti-Hammering: Resolved a problem with a corrupt/null pointer (EXCEPTION: BPSSettings_BannedIPs.Assign())
* Improved: Management -> Security Options -> IP Access Control-List: On added item, the new item will be selected and made visible in the list
* Improved: Management -> Security Options -> IP Access Control-List: added sort of list whenever it is updated
* Improved: Management -> Security Options -> IP Access Control-List -> Add IP/ACL: Applied constraints to the values entered in an effort to help make sure rules are entered correctly. Only the following characters are valid for IP/DNS values: 0..9, A..Z, a..z, "*-."
+ Added: Management -> Security Options -> IP Access Control-List: Added notes at the bottom of the list of ACL to indicate that a "!" rule is from Anti-Hammer's "cool down" period.
x Fixed: Management -> Security Options -> IP Access Control-List: Rewrote the way the internal list of rules is mananaged in order to discover and correct null-pointer reference (EXCEPTION: BPSettings_BannedIPs.Assign())
x Fixed: Management -> Settings -> Scheduler: Added support of loading configuration data migrated from older versions of the software produced before JUNE 2011 (v2.x, v2010, and v2011.0.1.63).
* Improved: Management -> Settings -> Visual and Misc -> "TrayIcon: Send Minimized program to the System-Tray as Tray-Icon": If the program is minimized as a tray-icon *and* another copy is started, the original instance is brought to the foreground. If it was minimized as tray-icon, it will now come out of tray-icon as well.
x Fixed: Management -> Settings -> Windows System Service: If the service was turned-off and the GUI was started when the SERVICE was originally running: made change *not* to start SERVICE after terminating GUI (as there's no point, it was deinstalled)
x Fixed: Management -> Settings -> Windows System Service: Resolved an issue where the SERVICE would not be installed, if the Override Storage-Path was defined
* Improved: Server Monitor -> Current-Activity: refactored and moved into private frame-container
* Improved: Server Monitor -> Download|Upload Summary: reworked the code and optimized for sort a..z,z..a
* Improved: Server Monitor -> Log-Watch -> Update Every X Seconds: Added a function to allow customization on how often the log-window updates (0.1 to 60 seconds)
* Improved: Server Monitor -> Log-Watch -> Use Color (Slightly Slower): Added the ability to toggle on/off the use of color. This shows to have a slight speed improvement.
* Improved: Server Monitor -> Log-Watch: *Signficiant* improvement in speed for updates on log-window messages; window-control was moved from a RichEdit to a standard ListBox
* Improved: Server Monitor -> Log-Watch: Added horizontal scroll-bars to list of messages
x Fixed: Server Monitor -> Log-Watch: Moved trigging of log-window messages from a Threaded Timer to a normal Timer
* Improved: Server Monitor -> Log-Watch: refactored and moved into private frame-container
x Fixed: Server Monitor -> LogWatch -> Copy-To-Clipboard: If "Use Color" is turned on, resolved a problem where the text copied to the clipboard contained the 5 digit code + '~' (delimiter) for the color used on the line.
x Fixed: Server Monitor -> LogWatch: Fixed a problem which would send a blank-line to the log, if the "client" passed is NIL (TBPSLogging.LogIt.ReplaceLog() aborted if client==NIL)
* Improved: UNINSTALL: Fixed a problem which would cause the uninstallation of the service over-and-over-and-over (bpftpserver-uacadmin.exe) if the service was *NOT* installed. Error-Code of 14 was returned, installer appears to retry on errorlevel!=0
* Improved: User|Group Manager -> Edit -> Access -> Folders -> Right-Click "Add": Removed the display of "Virtual Folders" from the dialog (aka Control Panel items and Recycle Bin)
* Improved: User|Group Manager -> Edit -> Access -> Folders -> Right-Click "Add": Will now automatically navigate to the location of the first access-right or the currently highlighted access-right (Access-Rights will also be defaulted in the same way). (thx Paul E.)
* Changed: User|Group Manager -> Edit -> Virtual Folders -> Virtual Folders are only visibile in User|Group-Account's "Home Folder": changed this to be the default, as I believe the option to have it display in every directory is confusing
* Changed: User|Group Manager -> Edit -> Virtual Folders -> Virtual Folders are only visibile in User|Group-Account's "Home Folder": Made top/first option
Version 2014.1.0.17 - 2014-MAY-29
x Fixed: External API: "--storagepath=c:\somedir" has been corrected to *not* ask for "manual import" if the directory specified contains files
* Improved: User|Group Manager -> Edit -> Bandwidth -> "Uploading|Downloading Files to the Server": The default has been changed to 15 KBytes/sec vs 512 bytes/sec, as the previous value is just too small to be reasonable. 15 KBytes/sec is, historically, a good low-value as most non-business internet will start bandwidth limitations at 30 KBytes/sec for upsteam.
x Fixed: Management -> Summaries/Stats: Fixed a "Crash Report" that was activated when the file-size was over threshold (similar to the bug corrected in 2014.1.0.16, however this is related to continuing the process of loading the file into memory after the file has been rotated.
* Improved: DEBUG-BUILD: removed the ZIPing of the debug-log if the program is compiled as DEBUG
* Improved: Management -> Backup/Import -> Manual Import: Different messaging used. Buttons now labeled "Import","Cancel"|"Use Defaults", title changed to "Import Previous Installation"
Version 2014.1.0.16 - 2014-MAY-14
x Fixed: CHROME: Resolved a problem in which Google Chrome would sometimes return a blank directory-listing. This appears to have been a timing issue with OnClientDisconnect (wrapped each action in exception wrapper, moved Event-Handler before closing of sockets, added check for NULL references prior to close)
x Fixed: Management -> Summaries/Stats: Fixed a "Crash Report" that was activated when the file-size was over threashold
Version 2014.1.0.15 - 2014-MAY-08
* Improved: Auto-Update: On daily check for new-version, changed the program to *not* display a dialog-box asking to install and relying on the one-screen "Update Available" to communicate to the user
* Improved: External API: Command-Line Parameters can now be specified in typical posix||dos fashion ("--paramoption=value" || "-paramoption=value")
+ Added: External API: Created a new command-line paramater which can be used to specify the "storage path" ("--storagepath=c:\somedir\") for Settings, Users/Groups; which is very useful for the new "Allow Multiple Instances", as they should have their own files due to the high likelihood of conflict in sharing these files with other instances.
* Improved: External API: When specifying "--storagepath" at the command-line, if the specified directory is empty OnStartUp, the program will activate the Auto-Import function to find previous installs; if none are found, it will execute the Manual-Import and provide a user-dialog to select the folder.
* Improved: External API: bpftpserver-adduser.exe, Added a "Press Any Key" to all console-error messages at program start
* Improved: INTERNAL-CODE: Consolidated all logging to the "Windows EventLog Viewer" into a common use function
* Improved: INSTALLER: Added a new command-line parameter ("/exit-for-installer") to instruct BPS to close the GUI without restarting the SERVICE, this prevents a condition where the installer can't update the files because the SERVICE is running (because it was started when the INSTALLER instructed the GUI to close and the SERVICE was configured to run)
* Improved: LICENSE-CODE: Repaired the check of expired-license during run-time and added the display of said license-information to log-window. This also corrects UI messages that indicated the "trial period" and not "license period" had expired.
* Improved: LICENSE-CODE: Separated the expired-license check from the check-for-newversion/external-ip-refresh in order to reduce conflicts
x Fixed: Management -> Backup/Import: Fixed a problem which resulted in a "Crash Report", this was caused when the function was moved out of "Settings" and into it's own sub-function of "Management"
* Improved: Management -> Settings -> General -> Adv General Options -> Override Storage Path: Checkbox, Value and Button are not enabled if "--storagepath" is specified at the command-line
+ Added: Management -> Settings -> Options -> On Program Start: "Allow Multiple Instances"
* Improved: Management -> Settings -> Windows System Service: Service will not start if "Allow Multiple Instances" is turned ON
Version 2014.1.0.14 - 2014-APR-30
x Fixed: INTERNAL-CODE: Fixed a problem which incorrected sent the following message to the log-watch when ftp-user-account was denied due to invalid login, "INFO: logged in anonymously with login/password: xxx/xxx"
x Fixed: INTERNAL-CODE: Re-enabled visual-styles in the manifest with "microsoft.windows.common-controls:6595b64144ccf1df". This was taken out in the previous release, as my development machine showed problems in the XML when the dependency was added. But I want modern visual-styles.
* Fixed: LICENSE-CODE: Corrected a type-o in the message that is displayed with an expire-trial where it reads "2011" at the end of the product-name; this is a artifact of when the product name had the year included.
* Improved: LICENSE-CODE: When the subscription-code has expired, the software will now redirect the customers to a special renewal area of the website and prompt for the new license code. The expiration-date of the code will be displayed, if it was stored (storing of date is new with this release)
* Improved: LICENSE-CODE: Change the max-connections for the TRIAL from 1 to 2, in order to work with web-browsers which like to use more than 1 connection
* Improved: Management -> Backup/Import -> Auto|Manual-Import: The number-of-accounts found in the files will now be displayed, as well as a big-red-warning if there are ZERO accounts in the specified files. (Helps prevent importing default aka "blank files" from previous installations that were not used)
* Improved: Management -> Backup/Import -> Backup: Ability to backup the Users/Groups and Settings to a user-specified directory as a ZIP file containing all required files.
* Improved: Management -> Backup/Import: New location, previous location was initially buried in Management -> Settings
* Improved: Management -> Summaries/Stats: Added a setting for the max-file-size for the files (default 10MB)
* Improved: Management -> Summaries/Stats: Added new options to turn ON|OFF the summary of files uploaded/downloaded as displayed in Server Monitor (as heavy file-activity on a private server generates incredible ammounts of data, function is more for publically available files for "anonymous" like accounts)
* Fixed: Management -> Summaries/Stats: Added a CR/LF pair to the end-of-line (record) in "bpftpserver-transfer.log"
+ Added: Management -> Summaries/Stats: Added options to turn ON|OFF writing to special log-files which allow for third-parties programs to parse for information regarding the ftp-server's activities with ftp-user-accounts (bpftpserver-transfer.log and bpftpserver-xferlog.txt, default:FALSE, performance gain)
+ Added: Management -> Summaries/Stats: Added options to turn ON|OFF maintenance of the statistics for users or groups (slight performance gain)
* Improved Management -> Security Options -> IP Access Control-List -> Add IP ACL: Typing of "+|-" into the "Access-Control Entry" will now auto-toggle the approriate "Access/Refusal Restrictions" and will not add the character to value entered. (this prevents a BAN rule with a "+" sign in it, which is very confusing).
* Improved Management -> Security Options -> IP Access Control-List -> Rename of "IP-ACL" to "IP/ACL" on buttons and pop-up menus
* Improved: Management -> Security Options -> IP Access Control-List: Depending on the contents of the current IP ACL, additional text is added to the header "IP Access Control-List" in order to help explain the current rule-set. Text: "(Rules inherit BAN|ALLOW on all IPs: [-|+]*.*.*.*)"
* Improved: Management -> Settings -> NAT/Firewall -> Static IP Address -> Added the following language: "NOTE: If your network runs Stateful-Packet-Inspection (SPF), you may need to enter the LAN/NAT IP-Address for this computer into the "Static IP Address" above (vs the detected WAN-IP Address for your internet connection)."
x Fixed: Management -> Settings -> Private P2P -> Free Files/Dirs: fixed an alignment program with the "help" button that was causing it to be fixed-pos in the window
* Improved: Server Monitor -> Upload|Download Summaries: New title for this functionality, previously named "Files Download|Uploaded"
* Improved: UI-Word Wrap: Went through the UI and fixed several instances where "wordwrap" would not increase the "height" of text and would trunctate words if they wrapped passed the default height of the control.
Version 2014.1.0.13 - 2014-APR-07
* Improved: DEBUG-MODE: Added the executables file date/time to initial output of the debugger (helpful for development-debugging and running the same version, but different build)
* Improved: INSTALLER: By default, the installer will not suggest the creation of a icon in the Quick-Launch-Bar (unless it was installed before); as Windows 7 removed this feature. (Quick-Launch was first introduced in the Windows Desktop Update to Windows XP and is a relic)
* Improved: INSTALLER: Restart Service after installation of new version and GUI is closed. If the SERVICE was running during the installation of a new-version: the SERVICE is terminated and the GUI is started post-install. Resolved a problem in which the GUI would not start the SERVICE at terminatation, since it wasn't technically running when the GUI was started.
x Fixed: INTERNAL-CODE: Embedded Manifest was causing a SideBySide (sxstrace) error. I could only replicate the problem on my DEV machine, the identical DEV-HOST machine had no problem. It appears to have been the result of a mix of TAB/SPACE characters used in the embedded manifest (TBPSMakeManifestEntry.WriteManifest()) ... "Activation context generation failed for "bpftpserver.exe".Error in manifest or policy file "bpftpserver.exe" on line 14. Invalid Xml syntax."
* Changed: INTERNAL-CODE: Rz migrated from 6.1.4 to 6.1.7 (fixes for ListView flicker)
x Fixed: INTERNAL-CODE: When running as service and impresonating a os-user, added code to CloseHandle(hServiceToken)
* Improved: Management -> Logging: Added a "GUI|SVC" designator to the beginning of every line, stating if the log-message came from the SERVICE or GUI Mode.
* Improved: Management -> Settings -> Email -> SMTP Port: Added an additional line of text to explain defaults more clearly.
* Improved: Management -> Settings -> Save: Removed a redundant question that was posed, if the GUI was started when the SERVICE was running and the SERVICE is configured; there's no point to asking them "Would you like the SERVICE to start when the GUI is terminated?"
* Improved: Management -> Settings -> Service: OnLogOff, If the GUI is running and the SERVICE, when the Windows Log-Off is issued the program does not have the opportunity to Restart-the-Windows-System-Service (permissions fail for start UACAdmin to start Service). As a result, a flag is set for displaying a message to the customer when it's ran via the GUI, that they need to close the program before issuing a Windows Log-Off.
* Improved: Management -> Settings -> Service: OnStartup, If the SERVICE is running, the GUI will take over. This logic was improved to keep the GUI from issuing the BPS_APPMSGID_EXIT over and over (every 250 ms) while it waited for the shutdown. Now using a flag to issue the command only once (BPSIPCServer_OnPerform::PerformAction==BPSCServerPerformTerminate)
x Fixed: Management -> Settings -> Visual/Misc -> "On Close: Confirm request to close...": Found a condition in which this was being set to FALSE: 1) when the service was closed after starting GUI or 2) closed from the command-line with the parameter "-exit" or 3) via the scheduler with the command GoOfflineAndExit or ExitAndOSLogout
* Changed: Management -> Settings -> Visual/Misc -> "Visual": Added pre-fixes to the options in this category, "Tray-Icon:", "On Start:", "UI:" and "On Close:"
* Changed: Management -> Settings -> Visual/Misc: Moved two options from the "Options" area to "Visual", as it makes more sense: "Confirm requests to close and terminate actively running ftp-server" and "Disable logging to screen when the program is minimized as a Tray-Icon"
x Fixed: Management -> Settings -> Windows System Service: Changed the method of informing the customer that the service-mode was installed. From a question to a statement from "Would you like the SERVICE to start when the GUI is terminated?" to simply "...has been installed as a Windows System-Service and will now automatically start-up at Windows-Boot and run without logging into the computer."
x Fixed: Management -> Settings -> Windows System Service: Resolved a problem that was informing the customer that the service-mode was installed, even if it already was and nothing was changed.
* Improved: Management -> Settings -> Windows System Service: Validation of the Domain/Login/Password (credentials) entered. Previously, only the priveledge of LogonAsService was checked. However, this didn't check the ability to actually login with the password. Added check in order to help prevent service issues with incorrect password.
* Improved: OnClose: Added the "ESCAPE" key to the dialog-box that asks "Stop BPFTP Server...Warning there are X user(s) connected...Abort All|Wait|Soon"
x Fixed: OnClose: Resolved and centralized all close/exit methods into a single entity; this allowed for some fixes to the method in which the software waits for the ftp-client to (close-after-transfer and close-after-quit) to function correctly.
* Changed: Server Monitor -> Log Watch: Renamed checkbox to simply "Default View on Start-Up" vs "Make this your default view on program-start"
* Improved: Server Monitor -> Logging: Added prefixes to "SERVER-EXTERNALCMD" for messages that were triggered via command-line parameters
* Improved: Server Monitor -> Logging: Added prefixes to all Client->Server and Server->Client messages, indicating just that; the labeling of the message as to it's source and destination
* Improved: Server Monitor -> Server Info: Flicker Reduction, Eliminated a "panel" used to create a grey-padded-area around the information
x Fixed: Server Monitor -> Server-Info: Removed a "Check for Update" that could be executed by dbl-clicking the "Installed|Available" under "Version Information". Please use Management -> Check for Updates.
* Improved: Server Monitor -> Server-Info: Reworked the update code to reduce the "flicker" that was appearing every few seconds.
* Improved: UI: Flicker Reduction, Breadcrumb "panel", found several cases where the color was set to clBtnShadow vs clBtnFace and this causes a "flicker" of drawing a dark-color, then a light-color when sizing the program's main-window
* Improved: UI: Flicker Reduction, Removed a "panel" that resided at the very bottom of the z-order and exposed a small grey-padded-gradient-area around everything under the "button".
* Improved: UI: Flicker Reduction, Using DoubleBuffered for all Toolbars
Version 2014.1.0.12 - 2014-MAR-07
* Changed: BREAKING-CODE: Removal of the major-verison-number from the Windows-Registry-Entry needed to execute the GUI on Login. This will require retoggling the setting. (BPSConst.BPS_RUN_ENTRYNAME)
* Changed: BREAKING-CODE: Removal of the major-version-number from the 5x Windows-Firewall-Rule-Names; new names: "BulletProof FTP Server (Service|Executable|Control-Port|Data-Ports|Remote-Debug)"
* Improved: DEBUG-MODE: Added a limit of 100 MB to the resulting debug-log-file, after which the log-file will be "rotated" and a new one will be used with an incremented index number appended to the base-filename (ex:
* Improved: DEBUG-MODE: After each "rotated" debug-log-file, the file will be compressed into a ZIP archive and the original *.CSL file will be removed. Compression runs nearly 20:1, so a 25 MB debug file will be around 1.3 MB (perfect for Email)
* Improved: DEBUG-MODE: Drastically increased the speed of the debug-logging-subsystem. Previously each write-operation required opening/closing the debug-log-file, moved to a single point of open/close during the object's creation/destruction.
* Improved: INSTALLER: Added a "Automatically Add Windows Firewall Rules" which will make a call to the UAC-Helper (bpftpserver-uacadmin.exe) with the parameter "--windows-firewall --add-all-default-rules". Previously, this installer option was available, but it only added the program-exe to the exclusion list in the windows-firewall (which does little).
* Improved: INSTALLER: Added the ability for the installer to close the program if it's running as a GUI on the desktop (stopping the SERVICE automatically has been support for some time).
* Improved: INTERNAL CODE: DevEx (13.1.4)
* Improved: INTERNAL CODE: madExcept updated to 4.0.9 from 4.0.8
* Changed: INTERNAL-CODE: ARM migrated from 9.62 to 9.64
* Improved: INTERNAL-CODE: Change to the default storage-path and omitted the major-version-number from the path. This will allow for a more streamlined upgrade process in later versions. The new default storage-path is the same, but the version-number will no longer be appended to it. (%LOCALAPPDATA\BulletProof Software\BulletProof FTP Server\)
x Fixed: INTERNAL-CODE: Corrected a problem in which file-uploads could not be resumed (REST/RETR), if the resume-point was over SINT32 (2,147,483,647) bytes; this was a result of TStream.Seek() stealthly denying supporting for 64-bit integers, moved to TStream.Position for 64-bit integer support. (source-code changes tagged "::SEEK!=64bit::")
x Fixed: INTERNAL-CODE: Exception blocks have been auditted with the inclusion of "try..except..end" in conjuction with all "try..finally..end" (modules:init and main only)
* Changed: INTERNAL-CODE: Removal of the major-version-number from the MUTEXT string used to coordinate actions in the GUI/SERVICE
* Changed: INTERNAL-CODE: Removal of the major-version-number from the IPC name used for communication between the GUI/SERVICE
* Changed: INTERNAL-CODE: Removal of the major-version-number from the "Source" stored in the Event Viewer; events will now be logged as just "BulletProof FTP Server"
* Changed: INTERNAL-CODE: Removal of the major-version-number from the Tray-Icon's hint
* Changed: INTERNAL-CODE: Updated 7z.dll to v9.20 from v9.07b
x Fixed: LICENSE-CODE: Fixed a problem where the helper-programs were incorrectly being counted as a "another copy" of the software running on the network
x Fixed: LICENSE-CODE: Make a change to prevent erroneous report of "you have surpassed the number of licenses purchased..." (CopiesAllowed returns 0)
x Fixed: Management -> Events Manager -> Web: Clicking ON/OFF the "HTTP Post to Web-URL" was not disabling the "Username/Password" under "Requires Authentication".
Version 2013.1.0.11 - 2013-OCT-02
* Changed: LICENSE-CODE: Made a change to prevent "nagging" in the secondary helper-programs when the trial or license (aka certificate) expires. This helps to reduce confusion with multiple points of "entering a registration code".
* Changed: LICENSE-CODE: On removal of a license-code, added additional code to UNREGISTER the helper-programs as well.
* Changed: LICENSE-CODE: Added code when running as a Windows System-Service to make sure the license has not expired or not authorized to run as service (this prevents as "hung service" as a dialog-box is waiting for user-interaction in Session-0)
* Changed: Management -> Events Manager: Moved the actions for an event to a Tabbed:Page-Control as it was just getting messy with all the UI elements
* Changed: Management -> Events Manager: Added an ICON to the list of events, if an action has been set for the event
* Fixed: Management -> Events Manager: Resolve a problem where the small-icon wasn't being displayed to the left of the Event-Entry-Name if it was set by the user
* Fixed: Management -> Events Manager -> OnUserQUIT: Fixed a problem in which an "Access violation" was raised at the end of processing the event, as processing an event imposes a delay and the Data-Connection is already closed. (Check for Assigned(Client.DataSocket) before Client.DataSocket.Close())
* Fixed: Management -> Events Manager: Wrapped all calls to the EVENT-MGR with try..except..end with logging in an effort to keep any "external processes as a result of events" from disrupting the servicing of ftp-clients
* Changed: Management -> Events Manager: When clicking on an event with an assigned-action, the UI will switch to that action-tab
* Changed: Management -> Settings -> Email: Increased verbosity and information displayed to the user in the user-interface when performing a test of the SMTP Settings (added output via ListBox, turning off/on UI elements that we being tested before/after test, abort test, disabling of the save/cancel buttons during test, moved from SSL-Implicit to SSL-Explicit)
* Changed: Management -> Settings -> Email: Added a "Default Settings to GMAIL" link that will automatically populate the fields with information needed to access GMAIL's SMTP server via TLS/SSL
* Changed: INTERNAL-CODE: MadExcept updated from 4.0.7 to 4.0.8
x Fixed: User Interface: Fixed a linkage problem where Bit-Buttons in the program had an ImageIndex defined, but the Imagelist was NULL; as the result of changes in 2013.1.0.7 to reduce the memory-footprint, I believe the imagelists were removed from the IDE and put back in, at this point the linkage was lost
Version 2013.1.0.10 - 2013-SEP-06
* Changed: Management -> Settings -> Service: Added dependencies on Windows Sub-Systems: Remote Procedure Call (rpcSs), Security Accounts Manager (samSs), TCP/IP Protocol Driver (Tcpip) for the BPFTP Server when running as a SERVICE. On some computers, especially older systems and those with slower peripherals; it is needed to "WAIT" for these SERVICES to load in order for the software to work correctly.
* Changed: Management -> Settings -> Service: On Activate/Deactivate of the SERVICE, the program was not re-querying the windows-service-database for the status of the service-entry; as a result it was receiving the "cached" value stored in the UAC-helper object (to reduce UAC Notifications in Windows). Corrected this behavior and setting the new "cached" value based on the completed action (activate/deactivate).
Version 2013.1.0.9 - 2013-SEP-05
* Changed: AUTO-UPDATE: On failure to obtain the latest-version information, the error has been changed from a modal-dialog to "Console -> Error Messages" (as unattended consoles would fill with messages). This happens for computers which have firewalled outbound connections on tcp/ip port 80.
x Fixed: AUTO-UPDATE: Resolved a problem where the program would fail to update, if the SERVICE was running when the GUI was launched and the subsequent check-for-update had been executed. This was because, then the program closed to apply the update; it restarted the SERVICE on terminate; this causes the update-program to fail to apply the binary (still-in-use) and the GUI is lauched and tells the user of the error.
* Changed: INTERNAL-CODE: Added exception handlers to TBPSSettings.Destroy() in order to process and handle any problems during the FREE of internal objects
x Fixed: INTERNAL-CODE: Resolved a problem in parsing ftp-client command "cd ...", where the number of periods is greater than two (parent-directory) and an stack-overflow occurs via too many recursive calls to resolve directory (Access Violation "LastCP='RF'")
* Changed: Management -> Events Manager -> SMTP: Added the processing of variables (%CLIENTNAME, %FILENAME, etc) to the Email:Subject (Email:Body has always been processed)
x Fixed: Management -> Settings -> NAT/Firewall -> Static IP: If the currently bound IP-Address for the NIC was not found, the address of 0.0.0.0 will be returned. Previously the valye "UNKNOWN" was used, but this caused an exception EConvertError to be raised; as it could not be converted from STRING to INTEGER.
* Changed: Server Info -> IP Information/Version Info: If the version/ip could not be obtained, instead of showing UNKNOWN or "0.0.0.0"; it will now show "ERROR: Firewalled".
* Changed: Server Info -> Version Info -> Available Version: Will now accept a dbl-click to trigger a manual-check-update
x Fixed: User Interface: Fixed a condition with where the position/dimensions were not saved correctly if "Start Minimized to System-Tray as Tray-Icon" was enabled from Management -> Settings -> Options
x Fixed: User Interface: When F9 is used to MIN/MAX to/from a System-Tray-Icon, the window position/size will now be retained with a save/load for MIN/MAX to System-Tray-Icon
* Changed: User-Access-Control (UAC): Changed the text displayed during the process of executing the UAC helper (bpftpserver-uacadmin.exe) to show what the program is changing via the UAC.
Version 2013.1.0.8 - 2013-AUG-01
x Fixed: INTERNAL-CODE: Added logic to coordinate file-locking for files having to do with statistics; as these files could be written simultaneously by different functions in the program. (Hit-Meter, Top-Stat, Online-User Stats, TX-Files). Internally, this was resolved by replacing all AssignFile() functions with the new function.
x Fixed: User Manager -> Edit -> Private P2P: "Credit XXX bytes", fixed a problem when the field focus has "left" in which the control-for-the-value was being typecast incorrectly "TEdit vs TRzEdit"
* Changed: Management -> Events Manager -> Execute: Added a field for parameters to the executable using the internal VARS, example: %CLIENTNAME %FILENAME
x Fixed: User Manager -> Edit -> Login -> Home IP: Resolved a problem in which, if a Home-IP is assigned to the user; it would refuse to login the user and report "LOGIN-ERROR: No Account Matches" in Console -> Error Messages (Multi-Homed IPs are defined in Management -> Settings -> Multi-Homed IP)
x Fixed: User Manager -> Edit -> Login -> Home IP: Fixed a problem where the drop-down wasn't being cleared between subsequent loads of information and resulted in duplicate entries.
* Changed: Server Info -> IP Information -> Listening IP: Based on the information in Management -> Settings -> Multi-Homed IP, made a change to display either: *.*.*.* (Toggled OFF), 127.0.0.1 (Toggled ON, but no IPs defined) or the list of IPs defined
* Changed: Management -> Settings -> Multi-Homed IP: Added additional language as a "NOTE:" to describe the behavior when the option is TOGGLED-ON, but no IPs are specified.
x Fixed: Server Monitor -> Log Watched: Discovered a rare condition in which certain log-messages were not being sent to the FILE log (TBPSLogging.LogIt(); initialization of bIsIPLoggedToFile along with bIsIPLoggedToScreen)
* Changed: INTERNAL-CODE: Reduced the memory-footprint used by the IMAGES by coding them as a RESOUCE (ImageList) versus reading the bpftpserver-theme.dat file; parsing and loading, which was resulting in a doubling of the memory footprint, as well as delaying program load.
x Fixed: Management -> Security -> IP Access Control-List -> Remove IP-ACL (button): Resolved a problem where; when an IP ACL is removed from the list, the program was reloading the list between each removal, which caused internal pointers to go haywire and a "Crash Report" to be generated.
* Changed: Server Info: Cached the "License Info", instead of retrieving the information from the license-key; as this was being performed every second and could be the result of a Out-of-Memory condition after many hours of run-time in VerifyKey()
* Changed: AUTO-UPDATE: Potentially isolated a problem in which the "What's New" dialog failed to properly initialize and resulted in a "Crash Report" being generated (BugID:0000017)
x Fixed: AUTO-UPDATE: If there was a problem applying the update, BPS will create a dialog with "Auto-Update: There was a problem in applying the updated-version during our last attempt."; if MANUAL is chosen, it will come back and INCORRECTLY say "You have the latest version."; fixed the condition in which the program had the two version-number parameters reverse in a call to BPSVersionCompare.Compare()
Version 2013.1.0.7 - 2013-JUNE-26
x Fixed: Console -> Error Messages: Fixed a problem where DEBUG log messages were displayed, regardless of whether or not the DEBUG-MODE was on.
* Changed: Server Monitor -> Current Activity: There still appears to be an access-violation that occurs when the software is displaying information about currently-connected ftp-accounts; as a result, the display-routines and the ftp-connection "clash" and trigger an access-violation. In an effort to isolate the problem area, I've wrapped all display-routines that touch this area of the program with a "try..except..end" and display the exception in the Console -> Error Messages
x Fixed: Server Monitor -> Current Activity: Located a condition in which a Divide-By-Zero exception is raised, wrapped with try...except...end (Line:71 in TFBPSMain.actionServerMonitor_CurrentActivity_RefreshAllExecute)
x Fixed: User|Group Manager -> Access-Rights -> Quick Edit (right-click-menu-option): Corrected a problem where this menu option didn't do anything, in restoring this functionality, the ability to click-row-to-edit was enabled, as well as F2 to edit (EditOnRowClick:=TRUE)
+ Added: BPFTPSERVER-ADDUSER.EXE: Added the "--bulkimport-help-as-html" parameter to output help for bulk-imported-users-via-csv as HTML
+ Added: BPFTPSERVER-ADDUSER.EXE: Added the "--help" parameter to output help (vs no command-line parameters, which also outputs help)
Version 2013.1.0.6 - 2013-JUNE-24
x Fixed: AUTO-UPDATE: Fixed a problem with "Update Available (CLICK HERE)" and "Management -> Check for Updates" which (INTERNALLY) was treating the update as a non-update and preventing the in-place update of the program
* Changed: AUTO-UPDATE: Added code to change the mouse-pointer when hovered over "Update Available (CLICK HERE)"
Version 2013.1.0.5 - 2013-JUNE-24
* Changed: Console -> Error Message: changed the error message when a failed login has occurred from "LOGIN-ERROR: Account does not exist, username:[XXX]." to "No-Account matches for username:[XXX] with password:[XXX]."
x Fixed: Management -> Logging: Fixed a problem in which logging would not start-up correctly when program is initiated
x Fixed: Management -> Logging: Corrected a problem where log-files were not being sent to the "Log Directory" as defined in Management -> Logging -> Log Settings
* Changed: Management -> Logging: Rewrote the logging system and pulled all code in a shared object for more stream-lined usage and later extension
x Fixed: Management -> Logging: Fixed a UI problem where the "buttons" would not show as being "down" for the currently selected sub-function: Logging Settings, Logging Events, Logging Options
x Fixed: Management -> Logging -> LogWatch: Fixed a UI program where the log-watch wouldn't update with details and the "buttton" for "Log Watch" would not be "down"; if the "Make this your default view on program-start" was toggled ON
x Fixed: Management -> Settings -> Options: Auto-Minimize to Tray on Start
* Changed: Management -> Settings -> Service: Additional logic to prevent redundant calls to UAC-Admin when the license does not allow for Windows-System-Service (Trial or HOME)
* Changed: Management -> Settings -> Service: changed the Service-Mode from "LocalSystem" to explicitly use a OS-USER account
* Changed: Management -> Settings -> Service: changed the Service-Name from "BulletProof FTP Server 2013" to just "BulletProof FTP Server"
* Changed: Management -> Settings -> Service: defaulting the DOMAIN and USER to the values discovered in environment variables USERDOMAN and USERNAME
* Changed: Management -> Settings -> Service: checks to make sure the OS-DOMAIN and OS-USERNAME are the same as the ones entered for the SERVICE-MODE (if Override-Storage Path is OFF), as different login will cause the Settings and User/Groups to be unavailable as they are stored in the %LOCALAPP% path for the OS-USER. Enabling "Override Storage-Path" is the only way to allow the SERVICE-MODE to run under a different OS-USER account as the GUI mode.
* Changed: Management -> Settings -> System Service: Automatically populating the OS-DOMAIN and OS-USERNAME with information from the environment-variable; as a "blank value can lead to bad data".
x Fixed: Management -> User Manager -> Delete User: Resolved a problem where, after deleting a user-account, the program would change the UI to the "Access-Rights" page (instead of "ROOT") and disallowed the changing of "pages" for the user-account until you re-clicked on a user-account
* Changed: INSTALLER: Added windows-start-menu-option for "BulletProof FTP Server Debug-Mode" in order to make "trace logs" on the desktop of the OS-USER
x Changed: MANIFEST: Added *.manifest to be embedded in "bpftpserver-service.exe"; as it wasn't earlier, only "bpftpserver.exe" and "bpftpserver-uacadmin.exe" (this may help for some installations of Windows which require MANIFEST files for Code-Signed executables, but just a precaution)
x Changed: MANIFEST: Changed the "Version" from standard "x.x.x.x" to just the major version of "2013"
* Changed: STARTUP: In Windows XP/2003/2003R2, BPS will only run if the OS-USER is an Administrator; since these platforms DO NOT support UAC, there's no way to "elevate rights" in order to make modifications to the Windows Registry or System Service.
x Changed: STARTUP: In the event that the GUI is set to start OnWindowsLogin *and* the machine is set to Auto-Login a OS-USER *and* the Service is set to start on Boot; beefed up the logic that allows the GUI to communicate to the SERVICE and ask to terminate and take over; as it appears it was stuck in a loop due to both the SERVICE and GUI executing it's own start-up code
x Fixed: UAC-ADMIN: Enhanced logging and error-reporting when "bpftpserver-uacadmin.exe" fails to perform the requested function. Originally, this was done to locate some errors that were occurring in Windows XP when the program is not run as an OS-USER with ADMIN rights
x Fixed: UAC-ADMIN: Fixed Access-Violation, No additional information; appears to have been a transient problem that was inadvertently fixed before reported by customer
x Fixed: UAC-ADMIN: Fixed a problem where the DOMAIN parameter was ignored due to using FParams.IndexOf(); changed to FParams.IndexOfName() for (bpsuacServiceInstallLoginAsOSUSER, bpsuacServiceChangeCredsAsOSUSER, bpsuacServiceCanUserLogonAsService, bpsuacServiceToggleUserLogonAsServiceON, bpsuacServiceToggleUserLogonAsServiceOFF)
+ Added: INTERNAL-CODE: Added OS identification code for Win2k3R2, Win8, Win2k12 and Win2k12R2
* Changed: INTERNAL-CODE: ARM migrated from 9.60 to 9.62
* Changed: INTERNAL-CODE: Redesign of IPCServer in order to remove linked code from main-form (using events instead of statically-linking-called-functions-of-mainform, minimizing circular unit reference)
* Changed: INTERNAL-CODE: Rz migrated from 6.1.2 to 6.1.4 (fixes for double-buffered and tranparent panels)
* Changed: INTERNAL-CODE: Enabled Crash-Reporter for the first time in v2013
* Changed: INTERNAL-CODE: Fixed web-browser launch code for "Upgrade License" button (and many others) which failed to launch and just looked like it did nothing; Created and Replaced all MAIN-FORM-CODE that opens a URL with a call to Internet Explorer; as not all web-browsers (CHROME) correctly install themselves as the *default* application for the "http" protocol (windows error msg: Class not registered)
* Changed: INTERNAL-CODE: MadExcept updated from 4.0.6 to 4.0.7
* Changed: INTERNAL-CODE: Added an OnInfo and Try..Except..End wrappers for the User-Accounts-List (TBPSAccountUserList) in order to help discover a condition in "self==NIL", but because it's an TObject, all of the methods/routines exist; so TList.Add() will generate an EXCEPTION (BPSTypesAccountsUser.src[line 869] -> self.MakeCopy() -> self.Add(newAcct))
Version 2013.1.0.4 - 2013-MAY-19
* Changed: Managment: Added a "Check for Update" button to the HOME page for MANAGEMENT options.
x Fixed: Auto-Update: Fixed a problem where the auto-update functionality would display that "An Update is Avail...", but there isn't really and it doesn't update.
x Fixed: DESKTOP: *.csl files on desktop, fixed a problem in the debugging code which was generating CSL files on the desktop when not in DEBUG-MODE
Version 2013.1.0.3 - 2013-MAY-17
* Changed: Version-Update will no longer show available for users of BETA or UNRELEASED versions (example: v2013.1.0.3 > v2013.1.02)
* Changes: Windows-GDI-Heapsize: Disabled the check for the amount of memory allocated to the Windows GDI Heapsize (Windows XP,2003); as it appears *ANY* changes to the Windows Registry key that contains this value will result in a "STOP c000021a" (even if it's the exact same value)
* Changed: NAT-PMP: "errors" related to the NAT Port-Mapping-Protocol will no longer be displayed at the bottom "Error Console". As these are helper functions and ask the NAT/Firewall to dynamically open firewall ports; it's likely that the customer's NAT/Router does not support NAT-PMP or it has been disabled
x Fixed: NAT-PMP: If the NAT/Router fails to respond to NAT-PMP, a flag will be set to not try again; as each and every data-connection was making a request to open a port and causing a slow-down.
x Fixed: Management -> Settings -> General -> Remote-Debug: Fixed a problem where, if "Remote Debug" was *ON*; and it is turned OFF and internal Exception is thrown and the "Save" button for Settings will not appear to do anything.
Version 2013.1.0.2 - 2013-MAY-13
+ Added: Auto-Update: If the update-server is unavailable, the program will now inform the user (instead of silent fail)
Version 2013.1.0.1 - 2013-MAY-10
i Information: First-Release of MAJOR version revision
=== OLD RELEASE DATES (Details on Each Change is Suppressed)
Version 2011.1.0.76 - 2012-MAY-03
Version 2011.1.0.75 - 2012-MAY-03
Version 2011.1.0.74 - 2012-MAR-07
Version 2011.1.0.71 - 2011-OCT-07
Version 2011.1.0.70 - 2011-AUG-25
Version 2011.1.0.69 - BETA - 2011-AUG-16 - ONLY BETA
Version 2011.1.0.67 - 2011-JUL-05
Version 2011.1.0.66 - 2011-JUL-03
Version 2011.1.0.65 - 2011-JUN-30
Version 2011.1.0.64 - 2011-JUN-19
Version 2011.1.0.63 - 2011-JUN-13
Version 2010.1.0.43 -- 27-OCT-2009
Version 2010.1.0.42 -- 01-OCT-2009
Version 2010.1.0.41 -- 28-SEP-2009
Version 2010.1.0.40 -- 01-SEP-2009
Version 220.127.116.11 22-Mar-2005
Version 18.104.22.168 14-Mar-2005
Version 22.214.171.124 02-Mar-2005
Version 126.96.36.199 01-Mar-2005
Version 188.8.131.52 28-Feb-2005
Version 184.108.40.206 BulletProof FTP Server - 23-Aug-2004
Version 2.21 BulletProof FTP Server - 09-Feb-2003
Version 2.15 BulletProof FTP Server - 06-May-2001
Version 2.10 BulletProof FTP Server - 03-April-2001
Version 2.00 - 05-February-2001
Version 2.00 RC1 - 25-Sept-2000
Version 2.00 Beta 7 - 30-Mar-2000
Version 2.00 Beta 6 - 21-Dec-1999
Version 2.00 Beta 5 - 24-Oct-1999
Version 2.00 Beta 4 - 18-May-1999
Version 2.00 Beta 3 - 11-May-1999
Version 2.00 Beta 2 - 07-April-1999
Version 2.00 Beta 1
Version 1.38 Released 12 December 1998
Version 1.37 Released 21 November 1998
Version 1.36 Released 18 November 1998
Version 1.34 Released 29 October 1998