No description
Find a file
2021-07-12 01:05:18 -04:00
.github/workflows Add coverage action 2021-07-12 01:05:18 -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 use hex instead of u8s in test 2021-07-12 00:49:06 -04:00
.gitignore ignore default config value 2021-07-09 19:18:09 -04:00
build.rs Have build script create .env if not found 2021-07-09 20:43:33 -04:00
Cargo.lock Add support for reading old db image ids 2021-07-11 23:33:22 -04:00
Cargo.toml Add support for reading old db image ids 2021-07-11 23:33:22 -04:00
LICENSE switch to GPLv3 or later 2021-04-17 22:12:02 -04:00
README.md Update readme 2021-07-09 20:51:45 -04:00
settings.sample.yaml Add clippy to CI 2021-07-09 21:25:08 -04:00

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

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 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.

Configuration

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.

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.