Compare commits

..

No commits in common. "b6445e6707cbecbb36cfe2699e02ac1cec7c3b1e" and "77e5214561cfe8db346214c10705369e6e7e9363" have entirely different histories.

6 changed files with 37 additions and 57 deletions

71
Cargo.lock generated
View file

@ -153,9 +153,9 @@ dependencies = [
[[package]] [[package]]
name = "cookie" name = "cookie"
version = "0.18.0" version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3cd91cf61412820176e137621345ee43b3f4423e589e7ae4e50d601d93e35ef8" checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24"
dependencies = [ dependencies = [
"percent-encoding", "percent-encoding",
"time", "time",
@ -238,12 +238,6 @@ 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"
@ -397,12 +391,6 @@ 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"
@ -489,17 +477,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"hashbrown 0.12.3", "hashbrown",
]
[[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",
] ]
@ -568,7 +546,7 @@ checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
[[package]] [[package]]
name = "lohr" name = "lohr"
version = "0.4.4" version = "0.4.3"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"clap", "clap",
@ -747,7 +725,7 @@ checksum = "61a386cd715229d399604b50d1361683fe687066f42d56f54be995bc6868f71c"
dependencies = [ dependencies = [
"inlinable_string", "inlinable_string",
"pear_codegen", "pear_codegen",
"yansi", "yansi 1.0.0-rc.1",
] ]
[[package]] [[package]]
@ -805,7 +783,7 @@ dependencies = [
"quote", "quote",
"syn", "syn",
"version_check", "version_check",
"yansi", "yansi 1.0.0-rc.1",
] ]
[[package]] [[package]]
@ -913,9 +891,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
[[package]] [[package]]
name = "rocket" name = "rocket"
version = "0.5.0" version = "0.5.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e7bb57ccb26670d73b6a47396c83139447b9e7878cab627fdfe9ea8da489150" checksum = "58734f7401ae5cfd129685b48f61182331745b357b96f2367f01aebaf1cc9cc9"
dependencies = [ dependencies = [
"async-stream", "async-stream",
"async-trait", "async-trait",
@ -925,7 +903,8 @@ dependencies = [
"either", "either",
"figment", "figment",
"futures", "futures",
"indexmap 2.1.0", "indexmap",
"is-terminal",
"log", "log",
"memchr", "memchr",
"multer", "multer",
@ -945,38 +924,37 @@ dependencies = [
"tokio-util", "tokio-util",
"ubyte", "ubyte",
"version_check", "version_check",
"yansi", "yansi 0.5.1",
] ]
[[package]] [[package]]
name = "rocket_codegen" name = "rocket_codegen"
version = "0.5.0" version = "0.5.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2238066abf75f21be6cd7dc1a09d5414a671f4246e384e49fe3f8a4936bd04c" checksum = "7093353f14228c744982e409259fb54878ba9563d08214f2d880d59ff2fc508b"
dependencies = [ dependencies = [
"devise", "devise",
"glob", "glob",
"indexmap 2.1.0", "indexmap",
"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" version = "0.5.0-rc.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37a1663694d059fe5f943ea5481363e48050acedd241d46deb2e27f71110389e" checksum = "936012c99162a03a67f37f9836d5f938f662e26f2717809761a9ac46432090f4"
dependencies = [ dependencies = [
"cookie", "cookie",
"either", "either",
"futures", "futures",
"http", "http",
"hyper", "hyper",
"indexmap 2.1.0", "indexmap",
"log", "log",
"memchr", "memchr",
"pear", "pear",
@ -1082,7 +1060,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 1.9.3", "indexmap",
"ryu", "ryu",
"serde", "serde",
"yaml-rust", "yaml-rust",
@ -1171,9 +1149,9 @@ dependencies = [
[[package]] [[package]]
name = "state" name = "state"
version = "0.6.0" version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b"
dependencies = [ dependencies = [
"loom", "loom",
] ]
@ -1622,11 +1600,14 @@ 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.4" version = "0.4.3"
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" version = "0.5.0-rc.1"
# 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.4"; version = "0.4.3";
src = ./.; src = ./.;
cargoHash = "sha256-15OVia/oQXAGvjHTPTceKottKgEgFJRfHbzWdzCtcjY="; cargoSha256 = "sha256-712J8squ4txjdKH5buKpCl7ss2NSNRYM/m548Z6RSzQ=";
meta = with pkgs.lib; { meta = with pkgs.lib; {
description = "A Git mirroring tool"; description = "A Git mirroring tool";

1
rust-toolchain Normal file
View file

@ -0,0 +1 @@
stable

View file

@ -1,2 +0,0 @@
[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::Error((Status::BadRequest, anyhow!("wrong content type"))); return Outcome::Failure((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::Error(( return Outcome::Failure((
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::Error(( return Outcome::Failure((
Status::PayloadTooLarge, Status::PayloadTooLarge,
io::Error::new(eof, "data limit exceeded").into(), io::Error::new(eof, "data limit exceeded").into(),
)); ));
} }
Err(e) => return Outcome::Error((Status::BadRequest, e.into())), Err(e) => return Outcome::Failure((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::Error((Status::BadRequest, anyhow!("couldn't verify signature"))); return Outcome::Failure((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::Error((Status::BadRequest, e)), Err(e) => Outcome::Failure((Status::BadRequest, e)),
} }
} }
} }