Go to file
Edward Shen 3a855a7e4a
add debug for client config
2021-07-09 19:51:48 -04:00
.vscode initial proof of concept 2021-03-17 21:45:16 -04:00
db_queries Add db queries 2021-04-22 21:21:32 -04:00
docs initial work 2021-07-09 14:36:04 -04:00
src add debug for client config 2021-07-09 19:51:48 -04:00
.gitignore ignore default config value 2021-07-09 19:18:09 -04:00
Cargo.lock migrate config to Config struct 2021-07-09 17:18:43 -04:00
Cargo.toml migrate config to Config struct 2021-07-09 17:18:43 -04:00
LICENSE switch to GPLv3 or later 2021-04-17 22:12:02 -04:00
README.md Fix typo in readme 2021-04-25 00:02:06 -04:00
build.rs Use build script 2021-07-09 17:32:00 -04:00
settings.sample.yaml add support for yaml files 2021-07-09 19:14:53 -04:00

README.md

A Rust implementation of a MangaDex@Home client.

This client contains the following features:

  • Multi-threaded
  • HTTP/2 support
  • No support for TLS 1.1 or 1.0

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:

# In the project root
./init_cache.sh
echo "DATABASE_URL=sqlite:./cache/metadata.sqlite" >> .env
cargo build

Cache implementation

This client implements a multi-tier in-memory and on-disk LRU cache constrained by quotas. In essence, it acts as an unified LRU, where in-memory items are evicted and pushed into the on-disk LRU and fetching a item from the on-disk LRU promotes it to the in-memory LRU.

Note that the capacity of each LRU is dynamic, depending on the maximum byte capacity that you permit each cache to be. A large item may evict multiple smaller items to fit within this constraint, for example.

Note that these quotas are closer to a rough estimate, and is not guaranteed to be strictly below these values, so it's recommended to under set your config values to make sure you don't exceed the actual quota.

Installation

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.

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