Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wdv4758h/wesers
a simple HTTP/HTTPS server in Rust, please consider use *miniserve*: https://github.com/svenstaro/miniserve
https://github.com/wdv4758h/wesers
rust-language web-server
Last synced: 2 days ago
JSON representation
a simple HTTP/HTTPS server in Rust, please consider use *miniserve*: https://github.com/svenstaro/miniserve
- Host: GitHub
- URL: https://github.com/wdv4758h/wesers
- Owner: wdv4758h
- License: agpl-3.0
- Archived: true
- Created: 2016-07-03T06:51:52.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2018-05-12T14:58:36.000Z (over 6 years ago)
- Last Synced: 2025-01-01T23:17:09.275Z (23 days ago)
- Topics: rust-language, web-server
- Language: Rust
- Homepage:
- Size: 72.3 KB
- Stars: 5
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
===========================================
wesers - a simple HTTP/HTTPS server in Rust
===========================================.. contents:: Table of Contents
Installation
========================================(You need to compile with nightly, now)
If you want to build from source, make sure you are using nightly toolchain !
Without HTTPS support
------------------------------Install with
.. code-block:: sh
cargo install --git https://github.com/wdv4758h/wesers
or
.. code-block:: sh
cargo install --git https://github.com/wdv4758h/wesers --tag v0.4.2
If you want to download prebuilt binary,
you can visit `GitHub's release page `_With HTTPS support
------------------------------Install with
.. code-block:: sh
cargo install --git https://github.com/wdv4758h/wesers --features https
or
.. code-block:: sh
cargo install --git https://github.com/wdv4758h/wesers --tag v0.4.2 --features https
Usage
========================================.. code-block:: sh
$ wesers --help
wesers 0.4.2
Chiu-Hsiang Hsu
a simple HTTP/HTTPS server in RustUSAGE:
wesers [FLAGS] [OPTIONS]FLAGS:
-h, --help Prints help information
--https use HTTPS instead of HTTP
-V, --version Prints version informationOPTIONS:
--cert SSL certificate file (needed for HTTPS)
--index auto detect index.html [default: true]
--ip binding IP [default: 127.0.0.1]
--key SSL key file (needed for HTTPS)
--port binding port [default: 8000]
--root root directory [default: .]
--template HTML template pathrun :
.. code-block:: sh
$ RUST_LOG=info wesers
Simple HTTP Server running on http://127.0.0.1:8000/
INFO:logger: 127.0.0.1:54400 GET http://127.0.0.1:8000/ -> 200 OK (0.268528 ms)run with custom address and HTML template :
.. code-block:: sh
$ wesers --ip 127.0.0.1 --port 8080 --template ./custom.mustache
Simple HTTP Server running on http://127.0.0.1:8080/run in HTTPS :
.. code-block:: sh
$ wesers --https --cert mycert.pem --key mykey.pem
Simple HTTP Server running on https://127.0.0.1:8000/Binary Size
========================================x86_64 Linux (with HTTPS):
+----------+---------+------------+--------------+-----------+
| Filename | Version | Stripped ? | Size (Bytes) | Size (MB) |
+----------+---------+------------+--------------+-----------+
| wesers | v0.4.2 | No | 4568856 | 4.4M |
+----------+---------+------------+--------------+-----------+
| wesers | v0.4.2 | Yes | 3055784 | 3.0M |
+----------+---------+------------+--------------+-----------+x86_64 Linux (without HTTPS):
+----------+---------+------------+--------------+-----------+
| Filename | Version | Stripped ? | Size (Bytes) | Size (MB) |
+----------+---------+------------+--------------+-----------+
| wesers | v0.4.2 | No | 4475568 | 4.3M |
+----------+---------+------------+--------------+-----------+
| wesers | v0.4.2 | Yes | 2989928 | 2.9M |
+----------+---------+------------+--------------+-----------+x86_64 Linux (with musl, without HTTPS):
+----------+---------+------------+--------------+-----------+
| Filename | Version | Stripped ? | Size (Bytes) | Size (MB) |
+----------+---------+------------+--------------+-----------+
| wesers | v0.4.2 | No | 4553024 | 4.4M |
+----------+---------+------------+--------------+-----------+
| wesers | v0.4.2 | Yes | 2791552 | 2.7M |
+----------+---------+------------+--------------+-----------+Benchmarks
========================================This is a simple load testing by `Herd `_
(Just a simple test, not indicate a lot).. code-block:: sh
# Running both herd and wesers on Intel Core i5-2400 with 4GB RAM
$ ./target/release/herd -t 4 -r 1000 http://127.0.0.1:8000...
Spawning virtual user 1
...
Spawning virtual user 3
...
I made a total of 4000 requests, the mean response time was: 0.00042591915919911117 seconds.Changelog
========================================Not Implemented Yet (Plan)
------------------------------* more files information (type, size, last modified time)
* more documentation
* QR code support
* optional userdir
* support limit request times
* RESTful API for files and directories
* can run as CGI server
* template live reload
* handle POST for upload files
* Android support
* more template engine support
* fix everything discover by linter (e.g. clippy)
* code refactoring to improve performance
* reduce binary size
* HTTP2 supportv0.4.3 (?)
------------------------------* unicode url support
v0.4.2 (2016-12-10)
------------------------------Features
++++++++++++++++++++* update all dependencies
v0.4.1 (2016-08-03)
------------------------------Fix
++++++++++++++++++++* HTTPS build
v0.4.0 (2016-08-03)
------------------------------Features
++++++++++++++++++++* log client IP
* update all dependenciesv0.3.1 (2016-07-09)
------------------------------Fix
++++++++++++++++++++* make HTTPS optional (because of the dependency of OpenSSL)
v0.3.0 (2016-07-08)
------------------------------Features
++++++++++++++++++++* custom HTML template support (with `mustache `_ )
* custom root directory support
* HTTPS support (with OpenSSL)v0.2.0 (2016-07-08)
------------------------------Features
++++++++++++++++++++* Bash completion by clap
* optional index.html detection
* handle 404 betterv0.1.0 (2016-07-07)
------------------------------Features
++++++++++++++++++++* serve static files
* list files in directoryNotice
========================================I've only tested on my x86_64 Linux.
Other platforms are built by CI.
If they don't work properly, please tell me.Developement
========================================Making Release
------------------------------1. update version in ``src/cli.yml``
2. update version in ``Cargo.toml``
3. update version in ``Cargo.lock``
4. add git tagDependency of Shared Libraries
------------------------------x86_64, Linux, no HTTPS
.. code-block:: sh
$ ldd ./target/release/wesers
linux-vdso.so.1 (0x00007fff05f4c000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f1531e71000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f1531c54000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f1531a3e000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f153169d000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1532075000)x86_64, Linux, with HTTPS
.. code-block:: sh
$ ldd ./target/release/wesers
linux-vdso.so.1 (0x00007fffdbe85000)
libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x00007f168b810000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007f168b399000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f168b195000)
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f168af78000)
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f168ad62000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f168a9c1000)
/lib64/ld-linux-x86-64.so.2 (0x00007f168ba81000)x86_64, Linux, musl, no HTTPS
.. code-block:: sh
$ ldd ./target/x86_64-unknown-linux-musl/release/wesers
not a dynamic executablex86_64, Linux, musl, with HTTPS
.. code-block:: sh
$ ldd ./target/x86_64-unknown-linux-musl/release/wesers
linux-vdso.so.1 (0x00007ffc55496000)
libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x00007f69cb9c8000)
libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007f69cb551000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f69cb1b0000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f69cafac000)
/lib/ld64.so.1 (0x00007f69cbc39000)Special Thanks
========================================* `rust-everywhere `_ for CI integration
* `clap-rs `_ for arguments parsing
* `iron `_ for Rust web framework
* `mustache `_ for HTML template
* `Rust Team `_
* and every project I've usedLicense
========================================wesers is licensed under the AGPL License - see the ``LICENSE`` file for details