index : static-web-server.git

ascending towards madness

author Jose Quintana <joseluisquintana20@gmail.com> 2021-01-13 15:05:15.0 +00:00:00
committer Jose Quintana <joseluisquintana20@gmail.com> 2021-01-13 15:05:15.0 +00:00:00
commit
f3008f36fe2957977b90e79d22a4452bc3ef5f77 [patch]
tree
1898eedf175bee5fef2b095e49680eca859482aa
parent
61d819da00ed621db2bf1a08acc04ea748750028
download
f3008f36fe2957977b90e79d22a4452bc3ef5f77.tar.gz

feat: github actions ci



Diff

 .github/workflows/ci.yml | 69 +++++++++++++++++++++++++++++++++++++++++++++++++-
 README.md                | 36 +++++++++++++-------------
 2 files changed, 88 insertions(+), 17 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..3952445
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,69 @@
name: CI

on: [push, pull_request]

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - name: Run cargo check
        uses: actions-rs/cargo@v1
        with:
          command: check

  test:
    name: Test Suite
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true

      - name: Run cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test

  lints:
    name: Lints
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          override: true
          components: rustfmt, clippy

      - name: Run cargo fmt
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

      - name: Run cargo clippy
        uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all-features -- -D warnings
diff --git a/README.md b/README.md
index bb1056b..ce10a20 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,6 @@
# Static Web Server [![Docker Image Version (tag latest semver)]https://img.shields.io/docker/v/joseluisq/static-web-server/1]https://hub.docker.com/r/joseluisq/static-web-server/ [![Build Status]https://travis-ci.com/joseluisq/static-web-server.svg?branch=master]https://travis-ci.com/joseluisq/static-web-server [![Docker Image Size (tag)]https://img.shields.io/docker/image-size/joseluisq/static-web-server/1]https://hub.docker.com/r/joseluisq/static-web-server/tags [![Docker Image]https://img.shields.io/docker/pulls/joseluisq/static-web-server.svg]https://hub.docker.com/r/joseluisq/static-web-server/
# Static Web Server [![CI]https://github.com/joseluisq/static-web-server/workflows/CI/badge.svg]https://github.com/joseluisq/static-web-server/actions?query=workflow%3ACI [![Docker Image Version (tag latest semver)]https://img.shields.io/docker/v/joseluisq/static-web-server/1]https://hub.docker.com/r/joseluisq/static-web-server/ [![Docker Image Size (tag)]https://img.shields.io/docker/image-size/joseluisq/static-web-server/1]https://hub.docker.com/r/joseluisq/static-web-server/tags [![Docker Image]https://img.shields.io/docker/pulls/joseluisq/static-web-server.svg]https://hub.docker.com/r/joseluisq/static-web-server/

*This the stable `v1`. For the `v2` upcoming refer to [master]https://github.com/joseluisq/static-web-server branch.*

> A blazing fast static files-serving web server powered by [Rust Iron]https://github.com/iron/iron. :zap:

@@ -35,22 +37,22 @@ Server can be configured either via environment variables or their equivalent co

### Environment Variables

