mangadex-home-rs/README.md

87 lines
2.8 KiB
Markdown
Raw Normal View History

2021-04-24 21:02:06 -07:00
A Rust implementation of a MangaDex@Home client.
2021-03-22 15:01:12 -07:00
2021-03-25 19:58:07 -07:00
This client contains the following features:
2021-07-17 10:04:39 -07:00
- Easy migration from the official client
- Fully compliant with MangaDex@Home specifications
- Multi-threaded, high performance, and low overhead client
- HTTP/2 support for API users, HTTP/2 only for upstream connections
- Secure and privacy oriented features:
- Only supports TLS 1.2 or newer; HTTP is not enabled by default
- Options for no logging and no metrics
- Support for on-disk XChaCha20 encryption with ephemeral key generation
- Supports an internal LFU, LRU, or a redis instance for in-memory caching
2021-03-25 19:58:07 -07:00
2021-03-22 15:01:12 -07:00
## Building
```sh
2021-04-24 21:01:20 -07:00
cargo build
2021-07-09 17:51:45 -07:00
cargo test
2021-03-22 15:01:12 -07:00
```
2021-07-09 17:51:45 -07:00
You may need to set a client secret, see Configuration for more information.
2021-07-15 09:58:40 -07:00
# Migration
Migration from the official client was made to be as painless as possible. There
are caveats though:
- If you ever want to return to using the official client, you will need to
clear your cache.
- As this is an unofficial client implementation, the only support you can
probably get is from me.
Otherwise, the steps to migration is easy:
1. Place the binary in the same folder as your `images` folder and
`settings.yaml`.
2. Rename `images` to `cache`.
2021-07-09 17:51:45 -07:00
# 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.
2021-03-25 19:58:07 -07:00
## Installation
Either build it from source or run `cargo install mangadex-home`.
## Configuration
2021-07-09 17:51:45 -07:00
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.
2021-03-22 15:01:12 -07:00
2021-07-09 17:51:45 -07:00
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.
2021-07-14 23:09:57 -07:00
## Special thanks
This project could not have been completed without the assistance of the
following:
#### Development Assistance (Alphabetical Order)
- carbotaniuman#6974
- LFlair#1337
- Plykiya#1738
- Tristan 9#6752
- The Rust Discord community
#### Beta testers
- NigelVH#7162
2021-07-14 23:14:04 -07:00
---
If using the geo IP logging feature, then this product includes GeoLite2 data
created by MaxMind, available from https://www.maxmind.com.