Warning: This is a manually maintained Changelog. For an automatically maintained version which is provided on every release along with binaries and source code, please visit the Releases Page.
Requires Rust: rustc 1.56.1 (59eed8a2a 2021-11-01)
- Access declined opening files on Windows
Requires Rust: rustc 1.56.1 (59eed8a2a 2021-11-01)
- Update dependencies.
Requires Rust: rustc 1.56.1 (59eed8a2a 2021-11-01)
- Support PEM certificates
- Update dependencies.
Requires Rust: rustc 1.56.1 (59eed8a2a 2021-11-01)
- Uses Rust TLS instead of Native TLS by @stackinspector
- Update dependencies.
Requires Rust: rustc 1.56.1 (59eed8a2a 2021-11-01)
- Introduces Proxy support
- Update dependencies.
- Suggestion on how to run server with TLS script by @johan-smits
Requires Rust: rustc 1.56.1 (59eed8a2a 2021-11-01)
- Implements logging support using the
--logger
flag. - Attach artifacts for Linux, MacOS and Windows on GitHub Releases. Kudos to @Emilgardis for openning the issue! ISSUE#92
- Update dependencies. Now dependencies are being updated by dependabot every monday.
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- Dependencies update
- Use
release.created
instead ofrelease.published
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- Implements support for uploading artifacts when publishing
- Dependencies update
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- Disengage
FileServer
implementation fromFileServerHandler
This will open space for incomming addons/capabilities
- Dependencies update
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- Dependencies update
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- Dependencies update
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- Fix missing HTML "charset"
meta
tag causing weird renders on Windows 10 machines. Thanks to @ttys3 for the contribution! PR25
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- Support Basic Authorization using the
--username
and--password
options
- Middleware chains support early return in case of errors. This is introduced to support denying unauthorized HTTP requests when Basic Authorization is active
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- Respond with 404 when a file is not found
- Respond with 500 when middleware fails
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- GZip Compression for HTTP response body
- Local IP Address is printed when the server is binded to
0.0.0.0
.
- The
static_file
was renamed tofile_server
for a more accurate name - Benchmarks for de-facto configuration, CORS and GZip as part of CI
- DHAT (Dynamic Heap Allocatio Tool) Profiling supported as part of CI
- URI with query parameters are now supported
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- Remove the
root
directory path replacement when an empty string or a root path (/
) is provided.
Requires Rust: rustc 1.52.1 (9bc8c42bb 2021-05-09)
- Implement static file serving addon
Introduce the Addon concept to write application logic out of the server implementation itself and aim to a modularized architecture.
Implements a static file serving addon to support sending files to the client. The static file serving addon also provides a scoped file system abstraction which securely resolve files in the file system tree.
Requires Rust: rustc 1.49.0 (e1884a8e3 2020-12-29)
- Add crate logo by @PalyZambrano
- Avoid clonning server instance by using Arc over
Server.clone()
Currently when creating a server instance and spawing a Tokio task
the server instance is cloned (Server
derive-implements the "Clone" trait).
Instead the same instance is used and a single Arc is handled to the concurrent Tokio task.
This reduces repetition and memory consumption and also keeps the Server instance unique and consistent through threads.
-
Resolve static file serving with
resolve_path
instead ofresolve
fromhyper_staticfile
. This makes file serving more conventional and also versatile, by relying on the Request URI instead of the wholehyper::Request
instance. -
FileExplorer
middleware now consumes anArc<hyper::Request<Body>>
instead of taking ownership of thehyper::Request<Body>
instance -
Less transformations are required for a
Request
instance in order to serve a static file. -
HttpHandler
now is built over anArc<Config>
instead of consuming theConfig
instance. Previously theConfig
instance uses to implement theClone
trait, now anArc<Config>
is used in its place making theConfig
struct easier to mantain an extensible. -
MiddlewareAfter
now supports thehyper::Request<Body>
as well, this brings support to read from thehyper::Request<Body>
on middleware after execution.
Requires Rust: rustc 1.49.0 (e1884a8e3 2020-12-29)
- Fix crate binary name to be "http-server" instead of "main"
Requires Rust: rustc 1.49.0 (e1884a8e3 2020-12-29)
-
A
Middleware
is implemented bringing the capabilities to act onhyper::Request<Body>
before executing the main handler (a.k.a File Explorer) and to act on thehyper::Response<Body>
after executing the main handler. This helps implementing future features which relies on acting on different stages of the HTTP/S request lifecycle such as logging, authentication, caching and so on. -
Support for Cross-Origin Resource Sharing
-
Using the
--cors
flag when running the HTTP Server will now provide a CORS configuration which allows requests from any origin -
The server configuration file supports a fully configurable CORS field now
[cors]
allow_credentials = false
allow_headers = ["content-type", "authorization", "content-length"]
allow_methods = ["GET", "PATCH", "POST", "PUT", "DELETE"]
allow_origin = "example.com"
expose_headers = ["*", "authorization"]
max_age = 600
request_headers = ["x-app-version"]
request_method = "GET"
-
Codebase refactor for
server
module, introducing middleware support for services to programmatically build a server instance from the providedConfig
-
Replace
full
feature flags ontokio
andhyper
with sepecific features, to reduce crate load on compile time. This improve build times and crate size. -
Improved tests coverage by implementing tests for CLI arguments and config file parsing
-
Fix issue where the
root_dir
is taken as is from the CLI arguments resulting on./
instead of the current working directory for theFileExplorer
-
Fix issue where loading config without
root_dir
defined panics and uses the current working directory as defaultroot_dir
as is done for CLI -
Fix issue where errors returned by any internal service are not logged to stderr
Requires Rust: rustc 1.49.0 (e1884a8e3 2020-12-29)
- Fix issue where the root_path is taken as is from the CLI
arguments resulting on
./
instead of the current working directory for theFileExplorer
Requires Rust: rustc 1.49.0 (e1884a8e3 2020-12-29)
- Fix issue where
FileExplorer
entry link is not prefixed with/
on some paths causing the link to be invalid.
Requires Rust: rustc 1.49.0 (e1884a8e3 2020-12-29)
- Add support for HTTPS serving using TLS
- Support TLS certificates
- Support TLS keys using RSA or PKCS8 algorithm
- Refactor CLI implementation to use structopt
Requires Rust: rustc 1.49.0 (e1884a8e3 2020-12-29)
- Replace
-a
,--address
with-h
or--host
for host address - Replace
-h
with--help
for Help
-
Add support for loading configuration from TOML file by specifying
--config [FILE]
. An example of this file is available here Example -
File Explorer with rich UI
- Use
hyper-rs
server for backend - Serve static files using
hyper_staticfile
- Upgrade
tokio-rs
to version 1
- Caching issue caused because HTTP response headers doesn't include
ETag