Compare commits

..

4 commits

Author SHA1 Message Date
3f2b0b5fd2
chore: bump version 2024-08-29 21:03:21 +04:00
20f9336074
docs: explain crate features 2024-08-29 21:02:53 +04:00
a7fca98939
style: reorganize/cleanup Cargo.toml 2024-08-29 21:02:23 +04:00
1733c86942
docs: update todo 2024-08-29 20:56:46 +04:00
4 changed files with 18 additions and 9 deletions

2
Cargo.lock generated
View file

@ -886,7 +886,7 @@ dependencies = [
[[package]] [[package]]
name = "tokio-gemini" name = "tokio-gemini"
version = "0.5.0" version = "0.5.1"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"base16ct", "base16ct",

View file

@ -1,6 +1,6 @@
[package] [package]
name = "tokio-gemini" name = "tokio-gemini"
version = "0.5.0" version = "0.5.1"
edition = "2021" edition = "2021"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://unw.dc09.ru" homepage = "https://unw.dc09.ru"
@ -14,18 +14,18 @@ base16ct = "0.2.0"
base64ct = "1.6.0" base64ct = "1.6.0"
sha2 = "0.10.8" sha2 = "0.10.8"
async-trait = "0.1.81"
num_enum = "0.7.3" num_enum = "0.7.3"
bytes = "1.7.1" bytes = "1.7.1"
mime = "0.3.17" mime = "0.3.17"
url = "2.5.2" url = "2.5.2"
tokio = { version = "1.39.2", features = ["io-util", "net"] } tokio = { version = "1.39.2", default-features = false, features = ["io-util", "net"] }
tokio-rustls = { version = "0.26.0", default-features = false, features = ["ring"] } tokio-rustls = { version = "0.26.0", default-features = false, features = ["ring"] }
rustls-webpki = "0.102.7"
dashmap = { version = "6.0.1", optional = true } dashmap = { version = "6.0.1", optional = true }
hickory-client = { version = "0.24.1", optional = true } hickory-client = { version = "0.24.1", optional = true }
async-trait = "0.1.81"
rustls-webpki = "0.102.7"
[dev-dependencies] [dev-dependencies]
tokio = { version = "1.39.2", features = ["macros", "rt-multi-thread"] } tokio = { version = "1.39.2", features = ["macros", "rt-multi-thread"] }
@ -47,4 +47,4 @@ path = "examples/simple.rs"
[[example]] [[example]]
name = "main" name = "main"
path = "examples/main.rs" path = "examples/main.rs"
required-features = ["file-sscv", "hickory"] required-features = ["file-sscv", "dane"]

View file

@ -4,10 +4,10 @@ Gemini protocol client and server implementation written in Rust with Tokio.
// Work in progress // Work in progress
## TODO ## TODO
- [ ] Write tests for Client - [x] Write tests for Client
- [x] Check self-signed cert with DANE before trusting it - [x] Check self-signed cert with DANE before trusting it
- [x] Clean up `FileBasedCertVerifier` code - [x] Clean up `FileBasedCertVerifier` code
- [ ] Add `SqliteBasedCertVerifier` (?) - [ ] Add `SqliteBasedCertVerifier` (?)
- [ ] Implement automatic redirection following - [x] Implement automatic redirection following
- [ ] Implement client authorization - [ ] Implement client authorization
- [ ] Implement server - [ ] Implement server

View file

@ -1,5 +1,14 @@
//! Gemini client and server implementaion in async Rust with Tokio and Rustls. //! Gemini client and server implementaion in async Rust with Tokio and Rustls.
//! You probably need [`Client::builder()`] //! You probably need [`Client::builder()`].
//!
//! # Features
//! - `file-sscv`: known_hosts file parser and
//! helper functions for verifying a self-signed certificate.
//! - `dane`: alias to `hickory`.
//! - `hickory`: custom DNS client, also required for
//! a DANE-based verification.
//! - `hickory-dot`: enables DNS-over-TLS.
//! - `hickory-doh`: enables DNS-over-HTTPS.
pub mod certs; pub mod certs;
pub mod client; pub mod client;