From 7bd9189ebd6217415bfb15840ed527cb2e709c89 Mon Sep 17 00:00:00 2001 From: Edward Shen Date: Fri, 9 Jul 2021 20:51:45 -0400 Subject: [PATCH] Update readme --- README.md | 64 +++++++++++++++++++++---------------------------------- 1 file changed, 24 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index c98d228..ebb5d20 100644 --- a/README.md +++ b/README.md @@ -8,18 +8,27 @@ This client contains the following features: ## Building -Since we use SQLx there are a few things you'll need to do. First, you'll need -to run the init cache script, which initializes the db cache at -`./cache/metadata.sqlite`. Then you'll need to add the location of that to a -`.env` file: - ```sh -# In the project root -./init_cache.sh -echo "DATABASE_URL=sqlite:./cache/metadata.sqlite" >> .env cargo build +cargo test ``` +You may need to set a client secret, see Configuration for more information. + +# Client implementation + +This client follows a secure-first approach. As such, your statistics may report +a _ever-so-slightly_ higher-than-average failure rate. Specifically, this client +choses to: + - Not support TLS 1.1 or 1.0, which would be a primary source of + incompatibility. + - Not provide a server identification string in the header of served requests. + - HTTPS by enabled by default, HTTP is provided (and unsupported). + +That being said, this client should be backwards compatibility with the official +client data and config. That means you should be able to replace the binary and +preserve all your settings and cache. + ## Cache implementation This client implements a multi-tier in-memory and on-disk LRU cache constrained @@ -39,38 +48,13 @@ values to make sure you don't exceed the actual quota. Either build it from source or run `cargo install mangadex-home`. -## Running - -Run `mangadex-home`, and make sure the advertised port is open on your firewall. -Do note that some configuration fields are required. See the next section for -details. - ## Configuration -Most configuration options can be either provided on the command line, sourced -from a `.env` file, or sourced directly from the environment. Do not that the -client secret is an exception. You must provide the client secret from the -environment or from the `.env` file, as providing client secrets in a shell is a -operation security risk. +Most configuration options can be either provided on the command line or sourced +from a file named `settings.yaml` from the directory you ran the command from, +which will be created on first run. -The following options are required: - - - Client Secret - - Memory cache quota - - Disk cache quota - - Advertised network speed - -The following are optional as a default value will be set for you: - - - Port - - Disk cache path - - ### Advanced configuration - - This implementation prefers to act more secure by default. As a result, some - features that the official specification requires are not enabled by default. - If you don't know why these features are disabled by default, then don't enable - these, as they may generally weaken the security stance of the client for more - compatibility. - - - Sending Server version string \ No newline at end of file +Note that the client secret (`CLIENT_SECRET`) is the only configuration option +that can only can be provided from the environment, an `.env` file, or the +`settings.yaml` file. In other words, you _cannot_ provide this value from the +command line.