Compare commits

...

3 commits

Author SHA1 Message Date
Antoine Martin b6445e6707 lohr: v0.4.4 2023-12-12 15:39:39 +01:00
Antoine Martin 926f48f979 switch to new rust-toolchain format 2023-12-12 15:37:36 +01:00
Antoine Martin b04748a804 cargo: bump rocket to v0.5 2023-12-12 15:36:56 +01:00
6 changed files with 57 additions and 37 deletions

71
Cargo.lock generated
View file

@ -153,9 +153,9 @@ dependencies = [
[[package]] [[package]]
name = "cookie" name = "cookie"
version = "0.17.0" version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" checksum = "3cd91cf61412820176e137621345ee43b3f4423e589e7ae4e50d601d93e35ef8"
dependencies = [ dependencies = [
"percent-encoding", "percent-encoding",
"time", "time",
@ -238,6 +238,12 @@ dependencies = [
"cfg-if", "cfg-if",
] ]
[[package]]
name = "equivalent"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]] [[package]]
name = "errno" name = "errno"
version = "0.3.8" version = "0.3.8"
@ -391,6 +397,12 @@ version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "hashbrown"
version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
[[package]] [[package]]
name = "hermit-abi" name = "hermit-abi"
version = "0.3.3" version = "0.3.3"
@ -477,7 +489,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"hashbrown", "hashbrown 0.12.3",
]
[[package]]
name = "indexmap"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
dependencies = [
"equivalent",
"hashbrown 0.14.3",
"serde", "serde",
] ]
@ -546,7 +568,7 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
[[package]] [[package]]
name = "lohr" name = "lohr"
version = "0.4.3" version = "0.4.4"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"clap", "clap",
@ -725,7 +747,7 @@ checksum = "61a386cd715229d399604b50d1361683fe687066f42d56f54be995bc6868f71c"
dependencies = [ dependencies = [
"inlinable_string", "inlinable_string",
"pear_codegen", "pear_codegen",
"yansi 1.0.0-rc.1", "yansi",
] ]
[[package]] [[package]]
@ -783,7 +805,7 @@ dependencies = [
"quote", "quote",
"syn", "syn",
"version_check", "version_check",
"yansi 1.0.0-rc.1", "yansi",
] ]
[[package]] [[package]]
@ -891,9 +913,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
[[package]] [[package]]
name = "rocket" name = "rocket"
version = "0.5.0-rc.3" version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58734f7401ae5cfd129685b48f61182331745b357b96f2367f01aebaf1cc9cc9" checksum = "9e7bb57ccb26670d73b6a47396c83139447b9e7878cab627fdfe9ea8da489150"
dependencies = [ dependencies = [
"async-stream", "async-stream",
"async-trait", "async-trait",
@ -903,8 +925,7 @@ dependencies = [
"either", "either",
"figment", "figment",
"futures", "futures",
"indexmap", "indexmap 2.1.0",
"is-terminal",
"log", "log",
"memchr", "memchr",
"multer", "multer",
@ -924,37 +945,38 @@ dependencies = [
"tokio-util", "tokio-util",
"ubyte", "ubyte",
"version_check", "version_check",
"yansi 0.5.1", "yansi",
] ]
[[package]] [[package]]
name = "rocket_codegen" name = "rocket_codegen"
version = "0.5.0-rc.3" version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7093353f14228c744982e409259fb54878ba9563d08214f2d880d59ff2fc508b" checksum = "a2238066abf75f21be6cd7dc1a09d5414a671f4246e384e49fe3f8a4936bd04c"
dependencies = [ dependencies = [
"devise", "devise",
"glob", "glob",
"indexmap", "indexmap 2.1.0",
"proc-macro2", "proc-macro2",
"quote", "quote",
"rocket_http", "rocket_http",
"syn", "syn",
"unicode-xid", "unicode-xid",
"version_check",
] ]
[[package]] [[package]]
name = "rocket_http" name = "rocket_http"
version = "0.5.0-rc.3" version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "936012c99162a03a67f37f9836d5f938f662e26f2717809761a9ac46432090f4" checksum = "37a1663694d059fe5f943ea5481363e48050acedd241d46deb2e27f71110389e"
dependencies = [ dependencies = [
"cookie", "cookie",
"either", "either",
"futures", "futures",
"http", "http",
"hyper", "hyper",
"indexmap", "indexmap 2.1.0",
"log", "log",
"memchr", "memchr",
"pear", "pear",
@ -1060,7 +1082,7 @@ version = "0.8.26"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b"
dependencies = [ dependencies = [
"indexmap", "indexmap 1.9.3",
"ryu", "ryu",
"serde", "serde",
"yaml-rust", "yaml-rust",
@ -1149,9 +1171,9 @@ dependencies = [
[[package]] [[package]]
name = "state" name = "state"
version = "0.5.3" version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8"
dependencies = [ dependencies = [
"loom", "loom",
] ]
@ -1600,14 +1622,11 @@ dependencies = [
"linked-hash-map", "linked-hash-map",
] ]
[[package]]
name = "yansi"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec"
[[package]] [[package]]
name = "yansi" name = "yansi"
version = "1.0.0-rc.1" version = "1.0.0-rc.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377" checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377"
dependencies = [
"is-terminal",
]

View file

@ -1,6 +1,6 @@
[package] [package]
name = "lohr" name = "lohr"
version = "0.4.3" version = "0.4.4"
authors = ["Antoine Martin <antoine@alarsyo.net>"] authors = ["Antoine Martin <antoine@alarsyo.net>"]
edition = "2018" edition = "2018"
license = "Apache-2.0 OR MIT" license = "Apache-2.0 OR MIT"
@ -24,7 +24,7 @@ serde_yaml = "0.8.17"
sha2 = "0.9.3" sha2 = "0.9.3"
[dependencies.rocket] [dependencies.rocket]
version = "0.5.0-rc.1" version = "0.5.0"
# don't need private-cookies # don't need private-cookies
default-features = false default-features = false

View file

@ -16,11 +16,11 @@
{ {
defaultPackage = pkgs.rustPlatform.buildRustPackage { defaultPackage = pkgs.rustPlatform.buildRustPackage {
pname = "lohr"; pname = "lohr";
version = "0.4.3"; version = "0.4.4";
src = ./.; src = ./.;
cargoSha256 = "sha256-712J8squ4txjdKH5buKpCl7ss2NSNRYM/m548Z6RSzQ="; cargoHash = "sha256-15OVia/oQXAGvjHTPTceKottKgEgFJRfHbzWdzCtcjY=";
meta = with pkgs.lib; { meta = with pkgs.lib; {
description = "A Git mirroring tool"; description = "A Git mirroring tool";

View file

@ -1 +0,0 @@
stable

2
rust-toolchain.toml Normal file
View file

@ -0,0 +1,2 @@
[toolchain]
channel = "stable"

View file

@ -75,12 +75,12 @@ where
async fn from_data(request: &'r Request<'_>, data: Data<'r>) -> Outcome<'r, Self> { async fn from_data(request: &'r Request<'_>, data: Data<'r>) -> Outcome<'r, Self> {
let json_ct = ContentType::new("application", "json"); let json_ct = ContentType::new("application", "json");
if request.content_type() != Some(&json_ct) { if request.content_type() != Some(&json_ct) {
return Outcome::Failure((Status::BadRequest, anyhow!("wrong content type"))); return Outcome::Error((Status::BadRequest, anyhow!("wrong content type")));
} }
let signatures = request.headers().get(X_GITEA_SIGNATURE).collect::<Vec<_>>(); let signatures = request.headers().get(X_GITEA_SIGNATURE).collect::<Vec<_>>();
if signatures.len() != 1 { if signatures.len() != 1 {
return Outcome::Failure(( return Outcome::Error((
Status::BadRequest, Status::BadRequest,
anyhow!("request header needs exactly one signature"), anyhow!("request header needs exactly one signature"),
)); ));
@ -91,24 +91,24 @@ where
Ok(s) if s.is_complete() => s.into_inner(), Ok(s) if s.is_complete() => s.into_inner(),
Ok(_) => { Ok(_) => {
let eof = io::ErrorKind::UnexpectedEof; let eof = io::ErrorKind::UnexpectedEof;
return Outcome::Failure(( return Outcome::Error((
Status::PayloadTooLarge, Status::PayloadTooLarge,
io::Error::new(eof, "data limit exceeded").into(), io::Error::new(eof, "data limit exceeded").into(),
)); ));
} }
Err(e) => return Outcome::Failure((Status::BadRequest, e.into())), Err(e) => return Outcome::Error((Status::BadRequest, e.into())),
}; };
let signature = signatures[0]; let signature = signatures[0];
let secret = request.guard::<&State<Secret>>().await.unwrap(); let secret = request.guard::<&State<Secret>>().await.unwrap();
if !validate_signature(&secret.0, signature, &content) { if !validate_signature(&secret.0, signature, &content) {
return Outcome::Failure((Status::BadRequest, anyhow!("couldn't verify signature"))); return Outcome::Error((Status::BadRequest, anyhow!("couldn't verify signature")));
} }
match Self::from_str(local_cache!(request, content)) { match Self::from_str(local_cache!(request, content)) {
Ok(content) => Outcome::Success(content), Ok(content) => Outcome::Success(content),
Err(e) => Outcome::Failure((Status::BadRequest, e)), Err(e) => Outcome::Error((Status::BadRequest, e)),
} }
} }
} }