Skip to content

User65k/flash_rust_ws

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project Status: Active – The project has reached a stable, usable state and is being actively developed. GitHub GitHub Workflow Status

A Webserver written in Rust. Build on the speedy Hyper.

Usage

Installation

Install cargo and then: cargo install flash_rust_ws (stable) cargo install --git https://github.com/User65k/flash_rust_ws.git (hottest kind of hot)

Running

Create a config file and execute the binary ☺️

See the Wiki for some help with the config file.

You will need at least a single Host containing a Mount Path.

Minimal Example:

["example.com"]
ip = "127.0.0.1:80"
dir = "/var/www/"

Let's Encrypt Example:

["example.com"]
ip = "[::]:443"
validate_server_name = true
dir = "/var/www/"
tls.host.ACME = {uri="https://acme-staging-v02.api.letsencrypt.org/directory",cache_dir=".",contact=["mailto:[email protected]"]}

Goals

  • Easy configuration and safe defaults
  • Light Footprint
  • Speed

Functions

  • Virtual Hosts
  • "Mount Points" to serve files from
  • FastCGI
  • HTTPS
    • Cert per vHost / SNI
    • Cert per Keytype (EC, ED, RSA)
    • ACME-TLS
  • HTTP2
  • WebDAV
  • Reverse-Proxy
  • Websocket
  • Customizable Logging
  • Security
    • HTTP user auth: Digest - (MD5 because FireFox, but better that nothing)
    • Systemd Socket Activation
    • DoS protection
      • Don't be affected by Sloloris
      • limit connection count ?
      • rate ?
      • min speed ?
    • no default files
    • no DAV without users?
    • no folder listings (except DAV)
    • recomended http headers by default
    • no path traversals :-)
    • only use filters based on allowed values
    • only https ?
    • avoid BEAST and CRIME
    • only follow symlinks if told so
  • SCGI