You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Added Memory Mapped Files, Tests, fixed Path Vulnerability and much more (#58)
- Performance improvements for FTP Downloads through memory-mapped file (Thanks to @bjuulp)
- Added googletest as submodule
- Added unit tests for fineftp-server. The tests require C++17 to compile and `curl` to be present in the `PATH` when executing them
- New CMake Options for Enabling / Disabling different components (See Readme.md)
- Binary downloads for Windows are now built with VS 2017 / v140 toolset
- Fixed a race condition on Windows that caused files not being fully flushed after fineftp-server reported the finished data upload (Thanks to @bjuulp)
- Reordered internal asio::strand implementation in order to prevent race conditions that haven't been detected, yet. (Thanks to @bjuulp)
- Fixed a vulnerability that enabled an attacker to access files above the root directory (reported by #52)
- Fixed many clang-tidy warnings
- The `APPE` (= append-to-file) command now creates a new file if it didn't exist already (this is the correct behavior according to RFC 959
- Updated the asio submodule to 1.28.2
---------
Co-authored-by: Bjarne Juul Pasgaard <[email protected]>
Co-authored-by: Bjarne Juul Pasgaard <[email protected]>
"Use the builtin GoogleTest submodule. Only needed if FINEFTP_SERVER_BUILD_TESTS is ON. If set to OFF, GoogleTest must be available from somewhere else (e.g. system libs)."
Copy file name to clipboardExpand all lines: README.md
+58-1Lines changed: 58 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
5
5
FineFTP is a minimal FTP server library for Windows and Unix flavors. The project is CMake based and only depends on asio, which is integrated as git submodule. No boost is required.
6
6
7
-
You can easily embed this library into your own project in order to create an embedded FTP Server. It was developed and tested on Windows 10 (Visual Studio 2015 / 2019, MinGW) and Ubuntu 16.04 - 21.10 (gcc 5.4.0 - 11.2.0).
7
+
You can easily embed this library into your own project in order to create an embedded FTP Server. It was developed and tested on Windows 10 (Visual Studio 2015 and newer, MinGW) and Ubuntu 18.04 - 22.04 (gcc 7.4.0 - 11.2.0). It should also run fine on macOS.
8
8
9
9
## Features
10
10
@@ -74,6 +74,63 @@ There is an example project provided that will create an FTP Server at `C:\` (Wi
74
74
75
75
5. Start `fineftp_example` / `fineftp_example.exe` and connect with your favorite FTP Client (e.g. FileZilla) on port 2121 *(This port is used so you don't need root privileges to start the FTP server)*
76
76
77
+
## CMake Options
78
+
79
+
You can set the following CMake Options to control how fineFTP Server is built:
|`FINEFTP_SERVER_BUILD_SAMPLES`|`BOOL`|`ON`| Build the fineFTP Server sample project. |
84
+
|`FINEFTP_SERVER_BUILD_TESTS`|`BOOL`|`OFF`| Build the the fineftp-server tests. Requires C++17. For executing the tests, `curl` must be available from the `PATH`. |
85
+
|`FINEFTP_SERVER_USE_BUILTIN_ASIO`|`BOOL`|`ON`| Use the builtin asio submodule. If set to `OFF`, asio must be available from somewhere else (e.g. system libs). |
86
+
|`FINEFTP_SERVER_USE_BUILTIN_GTEST`|`BOOL`|`ON` <br>_(when building tests)_| Use the builtin GoogleTest submodule. Only needed if `FINEFTP_SERVER_BUILD_TESTS` is `ON`. If set to `OFF`, GoogleTest must be available from somewhere else (e.g. system libs). |
87
+
|`BUILD_SHARED_LIBS`|`BOOL`|| Not a fineFTP Server option, but use this to control whether you want to have a static or shared library. |
88
+
89
+
## How to integrate in your project
90
+
91
+
### Option 1: Integrate as binaries
92
+
93
+
1. Download the latest release from the releases page or compile the binaries yourself.
94
+
95
+
2. Add the fineFTP Server directory to your `CMAKE_PREFIX_PATH`:
0 commit comments