From 5488acb59df63992b45db3c7783995e8bd2e7185 Mon Sep 17 00:00:00 2001
From: asonix
Date: Tue, 3 Jan 2023 15:17:56 -0600
Subject: [PATCH 01/18] Fix docker volume mount in readme
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4e0f8e2..ac22793 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ _A simple and efficient activitypub relay_
If running docker, you can start the relay with the following command:
```
$ sudo docker run --rm -it \
- -v "./:/mnt/" \
+ -v "$(pwd):/mnt/" \
-e ADDR=0.0.0.0 \
-e SLED_PATH=/mnt/sled/db-0.34 \
-p 8080:8080 \
From 662620be4632656b2c6dcb32a440f0d11bb9bf6b Mon Sep 17 00:00:00 2001
From: asonix
Date: Mon, 23 Jan 2023 08:29:32 -0600
Subject: [PATCH 02/18] Only show open_registrations: false when restricted
mode is enabled
---
src/routes/nodeinfo.rs | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/routes/nodeinfo.rs b/src/routes/nodeinfo.rs
index a504496..66785e0 100644
--- a/src/routes/nodeinfo.rs
+++ b/src/routes/nodeinfo.rs
@@ -44,6 +44,8 @@ pub(crate) async fn route(
.map(|s| s.to_owned())
.collect();
+ let open_registrations = !config.restricted_mode();
+
web::Json(NodeInfo {
version: NodeInfoVersion,
software: Software {
@@ -55,7 +57,7 @@ pub(crate) async fn route(
inbound: vec![],
outbound: vec![],
},
- open_registrations: false,
+ open_registrations,
usage: Usage {
users: Users {
total: 1,
From 9cdebeae4cb9d159be3bcc9d548e2ade75073a42 Mon Sep 17 00:00:00 2001
From: asonix
Date: Mon, 23 Jan 2023 08:38:55 -0600
Subject: [PATCH 03/18] Update base64, ructe
---
Cargo.lock | 374 ++++++++++++++++---------------------
Cargo.toml | 4 +-
src/middleware/verifier.rs | 3 +-
src/requests.rs | 3 +-
src/routes/index.rs | 2 +-
templates/index.rs.html | 10 +-
templates/instance.rs.html | 4 +-
7 files changed, 173 insertions(+), 227 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index fa0b763..68428c3 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -56,9 +56,9 @@ dependencies = [
[[package]]
name = "actix-http"
-version = "3.2.2"
+version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c83abf9903e1f0ad9973cc4f7b9767fd5a03a583f51a5b7a339e07987cd2724"
+checksum = "0070905b2c4a98d184c4e81025253cb192aa8a73827553f38e9410801ceb35bb"
dependencies = [
"actix-codec",
"actix-rt",
@@ -66,7 +66,7 @@ dependencies = [
"actix-tls",
"actix-utils",
"ahash 0.7.6",
- "base64",
+ "base64 0.21.0",
"bitflags",
"brotli",
"bytes",
@@ -88,6 +88,8 @@ dependencies = [
"rand",
"sha1",
"smallvec",
+ "tokio",
+ "tokio-util",
"tracing",
]
@@ -116,9 +118,9 @@ dependencies = [
[[package]]
name = "actix-rt"
-version = "2.7.0"
+version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ea16c295198e958ef31930a6ef37d0fb64e9ca3b6116e6b93a8bdae96ee1000"
+checksum = "15265b6b8e2347670eb363c47fc8c75208b4a4994b27192f345fcbe707804f3e"
dependencies = [
"actix-macros",
"futures-core",
@@ -127,9 +129,9 @@ dependencies = [
[[package]]
name = "actix-server"
-version = "2.1.1"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0da34f8e659ea1b077bb4637948b815cd3768ad5a188fdcd74ff4d84240cd824"
+checksum = "3e8613a75dd50cc45f473cee3c34d59ed677c0f7b44480ce3b8247d7dc519327"
dependencies = [
"actix-rt",
"actix-service",
@@ -185,9 +187,9 @@ dependencies = [
[[package]]
name = "actix-web"
-version = "4.2.1"
+version = "4.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d48f7b6534e06c7bfc72ee91db7917d4af6afe23e7d223b51e68fffbb21e96b9"
+checksum = "464e0fddc668ede5f26ec1f9557a8d44eda948732f40c6b0ad79126930eb775f"
dependencies = [
"actix-codec",
"actix-http",
@@ -320,7 +322,7 @@ dependencies = [
"anyhow",
"awc",
"background-jobs",
- "base64",
+ "base64 0.21.0",
"bcrypt",
"clap",
"config",
@@ -385,12 +387,6 @@ version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
-[[package]]
-name = "arrayvec"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
-
[[package]]
name = "async-stream"
version = "0.3.3"
@@ -414,9 +410,9 @@ dependencies = [
[[package]]
name = "async-trait"
-version = "0.1.60"
+version = "0.1.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "677d1d8ab452a3936018a687b20e6f7cf5363d713b732b8884001317b0e48aa3"
+checksum = "eff18d764974428cf3a9328e23fc5c986f5fbed46e6cd4cdf42544df5d297ec1"
dependencies = [
"proc-macro2",
"quote",
@@ -431,9 +427,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "awc"
-version = "3.0.1"
+version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80ca7ff88063086d2e2c70b9f3b29b2fcd999bac68ac21731e66781970d68519"
+checksum = "0dff3fc64a176e0d4398c71b0f2c2679ff4a723c6ed8fcc68dfe5baa00665388"
dependencies = [
"actix-codec",
"actix-http",
@@ -442,7 +438,7 @@ dependencies = [
"actix-tls",
"actix-utils",
"ahash 0.7.6",
- "base64",
+ "base64 0.21.0",
"bytes",
"cfg-if",
"derive_more",
@@ -465,9 +461,9 @@ dependencies = [
[[package]]
name = "axum"
-version = "0.6.1"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08b108ad2665fa3f6e6a517c3d80ec3e77d224c47d605167aefaa5d7ef97fa48"
+checksum = "678c5130a507ae3a7c797f9a17393c14849300b8440eac47cdb90a5bdcb3a543"
dependencies = [
"async-trait",
"axum-core",
@@ -494,9 +490,9 @@ dependencies = [
[[package]]
name = "axum-core"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79b8558f5a0581152dc94dcd289132a1d377494bdeafcd41869b3258e3e2ad92"
+checksum = "1cae3e661676ffbacb30f1a824089a8c9150e71017f7e1e38f2aa32009188d34"
dependencies = [
"async-trait",
"bytes",
@@ -565,6 +561,12 @@ version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+[[package]]
+name = "base64"
+version = "0.21.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a"
+
[[package]]
name = "base64ct"
version = "1.5.3"
@@ -577,7 +579,7 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7e7c93a3fb23b2fdde989b2c9ec4dd153063ec81f408507f84c090cd91c6641"
dependencies = [
- "base64",
+ "base64 0.13.1",
"blowfish",
"getrandom",
"zeroize",
@@ -589,18 +591,6 @@ version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
-[[package]]
-name = "bitvec"
-version = "0.19.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55f93d0ef3363c364d5976646a38f04cf67cfe1d4c8d160cdea02cab2c116b33"
-dependencies = [
- "funty",
- "radium",
- "tap",
- "wyz",
-]
-
[[package]]
name = "block-buffer"
version = "0.10.3"
@@ -633,9 +623,9 @@ dependencies = [
[[package]]
name = "brotli-decompressor"
-version = "2.3.2"
+version = "2.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80"
+checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744"
dependencies = [
"alloc-no-stdlib",
"alloc-stdlib",
@@ -643,9 +633,9 @@ dependencies = [
[[package]]
name = "bumpalo"
-version = "3.11.1"
+version = "3.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
+checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
[[package]]
name = "bytecount"
@@ -708,9 +698,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.0.32"
+version = "4.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7db700bc935f9e43e88d00b0850dae18a63773cfbec6d8e070fccf7fef89a39"
+checksum = "4ec7a4128863c188deefe750ac1d1dfe66c236909f845af04beed823638dc1b2"
dependencies = [
"bitflags",
"clap_derive",
@@ -723,9 +713,9 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "4.0.21"
+version = "4.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0177313f9f02afc995627906bbd8967e2be069f5261954222dac78290c2b9014"
+checksum = "684a277d672e91966334af371f1a7b5833f9aa00b07c84e92fbce95e00208ce8"
dependencies = [
"heck",
"proc-macro-error",
@@ -736,9 +726,9 @@ dependencies = [
[[package]]
name = "clap_lex"
-version = "0.3.0"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8"
+checksum = "783fe232adfca04f90f56201b26d79682d4cd2625e0bc7290b95123afe558ade"
dependencies = [
"os_str_bytes",
]
@@ -752,7 +742,7 @@ dependencies = [
"async-trait",
"json5",
"lazy_static",
- "nom 7.1.2",
+ "nom",
"pathdiff",
"ron",
"rust-ini",
@@ -872,13 +862,13 @@ dependencies = [
[[package]]
name = "css-minify"
-version = "0.2.2"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "692b185e3b7c9af96b3195f3021f53a931d896968ed2ad3fb1cdb6558b30c9ab"
+checksum = "874c6e2d19f8d4a285083b11a3241bfbe01ac3ed85f26e1e6b34888d960552bd"
dependencies = [
"derive_more",
"indexmap",
- "nom 6.1.2",
+ "nom",
]
[[package]]
@@ -926,7 +916,7 @@ dependencies = [
"hashbrown 0.12.3",
"lock_api",
"once_cell",
- "parking_lot_core 0.9.5",
+ "parking_lot_core 0.9.6",
]
[[package]]
@@ -1093,12 +1083,6 @@ dependencies = [
"winapi",
]
-[[package]]
-name = "funty"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fed34cd105917e91daa4da6b3728c47b068749d6a62c59811f06ed2ac71d9da7"
-
[[package]]
name = "futf"
version = "0.1.5"
@@ -1258,9 +1242,9 @@ dependencies = [
[[package]]
name = "hashbrown"
-version = "0.13.1"
+version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "33ff8ae62cd3a9102e5637afc8452c55acf3844001bd5374e0b0bd7b6616c038"
+checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
dependencies = [
"ahash 0.8.2",
]
@@ -1271,10 +1255,10 @@ version = "7.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8"
dependencies = [
- "base64",
+ "base64 0.13.1",
"byteorder",
"flate2",
- "nom 7.1.2",
+ "nom",
"num-traits",
]
@@ -1354,7 +1338,7 @@ dependencies = [
"actix-rt",
"actix-web",
"awc",
- "base64",
+ "base64 0.13.1",
"futures-util",
"http-signature-normalization",
"sha2",
@@ -1478,9 +1462,9 @@ dependencies = [
[[package]]
name = "io-lifetimes"
-version = "1.0.3"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c"
+checksum = "e7d6c6f8c91b4b9ed43484ad1a938e393caf35960fce7f82a040497207bd8e9e"
dependencies = [
"libc",
"windows-sys",
@@ -1488,9 +1472,9 @@ dependencies = [
[[package]]
name = "ipnet"
-version = "2.7.0"
+version = "2.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11b0d96e660696543b251e58030cf9787df56da39dab19ad60eae7353040917e"
+checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146"
[[package]]
name = "iri-string"
@@ -1573,19 +1557,6 @@ dependencies = [
"spin",
]
-[[package]]
-name = "lexical-core"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe"
-dependencies = [
- "arrayvec",
- "bitflags",
- "cfg-if",
- "ryu",
- "static_assertions",
-]
-
[[package]]
name = "libc"
version = "0.2.139"
@@ -1653,7 +1624,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e7d46de488603ffdd5f30afbc64fbba2378214a2c3a2fb83abf3d33126df17"
dependencies = [
- "hashbrown 0.13.1",
+ "hashbrown 0.13.2",
]
[[package]]
@@ -1806,22 +1777,23 @@ dependencies = [
[[package]]
name = "minify-html"
-version = "0.10.3"
+version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "58f84854d62363972a73c3d8331b85a479366a0871a83f2a01ac11b9ba787c10"
+checksum = "5d2d0e6da317b10501ed44ebe2aa59c3926890a6dd2a0a77d069e5e9ea69b5c0"
dependencies = [
"aho-corasick",
"css-minify",
"lazy_static",
"memchr",
"minify-js",
+ "rustc-hash",
]
[[package]]
name = "minify-js"
-version = "0.2.9"
+version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fe033709f5a1159736cf7e22748518ffb75af26f3a6264d52ecc8bb38c68c36"
+checksum = "58a1566cb31504e32f009f6c47ad83f7eeb91d00e8e9845314f1d0b2202ef595"
dependencies = [
"lazy_static",
"parse-js",
@@ -1883,38 +1855,14 @@ dependencies = [
[[package]]
name = "nom"
-version = "6.1.2"
+version = "7.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7413f999671bd4745a7b624bd370a569fb6bc574b23c83a3c5ed2e453f3d5e2"
-dependencies = [
- "bitvec",
- "funty",
- "lexical-core",
- "memchr",
- "version_check",
-]
-
-[[package]]
-name = "nom"
-version = "7.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
dependencies = [
"memchr",
"minimal-lexical",
]
-[[package]]
-name = "nom_locate"
-version = "4.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37794436ca3029a3089e0b95d42da1f0b565ad271e4d3bb4bad0c7bb70b10605"
-dependencies = [
- "bytecount",
- "memchr",
- "nom 7.1.2",
-]
-
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
@@ -1982,6 +1930,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
dependencies = [
"autocfg",
+ "num-bigint",
"num-integer",
"num-traits",
]
@@ -2141,7 +2090,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
dependencies = [
"lock_api",
- "parking_lot_core 0.9.5",
+ "parking_lot_core 0.9.6",
]
[[package]]
@@ -2160,9 +2109,9 @@ dependencies = [
[[package]]
name = "parking_lot_core"
-version = "0.9.5"
+version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba"
+checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf"
dependencies = [
"cfg-if",
"libc",
@@ -2173,9 +2122,9 @@ dependencies = [
[[package]]
name = "parse-js"
-version = "0.3.1"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "66bb85ec60d22b9e6d4adac1e3dbdaf3903a4485f476c5f4dd7ed1285cbf4dad"
+checksum = "30534759e6ad87aa144c396544747e1c25b1020bd133356fd758c8facec764e5"
dependencies = [
"aho-corasick",
"lazy_static",
@@ -2211,9 +2160,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]]
name = "pest"
-version = "2.5.2"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f6e86fb9e7026527a0d46bc308b841d73170ef8f443e1807f6ef88526a816d4"
+checksum = "4257b4a04d91f7e9e6290be5d3da4804dd5784fafde3a497d73eb2b4a158c30a"
dependencies = [
"thiserror",
"ucd-trie",
@@ -2221,9 +2170,9 @@ dependencies = [
[[package]]
name = "pest_derive"
-version = "2.5.2"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96504449aa860c8dcde14f9fba5c58dc6658688ca1fe363589d6327b8662c603"
+checksum = "241cda393b0cdd65e62e07e12454f1f25d57017dcc514b1514cd3c4645e3a0a6"
dependencies = [
"pest",
"pest_generator",
@@ -2231,9 +2180,9 @@ dependencies = [
[[package]]
name = "pest_generator"
-version = "2.5.2"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "798e0220d1111ae63d66cb66a5dcb3fc2d986d520b98e49e1852bfdb11d7c5e7"
+checksum = "46b53634d8c8196302953c74d5352f33d0c512a9499bd2ce468fc9f4128fa27c"
dependencies = [
"pest",
"pest_meta",
@@ -2244,13 +2193,13 @@ dependencies = [
[[package]]
name = "pest_meta"
-version = "2.5.2"
+version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "984298b75898e30a843e278a9f2452c31e349a073a0ce6fd950a12a74464e065"
+checksum = "0ef4f1332a8d4678b41966bb4cc1d0676880e84183a1ecc3f4b69f03e99c7a51"
dependencies = [
"once_cell",
"pest",
- "sha1",
+ "sha2",
]
[[package]]
@@ -2375,9 +2324,9 @@ checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c"
[[package]]
name = "prettyplease"
-version = "0.1.22"
+version = "0.1.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c8992a85d8e93a28bdf76137db888d3874e3b230dee5ed8bebac4c9f7617773"
+checksum = "e97e3215779627f01ee256d2fad52f3d95e8e1c11e9fc6fd08f7cd455d5d5c78"
dependencies = [
"proc-macro2",
"syn",
@@ -2409,18 +2358,18 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.49"
+version = "1.0.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5"
+checksum = "6ef7d57beacfaf2d8aee5937dab7b7f28de3cb8b1828479bb5de2a7106f2bae2"
dependencies = [
"unicode-ident",
]
[[package]]
name = "prost"
-version = "0.11.5"
+version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c01db6702aa05baa3f57dec92b8eeeeb4cb19e894e73996b32a4093289e54592"
+checksum = "21dc42e00223fc37204bd4aa177e69420c604ca4a183209a8f9de30c6d934698"
dependencies = [
"bytes",
"prost-derive",
@@ -2428,9 +2377,9 @@ dependencies = [
[[package]]
name = "prost-build"
-version = "0.11.5"
+version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb5320c680de74ba083512704acb90fe00f28f79207286a848e730c45dd73ed6"
+checksum = "a3f8ad728fb08fe212df3c05169e940fbb6d9d16a877ddde14644a983ba2012e"
dependencies = [
"bytes",
"heck",
@@ -2450,9 +2399,9 @@ dependencies = [
[[package]]
name = "prost-derive"
-version = "0.11.5"
+version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8842bad1a5419bca14eac663ba798f6bc19c413c2fdceb5f3ba3b0932d96720"
+checksum = "8bda8c0881ea9f722eb9629376db3d0b903b462477c1aafcb0566610ac28ac5d"
dependencies = [
"anyhow",
"itertools 0.10.5",
@@ -2463,9 +2412,9 @@ dependencies = [
[[package]]
name = "prost-types"
-version = "0.11.5"
+version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "017f79637768cde62820bc2d4fe0e45daaa027755c323ad077767c6c5f173091"
+checksum = "a5e0526209433e96d83d750dd81a99118edbc55739e7e61a46764fd2ad537788"
dependencies = [
"bytes",
"prost",
@@ -2496,12 +2445,6 @@ dependencies = [
"proc-macro2",
]
-[[package]]
-name = "radium"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "941ba9d78d8e2f7ce474c015eea4d9c6d25b6a3327f9832ee29a4de27f91bbb8"
-
[[package]]
name = "radix_trie"
version = "0.2.1"
@@ -2571,9 +2514,9 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.7.0"
+version = "1.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
+checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733"
dependencies = [
"aho-corasick",
"memchr",
@@ -2606,11 +2549,11 @@ dependencies = [
[[package]]
name = "reqwest"
-version = "0.11.13"
+version = "0.11.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68cc60575865c7831548863cc02356512e3f1dc2f3f82cb837d7fc4cc8f3c97c"
+checksum = "21eed90ec8570952d53b772ecf8f206aa1ec9a3d76b2521c56c42973f2d91ee9"
dependencies = [
- "base64",
+ "base64 0.21.0",
"bytes",
"encoding_rs",
"futures-core",
@@ -2640,6 +2583,7 @@ dependencies = [
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
+ "wasm-streams",
"web-sys",
"webpki-roots",
"winreg",
@@ -2666,7 +2610,7 @@ version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a"
dependencies = [
- "base64",
+ "base64 0.13.1",
"bitflags",
"serde",
]
@@ -2698,7 +2642,7 @@ version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8dc035c92400b90ee471e0ea7e041bfadd4da26dd3e716a84053d0075ed9c159"
dependencies = [
- "base64",
+ "base64 0.13.1",
"num-bigint-dig",
"rsa",
"thiserror",
@@ -2706,15 +2650,14 @@ dependencies = [
[[package]]
name = "rsass"
-version = "0.26.0"
+version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "665387d3be91521de331a04cc7118c8c129ffe43c5f4e8a61e78990850046b5a"
+checksum = "a43695dd28122f6c684273de89796a56a98e02e9694b8ab57b160fdc6e6d69af"
dependencies = [
"arc-swap",
"fastrand",
"lazy_static",
- "nom 7.1.2",
- "nom_locate",
+ "nom",
"num-bigint",
"num-integer",
"num-rational",
@@ -2724,16 +2667,16 @@ dependencies = [
[[package]]
name = "ructe"
-version = "0.15.0"
+version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85517cd381cf0c34694881d8aaf173107c6af7670e66cec18d7a1a8bfce3b758"
+checksum = "3a08274953d9f290e34cf6e0335d784b76248dadff96381f94ab42e91e487555"
dependencies = [
- "base64",
+ "base64 0.21.0",
"bytecount",
"itertools 0.10.5",
"md5",
"mime",
- "nom 7.1.2",
+ "nom",
"rsass",
]
@@ -2747,6 +2690,12 @@ dependencies = [
"ordered-multimap",
]
+[[package]]
+name = "rustc-hash"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+
[[package]]
name = "rustc_version"
version = "0.4.0"
@@ -2758,9 +2707,9 @@ dependencies = [
[[package]]
name = "rustix"
-version = "0.36.6"
+version = "0.36.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4feacf7db682c6c329c4ede12649cd36ecab0f3be5b7d74e6a20304725db4549"
+checksum = "d4fdebc4b395b7fbb9ab11e462e20ed9051e7b16e42d24042c776eca0ac81b03"
dependencies = [
"bitflags",
"errno",
@@ -2772,9 +2721,9 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.20.7"
+version = "0.20.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "539a2bfe908f471bfa933876bd1eb6a19cf2176d375f82ef7f99530a40e48c2c"
+checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f"
dependencies = [
"log",
"ring",
@@ -2784,11 +2733,11 @@ dependencies = [
[[package]]
name = "rustls-pemfile"
-version = "1.0.1"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55"
+checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b"
dependencies = [
- "base64",
+ "base64 0.21.0",
]
[[package]]
@@ -2999,12 +2948,6 @@ dependencies = [
"der",
]
-[[package]]
-name = "static_assertions"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-
[[package]]
name = "string_cache"
version = "0.8.4"
@@ -3072,12 +3015,6 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20f34339676cdcab560c9a82300c4c2581f68b9369aedf0fae86f2ff9565ff3e"
-[[package]]
-name = "tap"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
-
[[package]]
name = "teloxide"
version = "0.11.3"
@@ -3137,9 +3074,9 @@ dependencies = [
[[package]]
name = "teloxide-macros"
-version = "0.7.0"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40a5fc46d9004706ee23e3b73a0f53518f28498f7297813fa9a505a29638ffd6"
+checksum = "0f1d653b093dba5e44cada57a516f572167df37b8a619443e59c8c517bb6d804"
dependencies = [
"heck",
"proc-macro2",
@@ -3174,9 +3111,9 @@ dependencies = [
[[package]]
name = "termcolor"
-version = "1.1.3"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
dependencies = [
"winapi-util",
]
@@ -3254,9 +3191,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "tokio"
-version = "1.23.0"
+version = "1.24.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46"
+checksum = "597a12a59981d9e3c38d216785b0c37399f6e415e8d0712047620f189371b0bb"
dependencies = [
"autocfg",
"bytes",
@@ -3331,9 +3268,9 @@ dependencies = [
[[package]]
name = "toml"
-version = "0.5.10"
+version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1333c76748e868a4d9d1017b5ab53171dfd095f70c712fdb4653a406547f598f"
+checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
dependencies = [
"serde",
]
@@ -3347,7 +3284,7 @@ dependencies = [
"async-stream",
"async-trait",
"axum",
- "base64",
+ "base64 0.13.1",
"bytes",
"futures-core",
"futures-util",
@@ -3449,9 +3386,9 @@ dependencies = [
[[package]]
name = "tracing-actix-web"
-version = "0.7.1"
+version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d16c2a0c52b267d46ea9a46012a28b3513ce166c28eaeaa875829ed2f8debd19"
+checksum = "4082e4d81173e0b7ad3cfb71e9eaef0dd0cbb7b139fdb56394f488a3b0760b23"
dependencies = [
"actix-web",
"pin-project",
@@ -3560,9 +3497,9 @@ dependencies = [
[[package]]
name = "try-lock"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
+checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
[[package]]
name = "typenum"
@@ -3587,9 +3524,9 @@ dependencies = [
[[package]]
name = "unicode-bidi"
-version = "0.3.8"
+version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
+checksum = "d54675592c1dbefd78cbd98db9bacd89886e1ca50692a0692baefffdeb92dd58"
[[package]]
name = "unicode-ident"
@@ -3740,6 +3677,19 @@ version = "0.2.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f"
+[[package]]
+name = "wasm-streams"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6bbae3363c08332cadccd13b67db371814cd214c2524020932f0804b8cf7c078"
+dependencies = [
+ "futures-util",
+ "js-sys",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+]
+
[[package]]
name = "web-sys"
version = "0.3.60"
@@ -3771,9 +3721,9 @@ dependencies = [
[[package]]
name = "which"
-version = "4.3.0"
+version = "4.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1c831fbbee9e129a8cf93e7747a82da9d95ba8e16621cae60ec2cdc849bacb7b"
+checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269"
dependencies = [
"either",
"libc",
@@ -3828,45 +3778,45 @@ dependencies = [
[[package]]
name = "windows_aarch64_gnullvm"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e"
+checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4"
+checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7"
[[package]]
name = "windows_i686_gnu"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7"
+checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640"
[[package]]
name = "windows_i686_msvc"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246"
+checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed"
+checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028"
+checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.42.0"
+version = "0.42.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5"
+checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd"
[[package]]
name = "winreg"
@@ -3877,12 +3827,6 @@ dependencies = [
"winapi",
]
-[[package]]
-name = "wyz"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85e60b0d1b5f99db2556934e21937020776a5d31520bf169e851ac44e6420214"
-
[[package]]
name = "yaml-rust"
version = "0.4.5"
diff --git a/Cargo.toml b/Cargo.toml
index e61fa5f..70eae4e 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -34,7 +34,7 @@ activitystreams-ext = "0.1.0-alpha.3"
ammonia = "3.1.0"
awc = { version = "3.0.0", default-features = false, features = ["rustls"] }
bcrypt = "0.13"
-base64 = "0.13"
+base64 = "0.21"
clap = { version = "4.0.0", features = ["derive"] }
config = "0.13.0"
console-subscriber = { version = "0.1", optional = true }
@@ -100,7 +100,7 @@ version = "0.7.0"
[build-dependencies]
anyhow = "1.0"
dotenv = "0.15.0"
-ructe = { version = "0.15.0", features = ["sass", "mime03"] }
+ructe = { version = "0.16.0", features = ["sass", "mime03"] }
toml = "0.5.8"
[profile.dev.package.rsa]
diff --git a/src/middleware/verifier.rs b/src/middleware/verifier.rs
index a982563..3bc3eaa 100644
--- a/src/middleware/verifier.rs
+++ b/src/middleware/verifier.rs
@@ -6,6 +6,7 @@ use crate::{
};
use activitystreams::{base::BaseExt, iri, iri_string::types::IriString};
use actix_web::web;
+use base64::{engine::general_purpose::STANDARD, Engine};
use http_signature_normalization_actix::{prelude::*, verify::DeprecatedAlgorithm};
use rsa::{pkcs1v15::VerifyingKey, pkcs8::DecodePublicKey, RsaPublicKey};
use sha2::{Digest, Sha256};
@@ -127,7 +128,7 @@ async fn do_verify(
let span = tracing::Span::current();
web::block(move || {
span.in_scope(|| {
- let decoded = base64::decode(signature)?;
+ let decoded = STANDARD.decode(signature)?;
let signature = Signature::from_bytes(&decoded).map_err(ErrorKind::ReadSignature)?;
let hashed = Sha256::new_with_prefix(signing_string.as_bytes());
diff --git a/src/requests.rs b/src/requests.rs
index 9a1bc50..121b566 100644
--- a/src/requests.rs
+++ b/src/requests.rs
@@ -5,6 +5,7 @@ use crate::{
use activitystreams::iri_string::types::IriString;
use actix_web::http::header::Date;
use awc::{error::SendRequestError, Client, ClientResponse};
+use base64::{engine::general_purpose::STANDARD, Engine};
use dashmap::DashMap;
use http_signature_normalization_actix::prelude::*;
use rand::thread_rng;
@@ -391,6 +392,6 @@ impl Signer {
fn sign(&self, signing_string: &str) -> Result {
let signing_key = SigningKey::::new_with_prefix(self.private_key.clone());
let signature = signing_key.try_sign_with_rng(thread_rng(), signing_string.as_bytes())?;
- Ok(base64::encode(signature.as_ref()))
+ Ok(STANDARD.encode(signature.as_ref()))
}
}
diff --git a/src/routes/index.rs b/src/routes/index.rs
index 835e2b8..d1b4b21 100644
--- a/src/routes/index.rs
+++ b/src/routes/index.rs
@@ -71,7 +71,7 @@ pub(crate) async fn route(
let mut buf = BufWriter::new(Vec::new());
- crate::templates::index(&mut buf, &local, &nodes, &config)?;
+ crate::templates::index_html(&mut buf, &local, &nodes, &config)?;
let html = buf.into_inner().map_err(|e| {
tracing::error!("Error rendering template, {}", e.error());
ErrorKind::FlushBuffer
diff --git a/templates/index.rs.html b/templates/index.rs.html
index b7c39f6..f6bd35c 100644
--- a/templates/index.rs.html
+++ b/templates/index.rs.html
@@ -1,7 +1,7 @@
@use crate::{
config::{Config, UrlKind},
data::Node,
-templates::{info, instance, statics::index_css},
+templates::{info_html, instance_html, statics::index_css},
};
@(local: &[Node], nodes: &[Node], config: &Config)
@@ -39,13 +39,13 @@ templates::{info, instance, statics::index_css},
@for node in local {
@if let Some(inst) = node.instance.as_ref() {
- @:instance(inst, node.info.as_ref().map(|info| { info.software.as_ref() }), node.contact.as_ref(),
+ @:instance_html(inst, node.info.as_ref().map(|info| { info.software.as_ref() }), node.contact.as_ref(),
&node.base)
} else {
@if let Some(inf) = node.info.as_ref() {
- @:info(inf, &node.base)
+ @:info_html(inf, &node.base)
}
}
@@ -97,13 +97,13 @@ templates::{info, instance, statics::index_css},
@for node in nodes {
@if let Some(inst) = node.instance.as_ref() {
- @:instance(inst, node.info.as_ref().map(|info| { info.software.as_ref() }), node.contact.as_ref(),
+ @:instance_html(inst, node.info.as_ref().map(|info| { info.software.as_ref() }), node.contact.as_ref(),
&node.base)
} else {
@if let Some(inf) = node.info.as_ref() {
- @:info(inf, &node.base)
+ @:info_html(inf, &node.base)
}
}
diff --git a/templates/instance.rs.html b/templates/instance.rs.html
index e36cffa..96adb94 100644
--- a/templates/instance.rs.html
+++ b/templates/instance.rs.html
@@ -1,4 +1,4 @@
-@use crate::{db::{Contact, Instance}, templates::admin};
+@use crate::{db::{Contact, Instance}, templates::admin_html};
@use activitystreams::iri_string::types::IriString;
@(instance: &Instance, software: Option<&str>, contact: Option<&Contact>, base: &IriString)
@@ -30,7 +30,7 @@
}
@if let Some(contact) = contact {
@instance.title's admin:
- @:admin(contact, base)
+ @:admin_html(contact, base)
}
}
From 34dc1a22814150d84ce7b5593d2c57b62bc6334a Mon Sep 17 00:00:00 2001
From: asonix
Date: Mon, 23 Jan 2023 08:56:18 -0600
Subject: [PATCH 04/18] Update rsa
---
Cargo.lock | 18 ++++++++----------
Cargo.toml | 6 ++----
src/config.rs | 2 +-
src/error.rs | 6 +++---
src/middleware/verifier.rs | 15 ++++++++-------
src/requests.rs | 12 ++++++++----
6 files changed, 30 insertions(+), 29 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 68428c3..0ff61c8 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -349,8 +349,6 @@ dependencies = [
"rustls-pemfile",
"serde",
"serde_json",
- "sha2",
- "signature",
"sled",
"teloxide",
"thiserror",
@@ -2617,9 +2615,9 @@ dependencies = [
[[package]]
name = "rsa"
-version = "0.7.2"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "094052d5470cbcef561cb848a7209968c9f12dfa6d668f4bca048ac5de51099c"
+checksum = "89b3896c9b7790b70a9aa314a30e4ae114200992a19c96cbe0ca6070edd32ab8"
dependencies = [
"byteorder",
"digest",
@@ -2630,19 +2628,19 @@ dependencies = [
"pkcs1",
"pkcs8",
"rand_core",
+ "sha2",
"signature",
- "smallvec",
"subtle",
"zeroize",
]
[[package]]
name = "rsa-magic-public-key"
-version = "0.6.0"
+version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8dc035c92400b90ee471e0ea7e041bfadd4da26dd3e716a84053d0075ed9c159"
+checksum = "a86cb93425d6e176cfa39d63e226289f13154173f18274fab609c71ff35ba3a0"
dependencies = [
- "base64 0.13.1",
+ "base64 0.21.0",
"num-bigint-dig",
"rsa",
"thiserror",
@@ -2871,9 +2869,9 @@ dependencies = [
[[package]]
name = "signature"
-version = "1.6.4"
+version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c"
+checksum = "8fe458c98333f9c8152221191a77e2a44e8325d0193484af2e9421a53019e57d"
dependencies = [
"digest",
"rand_core",
diff --git a/Cargo.toml b/Cargo.toml
index 70eae4e..5d57dd0 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -54,14 +54,12 @@ opentelemetry-otlp = "0.11"
pin-project-lite = "0.2.9"
quanta = "0.10.1"
rand = "0.8"
-rsa = "0.7"
-rsa-magic-public-key = "0.6.0"
+rsa = { version = "0.8", features = ["sha2"] }
+rsa-magic-public-key = "0.7.0"
rustls = "0.20.7"
rustls-pemfile = "1.0.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
-sha2 = { version = "0.10", features = ["oid"] }
-signature = "1.6.4"
sled = "0.34.7"
teloxide = { version = "0.11.1", default-features = false, features = [
"ctrlc_handler",
diff --git a/src/config.rs b/src/config.rs
index 848cc5b..78caaf5 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -12,8 +12,8 @@ use activitystreams::{
};
use config::Environment;
use http_signature_normalization_actix::prelude::VerifyDigest;
+use rsa::sha2::{Digest, Sha256};
use rustls::{Certificate, PrivateKey};
-use sha2::{Digest, Sha256};
use std::{
io::BufReader,
net::{IpAddr, SocketAddr},
diff --git a/src/error.rs b/src/error.rs
index 2f9e658..4818e3f 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -99,13 +99,13 @@ pub(crate) enum ErrorKind {
PrepareSign(#[from] PrepareSignError),
#[error("Couldn't sign digest")]
- Signature(#[from] signature::Error),
+ Signature(#[from] rsa::signature::Error),
#[error("Couldn't read signature")]
- ReadSignature(signature::Error),
+ ReadSignature(rsa::signature::Error),
#[error("Couldn't verify signature")]
- VerifySignature(signature::Error),
+ VerifySignature(rsa::signature::Error),
#[error("Couldn't parse the signature header")]
HeaderValidation(#[from] actix_web::http::header::InvalidHeaderValue),
diff --git a/src/middleware/verifier.rs b/src/middleware/verifier.rs
index 3bc3eaa..e9aa321 100644
--- a/src/middleware/verifier.rs
+++ b/src/middleware/verifier.rs
@@ -8,9 +8,10 @@ use activitystreams::{base::BaseExt, iri, iri_string::types::IriString};
use actix_web::web;
use base64::{engine::general_purpose::STANDARD, Engine};
use http_signature_normalization_actix::{prelude::*, verify::DeprecatedAlgorithm};
-use rsa::{pkcs1v15::VerifyingKey, pkcs8::DecodePublicKey, RsaPublicKey};
-use sha2::{Digest, Sha256};
-use signature::{DigestVerifier, Signature};
+use rsa::{
+ pkcs1v15::Signature, pkcs1v15::VerifyingKey, pkcs8::DecodePublicKey, sha2::Sha256,
+ signature::Verifier, RsaPublicKey,
+};
use std::{future::Future, pin::Pin};
#[derive(Clone, Debug)]
@@ -129,12 +130,12 @@ async fn do_verify(
web::block(move || {
span.in_scope(|| {
let decoded = STANDARD.decode(signature)?;
- let signature = Signature::from_bytes(&decoded).map_err(ErrorKind::ReadSignature)?;
- let hashed = Sha256::new_with_prefix(signing_string.as_bytes());
+ let signature =
+ Signature::try_from(decoded.as_slice()).map_err(ErrorKind::ReadSignature)?;
- let verifying_key = VerifyingKey::new_with_prefix(public_key);
+ let verifying_key = VerifyingKey::::new_with_prefix(public_key);
verifying_key
- .verify_digest(hashed, &signature)
+ .verify(signing_string.as_bytes(), &signature)
.map_err(ErrorKind::VerifySignature)?;
Ok(()) as Result<(), Error>
diff --git a/src/requests.rs b/src/requests.rs
index 121b566..d948a22 100644
--- a/src/requests.rs
+++ b/src/requests.rs
@@ -9,9 +9,12 @@ use base64::{engine::general_purpose::STANDARD, Engine};
use dashmap::DashMap;
use http_signature_normalization_actix::prelude::*;
use rand::thread_rng;
-use rsa::{pkcs1v15::SigningKey, RsaPrivateKey};
-use sha2::{Digest, Sha256};
-use signature::RandomizedSigner;
+use rsa::{
+ pkcs1v15::SigningKey,
+ sha2::{Digest, Sha256},
+ signature::RandomizedSigner,
+ RsaPrivateKey,
+};
use std::{
cell::RefCell,
rc::Rc,
@@ -391,7 +394,8 @@ struct Signer {
impl Signer {
fn sign(&self, signing_string: &str) -> Result {
let signing_key = SigningKey::::new_with_prefix(self.private_key.clone());
- let signature = signing_key.try_sign_with_rng(thread_rng(), signing_string.as_bytes())?;
+ let signature =
+ signing_key.try_sign_with_rng(&mut thread_rng(), signing_string.as_bytes())?;
Ok(STANDARD.encode(signature.as_ref()))
}
}
From e93dd2da5651e82fc9b4b43ca16fa7a69c6ebfdd Mon Sep 17 00:00:00 2001
From: asonix
Date: Mon, 23 Jan 2023 08:57:16 -0600
Subject: [PATCH 05/18] Update teloxide
---
Cargo.lock | 8 ++++----
Cargo.toml | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 0ff61c8..1ba2fb5 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3015,9 +3015,9 @@ checksum = "20f34339676cdcab560c9a82300c4c2581f68b9369aedf0fae86f2ff9565ff3e"
[[package]]
name = "teloxide"
-version = "0.11.3"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59c3b28292b33a57a8d71ce000c23fdaffeb0b4aec35fa9351d4be7ec6376a3f"
+checksum = "c0b08789da4f24d049aea06e17c1c7b92c1b92222115e357014a46e842fb8c84"
dependencies = [
"aquamarine",
"bytes",
@@ -3041,9 +3041,9 @@ dependencies = [
[[package]]
name = "teloxide-core"
-version = "0.8.0"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9243a720aa9bddda324a7f90b4ab42887425524bf4d5d24a56b50bccb984b7c4"
+checksum = "25d05d54e4c83825f143da24f0fe35c1171b634f3ba1f6c9e2fae6d98e2446b6"
dependencies = [
"bitflags",
"bytes",
diff --git a/Cargo.toml b/Cargo.toml
index 5d57dd0..8533aa9 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -61,7 +61,7 @@ rustls-pemfile = "1.0.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sled = "0.34.7"
-teloxide = { version = "0.11.1", default-features = false, features = [
+teloxide = { version = "0.12.0", default-features = false, features = [
"ctrlc_handler",
"macros",
"rustls",
From c11ff171920b2c834f9c154b111ed40d0c899f32 Mon Sep 17 00:00:00 2001
From: asonix
Date: Mon, 23 Jan 2023 08:58:07 -0600
Subject: [PATCH 06/18] Bump version
---
Cargo.lock | 2 +-
Cargo.toml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index 1ba2fb5..df71567 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -311,7 +311,7 @@ checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
[[package]]
name = "ap-relay"
-version = "0.3.79"
+version = "0.3.80"
dependencies = [
"activitystreams",
"activitystreams-ext",
diff --git a/Cargo.toml b/Cargo.toml
index 8533aa9..c78fad1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "ap-relay"
description = "A simple activitypub relay"
-version = "0.3.79"
+version = "0.3.80"
authors = ["asonix "]
license = "AGPL-3.0"
readme = "README.md"
From 96547230bc2b45f6897da587a0f67cf86440ebb6 Mon Sep 17 00:00:00 2001
From: Tealk
Date: Sat, 28 Jan 2023 23:45:31 +0100
Subject: [PATCH 07/18] update Pleroma text
Signed-off-by: Tealk
---
templates/index.rs.html | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/templates/index.rs.html b/templates/index.rs.html
index f6bd35c..19e8acf 100644
--- a/templates/index.rs.html
+++ b/templates/index.rs.html
@@ -79,9 +79,7 @@ templates::{info_html, instance_html, statics::index_css},
Pleroma
Pleroma admins can add this relay by adding
-
@config.generate_url(UrlKind::Actor)
- to their relay settings (I don't actually know how pleroma handles adding
- relays, is it still a mix command?).
+ @config.generate_url(UrlKind::Actor)
to their relay settings.
Others
From f9cad61049614b7d102eb888786ba27c672df4d7 Mon Sep 17 00:00:00 2001
From: asonix
Date: Sun, 29 Jan 2023 13:21:36 -0600
Subject: [PATCH 08/18] Add healthcheck for db, new clippy lints
---
src/build.rs | 8 ++++----
src/collector/stats.rs | 32 ++++++++++++++++----------------
src/config.rs | 14 +++++++-------
src/data/node.rs | 2 +-
src/db.rs | 30 ++++++++++++++++++++++++++----
src/jobs/instance.rs | 2 +-
src/jobs/nodeinfo.rs | 6 +++---
src/main.rs | 3 ++-
src/middleware/verifier.rs | 6 +++---
src/requests.rs | 4 ++--
src/routes.rs | 2 ++
src/routes/healthz.rs | 7 +++++++
src/telegram.rs | 8 ++++----
13 files changed, 78 insertions(+), 46 deletions(-)
create mode 100644 src/routes/healthz.rs
diff --git a/src/build.rs b/src/build.rs
index ebac904..f21d5bb 100644
--- a/src/build.rs
+++ b/src/build.rs
@@ -5,7 +5,7 @@ fn git_info() {
if let Ok(output) = Command::new("git").args(["rev-parse", "HEAD"]).output() {
if output.status.success() {
let git_hash = String::from_utf8_lossy(&output.stdout);
- println!("cargo:rustc-env=GIT_HASH={}", git_hash);
+ println!("cargo:rustc-env=GIT_HASH={git_hash}");
println!("cargo:rustc-env=GIT_SHORT_HASH={}", &git_hash[..8])
}
}
@@ -16,7 +16,7 @@ fn git_info() {
{
if output.status.success() {
let git_branch = String::from_utf8_lossy(&output.stdout);
- println!("cargo:rustc-env=GIT_BRANCH={}", git_branch);
+ println!("cargo:rustc-env=GIT_BRANCH={git_branch}");
}
}
}
@@ -32,11 +32,11 @@ fn version_info() -> Result<(), anyhow::Error> {
let data: toml::Value = toml::from_str(&cargo_data)?;
if let Some(version) = data["package"]["version"].as_str() {
- println!("cargo:rustc-env=PKG_VERSION={}", version);
+ println!("cargo:rustc-env=PKG_VERSION={version}");
}
if let Some(name) = data["package"]["name"].as_str() {
- println!("cargo:rustc-env=PKG_NAME={}", name);
+ println!("cargo:rustc-env=PKG_NAME={name}");
}
Ok(())
diff --git a/src/collector/stats.rs b/src/collector/stats.rs
index c8d1812..91f235f 100644
--- a/src/collector/stats.rs
+++ b/src/collector/stats.rs
@@ -40,11 +40,11 @@ impl std::fmt::Display for Counter {
let labels = self
.labels
.iter()
- .map(|(k, v)| format!("{}: {}", k, v))
+ .map(|(k, v)| format!("{k}: {v}"))
.collect::>()
.join(", ");
- write!(f, "{} - {}", labels, self.value)
+ write!(f, "{labels} - {}", self.value)
}
}
@@ -59,11 +59,11 @@ impl std::fmt::Display for Gauge {
let labels = self
.labels
.iter()
- .map(|(k, v)| format!("{}: {}", k, v))
+ .map(|(k, v)| format!("{k}: {v}"))
.collect::>()
.join(", ");
- write!(f, "{} - {}", labels, self.value)
+ write!(f, "{labels} - {}", self.value)
}
}
@@ -78,7 +78,7 @@ impl std::fmt::Display for Histogram {
let labels = self
.labels
.iter()
- .map(|(k, v)| format!("{}: {}", k, v))
+ .map(|(k, v)| format!("{k}: {v}"))
.collect::>()
.join(", ");
@@ -87,15 +87,15 @@ impl std::fmt::Display for Histogram {
.iter()
.map(|(k, v)| {
if let Some(v) = v {
- format!("{}: {:.6}", k, v)
+ format!("{k}: {v:.6}")
} else {
- format!("{}: None,", k)
+ format!("{k}: None,")
}
})
.collect::>()
.join(", ");
- write!(f, "{} - {}", labels, value)
+ write!(f, "{labels} - {value}")
}
}
@@ -172,18 +172,18 @@ impl Snapshot {
continue;
}
- println!("\t{}", key);
+ println!("\t{key}");
for counter in counters {
- println!("\t\t{}", counter);
+ println!("\t\t{counter}");
}
}
for (key, counters) in merging {
- println!("\t{}", key);
+ println!("\t{key}");
for (_, counter) in counters {
if let Some(counter) = counter.merge() {
- println!("\t\t{}", counter);
+ println!("\t\t{counter}");
}
}
}
@@ -192,10 +192,10 @@ impl Snapshot {
if !self.gauges.is_empty() {
println!("Gauges");
for (key, gauges) in self.gauges {
- println!("\t{}", key);
+ println!("\t{key}");
for gauge in gauges {
- println!("\t\t{}", gauge);
+ println!("\t\t{gauge}");
}
}
}
@@ -203,10 +203,10 @@ impl Snapshot {
if !self.histograms.is_empty() {
println!("Histograms");
for (key, histograms) in self.histograms {
- println!("\t{}", key);
+ println!("\t{key}");
for histogram in histograms {
- println!("\t\t{}", histogram);
+ println!("\t\t{histogram}");
}
}
}
diff --git a/src/config.rs b/src/config.rs
index 78caaf5..db21f9d 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -170,7 +170,7 @@ impl Config {
let config: ParsedConfig = config.try_deserialize()?;
let scheme = if config.https { "https" } else { "http" };
- let base_uri = iri!(format!("{}://{}", scheme, config.hostname)).into_absolute();
+ let base_uri = iri!(format!("{scheme}://{}", config.hostname)).into_absolute();
let tls = match (config.tls_key, config.tls_cert) {
(Some(key), Some(cert)) => Some(TlsConfig { key, cert }),
@@ -207,8 +207,8 @@ impl Config {
let source_url = match Self::git_hash() {
Some(hash) => format!(
- "{}{}{}",
- config.source_repo, config.repository_commit_base, hash
+ "{}{}{hash}",
+ config.source_repo, config.repository_commit_base
)
.parse()
.expect("constructed source URL is valid"),
@@ -332,7 +332,7 @@ impl Config {
match AdminConfig::build(api_token) {
Ok(conf) => Some(actix_web::web::Data::new(conf)),
Err(e) => {
- tracing::error!("Error creating admin config: {}", e);
+ tracing::error!("Error creating admin config: {e}");
None
}
}
@@ -371,7 +371,7 @@ impl Config {
pub(crate) fn software_version() -> String {
if let Some(git) = Self::git_version() {
- return format!("v{}-{}", Self::version(), git);
+ return format!("v{}-{git}", Self::version());
}
format!("v{}", Self::version())
@@ -381,7 +381,7 @@ impl Config {
let branch = Self::git_branch()?;
let hash = Self::git_short_hash()?;
- Some(format!("{}-{}", branch, hash))
+ Some(format!("{branch}-{hash}"))
}
fn name() -> &'static str {
@@ -463,7 +463,7 @@ impl Config {
resolved
}
UrlKind::Media(uuid) => FixedBaseResolver::new(self.base_uri.as_ref())
- .resolve(IriRelativeStr::new(&format!("media/{}", uuid))?.as_ref())
+ .resolve(IriRelativeStr::new(&format!("media/{uuid}"))?.as_ref())
.try_to_dedicated_string()?,
UrlKind::NodeInfo => FixedBaseResolver::new(self.base_uri.as_ref())
.resolve(IriRelativeStr::new("nodeinfo/2.0.json")?.as_ref())
diff --git a/src/data/node.rs b/src/data/node.rs
index 4ba6eb5..ac89cdb 100644
--- a/src/data/node.rs
+++ b/src/data/node.rs
@@ -182,7 +182,7 @@ impl Node {
let authority = url.authority_str().ok_or(ErrorKind::MissingDomain)?;
let scheme = url.scheme_str();
- let base = iri!(format!("{}://{}", scheme, authority));
+ let base = iri!(format!("{scheme}://{authority}"));
Ok(Node {
base,
diff --git a/src/db.rs b/src/db.rs
index 6d3064f..6713cba 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -10,7 +10,10 @@ use rsa::{
use sled::{Batch, Tree};
use std::{
collections::{BTreeMap, HashMap},
- sync::Arc,
+ sync::{
+ atomic::{AtomicU64, Ordering},
+ Arc,
+ },
time::SystemTime,
};
use time::OffsetDateTime;
@@ -22,6 +25,8 @@ pub(crate) struct Db {
}
struct Inner {
+ healthz: Tree,
+ healthz_counter: Arc,
actor_id_actor: Tree,
public_key_id_actor_id: Tree,
connected_actor_ids: Tree,
@@ -242,6 +247,8 @@ impl Db {
fn build_inner(restricted_mode: bool, db: sled::Db) -> Result {
Ok(Db {
inner: Arc::new(Inner {
+ healthz: db.open_tree("healthz")?,
+ healthz_counter: Arc::new(AtomicU64::new(0)),
actor_id_actor: db.open_tree("actor-id-actor")?,
public_key_id_actor_id: db.open_tree("public-key-id-actor-id")?,
connected_actor_ids: db.open_tree("connected-actor-ids")?,
@@ -273,6 +280,21 @@ impl Db {
Ok(t)
}
+ pub(crate) async fn check_health(&self) -> Result<(), Error> {
+ let next = self.inner.healthz_counter.fetch_add(1, Ordering::Relaxed);
+ self.unblock(move |inner| {
+ inner
+ .healthz
+ .insert("healthz", &next.to_be_bytes()[..])
+ .map_err(Error::from)
+ })
+ .await?;
+ self.inner.healthz.flush_async().await?;
+ self.unblock(move |inner| inner.healthz.get("healthz").map_err(Error::from))
+ .await?;
+ Ok(())
+ }
+
pub(crate) async fn mark_last_seen(
&self,
nodes: HashMap,
@@ -468,7 +490,7 @@ impl Db {
pub(crate) async fn is_connected(&self, base_id: IriString) -> Result {
let scheme = base_id.scheme_str();
let authority = base_id.authority_str().ok_or(ErrorKind::MissingDomain)?;
- let prefix = format!("{}://{}", scheme, authority);
+ let prefix = format!("{scheme}://{authority}");
self.unblock(move |inner| {
let connected = inner
@@ -528,7 +550,7 @@ impl Db {
}
pub(crate) async fn remove_connection(&self, actor_id: IriString) -> Result<(), Error> {
- tracing::debug!("Removing Connection: {}", actor_id);
+ tracing::debug!("Removing Connection: {actor_id}");
self.unblock(move |inner| {
inner
.connected_actor_ids
@@ -540,7 +562,7 @@ impl Db {
}
pub(crate) async fn add_connection(&self, actor_id: IriString) -> Result<(), Error> {
- tracing::debug!("Adding Connection: {}", actor_id);
+ tracing::debug!("Adding Connection: {actor_id}");
self.unblock(move |inner| {
inner
.connected_actor_ids
diff --git a/src/jobs/instance.rs b/src/jobs/instance.rs
index 2f1e5c7..650c8ce 100644
--- a/src/jobs/instance.rs
+++ b/src/jobs/instance.rs
@@ -45,7 +45,7 @@ impl QueryInstance {
.authority_str()
.ok_or(ErrorKind::MissingDomain)?;
let scheme = self.actor_id.scheme_str();
- let instance_uri = iri!(format!("{}://{}/api/v1/instance", scheme, authority));
+ let instance_uri = iri!(format!("{scheme}://{authority}/api/v1/instance"));
let instance = match state
.requests
diff --git a/src/jobs/nodeinfo.rs b/src/jobs/nodeinfo.rs
index fe86ad8..271b5a1 100644
--- a/src/jobs/nodeinfo.rs
+++ b/src/jobs/nodeinfo.rs
@@ -39,7 +39,7 @@ impl QueryNodeinfo {
.authority_str()
.ok_or(ErrorKind::MissingDomain)?;
let scheme = self.actor_id.scheme_str();
- let well_known_uri = iri!(format!("{}://{}/.well-known/nodeinfo", scheme, authority));
+ let well_known_uri = iri!(format!("{scheme}://{authority}/.well-known/nodeinfo"));
let well_known = match state
.requests
@@ -168,7 +168,7 @@ impl<'de> serde::de::Visitor<'de> for SupportedVersionVisitor {
type Value = SupportedVersion;
fn expecting(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
- write!(f, "a string starting with '{}'", SUPPORTED_VERSIONS)
+ write!(f, "a string starting with '{SUPPORTED_VERSIONS}'")
}
fn visit_str(self, s: &str) -> Result
@@ -187,7 +187,7 @@ impl<'de> serde::de::Visitor<'de> for SupportedNodeinfoVisitor {
type Value = SupportedNodeinfo;
fn expecting(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
- write!(f, "a string starting with '{}'", SUPPORTED_NODEINFO)
+ write!(f, "a string starting with '{SUPPORTED_NODEINFO}'")
}
fn visit_str(self, s: &str) -> Result
diff --git a/src/main.rs b/src/main.rs
index 39bba1d..22764a2 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -39,7 +39,7 @@ use self::{
db::Db,
jobs::create_workers,
middleware::{DebugPayload, MyVerify, RelayResolver, Timings},
- routes::{actor, inbox, index, nodeinfo, nodeinfo_meta, statics},
+ routes::{actor, healthz, inbox, index, nodeinfo, nodeinfo_meta, statics},
};
fn init_subscriber(
@@ -273,6 +273,7 @@ async fn do_server_main(
app.wrap(Compress::default())
.wrap(TracingLogger::default())
.wrap(Timings)
+ .route("/healthz", web::get().to(healthz))
.service(web::resource("/").route(web::get().to(index)))
.service(web::resource("/media/{path}").route(web::get().to(routes::media)))
.service(
diff --git a/src/middleware/verifier.rs b/src/middleware/verifier.rs
index e9aa321..2ae9779 100644
--- a/src/middleware/verifier.rs
+++ b/src/middleware/verifier.rs
@@ -75,7 +75,7 @@ impl MyVerify {
Ok(res) => res.actor_id().ok_or(ErrorKind::MissingId),
Err(e) => {
if e.is_gone() {
- tracing::warn!("Actor gone: {}", public_key_id);
+ tracing::warn!("Actor gone: {public_key_id}");
return Ok(false);
} else {
return Err(e);
@@ -178,13 +178,13 @@ mod tests {
#[test]
fn handles_masto_keys() {
- println!("{}", ASONIX_DOG_KEY);
+ println!("{ASONIX_DOG_KEY}");
let _ = RsaPublicKey::from_public_key_pem(ASONIX_DOG_KEY.trim()).unwrap();
}
#[test]
fn handles_pleromo_keys() {
- println!("{}", KARJALAZET_KEY);
+ println!("{KARJALAZET_KEY}");
let _ = RsaPublicKey::from_public_key_pem(KARJALAZET_KEY.trim()).unwrap();
}
diff --git a/src/requests.rs b/src/requests.rs
index d948a22..18b9840 100644
--- a/src/requests.rs
+++ b/src/requests.rs
@@ -61,7 +61,7 @@ impl Breakers {
if let Some(mut breaker) = self.inner.get_mut(authority) {
breaker.fail();
if !breaker.should_try() {
- tracing::warn!("Failed breaker for {}", authority);
+ tracing::warn!("Failed breaker for {authority}");
}
false
} else {
@@ -235,7 +235,7 @@ impl Requests {
if let Ok(bytes) = res.body().await {
if let Ok(s) = String::from_utf8(bytes.as_ref().to_vec()) {
if !s.is_empty() {
- tracing::warn!("Response from {}, {}", parsed_url, s);
+ tracing::warn!("Response from {parsed_url}, {s}");
}
}
}
diff --git a/src/routes.rs b/src/routes.rs
index d80a0a1..9afd38b 100644
--- a/src/routes.rs
+++ b/src/routes.rs
@@ -1,4 +1,5 @@
mod actor;
+mod healthz;
mod inbox;
mod index;
mod media;
@@ -7,6 +8,7 @@ mod statics;
pub(crate) use self::{
actor::route as actor,
+ healthz::route as healthz,
inbox::route as inbox,
index::route as index,
media::route as media,
diff --git a/src/routes/healthz.rs b/src/routes/healthz.rs
new file mode 100644
index 0000000..f297ba5
--- /dev/null
+++ b/src/routes/healthz.rs
@@ -0,0 +1,7 @@
+use crate::{data::State, error::Error};
+use actix_web::{web, HttpResponse};
+
+pub(crate) async fn route(state: web::Data) -> Result {
+ state.db.check_health().await?;
+ Ok(HttpResponse::Ok().finish())
+}
diff --git a/src/telegram.rs b/src/telegram.rs
index 270e1af..f3cce43 100644
--- a/src/telegram.rs
+++ b/src/telegram.rs
@@ -89,19 +89,19 @@ async fn answer(bot: Bot, msg: Message, cmd: Command, db: Db) -> ResponseResult<
.await?;
}
Command::Block { domain } if db.add_blocks(vec![domain.clone()]).await.is_ok() => {
- bot.send_message(msg.chat.id, format!("{} has been blocked", domain))
+ bot.send_message(msg.chat.id, format!("{domain} has been blocked"))
.await?;
}
Command::Unblock { domain } if db.remove_blocks(vec![domain.clone()]).await.is_ok() => {
- bot.send_message(msg.chat.id, format!("{} has been unblocked", domain))
+ bot.send_message(msg.chat.id, format!("{domain} has been unblocked"))
.await?;
}
Command::Allow { domain } if db.add_allows(vec![domain.clone()]).await.is_ok() => {
- bot.send_message(msg.chat.id, format!("{} has been allowed", domain))
+ bot.send_message(msg.chat.id, format!("{domain} has been allowed"))
.await?;
}
Command::Disallow { domain } if db.remove_allows(vec![domain.clone()]).await.is_ok() => {
- bot.send_message(msg.chat.id, format!("{} has been disallowed", domain))
+ bot.send_message(msg.chat.id, format!("{domain} has been disallowed"))
.await?;
}
Command::ListAllowed => {
From 0e9b88a7ae0acfe0038f1890bcc7ba8885b2dad7 Mon Sep 17 00:00:00 2001
From: asonix
Date: Sun, 29 Jan 2023 13:21:53 -0600
Subject: [PATCH 09/18] Bump deps
---
Cargo.lock | 98 +++++++++++++++++++++++++++++++++++++++++-------------
Cargo.toml | 2 +-
2 files changed, 76 insertions(+), 24 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index df71567..cb6e3aa 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -257,9 +257,9 @@ dependencies = [
[[package]]
name = "ahash"
-version = "0.8.2"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf6ccdb167abbf410dcb915cabd428929d7f6a04980b54a11f26a39f1c7f7107"
+checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
dependencies = [
"cfg-if",
"once_cell",
@@ -354,7 +354,7 @@ dependencies = [
"thiserror",
"time",
"tokio",
- "toml",
+ "toml 0.7.0",
"tracing",
"tracing-actix-web",
"tracing-awc",
@@ -459,9 +459,9 @@ dependencies = [
[[package]]
name = "axum"
-version = "0.6.3"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "678c5130a507ae3a7c797f9a17393c14849300b8440eac47cdb90a5bdcb3a543"
+checksum = "e5694b64066a2459918d8074c2ce0d5a88f409431994c2356617c8ae0c4721fc"
dependencies = [
"async-trait",
"axum-core",
@@ -664,9 +664,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.0.78"
+version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a20104e2335ce8a659d6dd92a51a767a0c062599c73b343fd152cb401e828c3d"
+checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
[[package]]
name = "cfg-if"
@@ -696,9 +696,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.1.1"
+version = "4.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ec7a4128863c188deefe750ac1d1dfe66c236909f845af04beed823638dc1b2"
+checksum = "f13b9c79b5d1dd500d20ef541215a6423c75829ef43117e1b4d17fd8af0b5d76"
dependencies = [
"bitflags",
"clap_derive",
@@ -746,7 +746,7 @@ dependencies = [
"rust-ini",
"serde",
"serde_json",
- "toml",
+ "toml 0.5.11",
"yaml-rust",
]
@@ -975,9 +975,9 @@ dependencies = [
[[package]]
name = "either"
-version = "1.8.0"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
+checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
[[package]]
name = "encoding_rs"
@@ -1244,7 +1244,7 @@ version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e"
dependencies = [
- "ahash 0.8.2",
+ "ahash 0.8.3",
]
[[package]]
@@ -1861,6 +1861,15 @@ dependencies = [
"minimal-lexical",
]
+[[package]]
+name = "nom8"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae01545c9c7fc4486ab7debaf2aad7003ac19431791868fb2e8066df97fad2f8"
+dependencies = [
+ "memchr",
+]
+
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
@@ -2158,9 +2167,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]]
name = "pest"
-version = "2.5.3"
+version = "2.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4257b4a04d91f7e9e6290be5d3da4804dd5784fafde3a497d73eb2b4a158c30a"
+checksum = "4ab62d2fa33726dbe6321cc97ef96d8cde531e3eeaf858a058de53a8a6d40d8f"
dependencies = [
"thiserror",
"ucd-trie",
@@ -2168,9 +2177,9 @@ dependencies = [
[[package]]
name = "pest_derive"
-version = "2.5.3"
+version = "2.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "241cda393b0cdd65e62e07e12454f1f25d57017dcc514b1514cd3c4645e3a0a6"
+checksum = "8bf026e2d0581559db66d837fe5242320f525d85c76283c61f4d51a1238d65ea"
dependencies = [
"pest",
"pest_generator",
@@ -2178,9 +2187,9 @@ dependencies = [
[[package]]
name = "pest_generator"
-version = "2.5.3"
+version = "2.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46b53634d8c8196302953c74d5352f33d0c512a9499bd2ce468fc9f4128fa27c"
+checksum = "2b27bd18aa01d91c8ed2b61ea23406a676b42d82609c6e2581fba42f0c15f17f"
dependencies = [
"pest",
"pest_meta",
@@ -2191,9 +2200,9 @@ dependencies = [
[[package]]
name = "pest_meta"
-version = "2.5.3"
+version = "2.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ef4f1332a8d4678b41966bb4cc1d0676880e84183a1ecc3f4b69f03e99c7a51"
+checksum = "9f02b677c1859756359fc9983c2e56a0237f18624a3789528804406b7e915e5d"
dependencies = [
"once_cell",
"pest",
@@ -2665,9 +2674,9 @@ dependencies = [
[[package]]
name = "ructe"
-version = "0.16.0"
+version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3a08274953d9f290e34cf6e0335d784b76248dadff96381f94ab42e91e487555"
+checksum = "79c86c1631418815c5947a34be5872806586c65398754ec91cc2df35a8e26ba8"
dependencies = [
"base64 0.21.0",
"bytecount",
@@ -2803,6 +2812,15 @@ dependencies = [
"serde",
]
+[[package]]
+name = "serde_spanned"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c68e921cef53841b8925c2abadd27c9b891d9613bdc43d6b823062866df38e8"
+dependencies = [
+ "serde",
+]
+
[[package]]
name = "serde_urlencoded"
version = "0.7.1"
@@ -3273,6 +3291,40 @@ dependencies = [
"serde",
]
+[[package]]
+name = "toml"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2f560bc7fb3eb31f5eee1340c68a2160cad39605b7b9c9ec32045ddbdee13b85"
+dependencies = [
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+ "toml_edit",
+]
+
+[[package]]
+name = "toml_datetime"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "886f31a9b85b6182cabd4d8b07df3b451afcc216563748201490940d2a28ed36"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "toml_edit"
+version = "0.19.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "233d8716cdc5d20ec88a18a839edaf545edc71efa4a5ff700ef4a102c26cd8fa"
+dependencies = [
+ "indexmap",
+ "nom8",
+ "serde",
+ "serde_spanned",
+ "toml_datetime",
+]
+
[[package]]
name = "tonic"
version = "0.8.3"
diff --git a/Cargo.toml b/Cargo.toml
index c78fad1..97edae6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -99,7 +99,7 @@ version = "0.7.0"
anyhow = "1.0"
dotenv = "0.15.0"
ructe = { version = "0.16.0", features = ["sass", "mime03"] }
-toml = "0.5.8"
+toml = "0.7.0"
[profile.dev.package.rsa]
opt-level = 3
From b5138fc16d719ad2d8f93debd3b9a8eef7d9142a Mon Sep 17 00:00:00 2001
From: asonix
Date: Sun, 29 Jan 2023 13:23:11 -0600
Subject: [PATCH 10/18] Bump version
---
Cargo.lock | 2 +-
Cargo.toml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
index cb6e3aa..b9c5698 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -311,7 +311,7 @@ checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61"
[[package]]
name = "ap-relay"
-version = "0.3.80"
+version = "0.3.81"
dependencies = [
"activitystreams",
"activitystreams-ext",
diff --git a/Cargo.toml b/Cargo.toml
index 97edae6..581f00a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "ap-relay"
description = "A simple activitypub relay"
-version = "0.3.80"
+version = "0.3.81"
authors = ["asonix "]
license = "AGPL-3.0"
readme = "README.md"
From a952b528df9d8d0d2348c714ee1cf7f27f9d453d Mon Sep 17 00:00:00 2001
From: asonix
Date: Sun, 5 Feb 2023 21:09:47 -0600
Subject: [PATCH 11/18] Use transpose in a couple places
---
src/db.rs | 74 +++++++++++++++++++++++++------------------------------
1 file changed, 34 insertions(+), 40 deletions(-)
diff --git a/src/db.rs b/src/db.rs
index 6713cba..edf00c1 100644
--- a/src/db.rs
+++ b/src/db.rs
@@ -356,12 +356,12 @@ impl Db {
pub(crate) async fn info(&self, actor_id: IriString) -> Result