| Variable | Description | Default |
| --- | --- | --- |
| `SERVER_NAME` | Name for server. | Default `my-static-server`. |
| `SERVER_HOST` | Host address (E.g 127.0.0.1). | Default `[::]`. |
| `SERVER_PORT` | Host port. | Default `80`. |
| `SERVER_ROOT` | Root directory path of static files. | Default `./public`. |
| `SERVER_ASSETS` | Assets directory path for add cache headers functionality. | Default `./public/assets`. |
| `SERVER_LOG_LEVEL` | Specify a logging level in lower case (see [log::LevelFilter]https://docs.rs/log/0.4.10/log/enum.LevelFilter.html). | Default `error` |
| `SERVER_ERROR_PAGE_404` | HTML file path for 404 errors. | If path is not specified or simply don't exists then server will use a generic HTML error message. Default `./public/404.html`.
| `SERVER_ERROR_PAGE_50X` | HTML file path for 50x errors. | If path is not specified or simply don't exists then server will use a generic HTML error message. Default `./public/50x.html` |
| `SERVER_TLS` | Enables TLS/SSL support. Make sure also to adjust current server port. | Default `false` |
| `SERVER_TLS_PKCS12` | A cryptographic identity [PKCS #12]https://docs.rs/native-tls/0.2.3/native_tls/struct.Identity.html#method.from_pkcs12 bundle file path containing a [X509 certificate]https://en.wikipedia.org/wiki/X.509 along with its corresponding private key and chain of certificates to a trusted root. | Default empty |
| `SERVER_TLS_PKCS12_PASSWD` | A specified password to decrypt the private key. | Default empty |
| `SERVER_TLS_REDIRECT_FROM` | Host port for redirecting HTTP requests to HTTPS. This option enables the HTTP redirect feature | Default empty (disabled) |
| `SERVER_TLS_REDIRECT_HOST` | Host name of HTTPS site for redirecting HTTP requests to. | Default host address |
| `SERVER_CORS_ALLOW_ORIGINS` | Specify a CORS list of allowed origin hosts separated by comas with no whitespaces. Host ports or protocols aren't being checked. Use an asterisk (*) to allow any host. See [Iron CORS crate]https://docs.rs/iron-cors/0.8.0/iron_cors/#mode-1-whitelist. | Default empty (which means CORS is disabled) |
| Variable                    | Description                                                                                                                                                                                                                                                                                          | Default                                                                                                                         |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `SERVER_NAME`               | Name for server.                                                                                                                                                                                                                                                                                     | Default `my-static-server`.                                                                                                     |
| `SERVER_HOST`               | Host address (E.g 127.0.0.1).                                                                                                                                                                                                                                                                        | Default `[::]`.                                                                                                                 |
| `SERVER_PORT`               | Host port.                                                                                                                                                                                                                                                                                           | Default `80`.                                                                                                                   |
| `SERVER_ROOT`               | Root directory path of static files.                                                                                                                                                                                                                                                                 | Default `./public`.                                                                                                             |
| `SERVER_ASSETS`             | Assets directory path for add cache headers functionality.                                                                                                                                                                                                                                           | Default `./public/assets`.                                                                                                      |
| `SERVER_LOG_LEVEL`          | Specify a logging level in lower case (see [log::LevelFilter]https://docs.rs/log/0.4.10/log/enum.LevelFilter.html).                                                                                                                                                                                | Default `error`                                                                                                                 |
| `SERVER_ERROR_PAGE_404`     | HTML file path for 404 errors.                                                                                                                                                                                                                                                                       | If path is not specified or simply don't exists then server will use a generic HTML error message. Default `./public/404.html`. |
| `SERVER_ERROR_PAGE_50X`     | HTML file path for 50x errors.                                                                                                                                                                                                                                                                       | If path is not specified or simply don't exists then server will use a generic HTML error message. Default `./public/50x.html`  |
| `SERVER_TLS`                | Enables TLS/SSL support. Make sure also to adjust current server port.                                                                                                                                                                                                                               | Default `false`                                                                                                                 |
| `SERVER_TLS_PKCS12`         | A cryptographic identity [PKCS #12]https://docs.rs/native-tls/0.2.3/native_tls/struct.Identity.html#method.from_pkcs12 bundle file path containing a [X509 certificate]https://en.wikipedia.org/wiki/X.509 along with its corresponding private key and chain of certificates to a trusted root. | Default empty                                                                                                                   |
| `SERVER_TLS_PKCS12_PASSWD`  | A specified password to decrypt the private key.                                                                                                                                                                                                                                                     | Default empty                                                                                                                   |
| `SERVER_TLS_REDIRECT_FROM`  | Host port for redirecting HTTP requests to HTTPS. This option enables the HTTP redirect feature                                                                                                                                                                                                      | Default empty (disabled)                                                                                                        |
| `SERVER_TLS_REDIRECT_HOST`  | Host name of HTTPS site for redirecting HTTP requests to.                                                                                                                                                                                                                                            | Default host address                                                                                                            |
| `SERVER_CORS_ALLOW_ORIGINS` | Specify a CORS list of allowed origin hosts separated by comas with no whitespaces. Host ports or protocols aren't being checked. Use an asterisk (*) to allow any host. See [Iron CORS crate]https://docs.rs/iron-cors/0.8.0/iron_cors/#mode-1-whitelist.                                         | Default empty (which means CORS is disabled)                                                                                    |

### Command-line arguments