diff --git a/server/Cargo.toml b/server/Cargo.toml index 8dc7300..7f5458d 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -16,7 +16,6 @@ anyhow = "1.0.35" background-jobs = "0.8.0" base64 = "0.13.0" chrono = { version = "0.4.19", features = ["serde"] } -env_logger = "0.8.2" event-listener = "2.5.1" futures = "0.3.11" html-minifier = "3.0.8" @@ -37,6 +36,7 @@ sha2 = "0.9" sled = { version = "0.34.6", features = ["compression"] } structopt = "0.3" thiserror = "1.0" +tracing-subscriber = { version = "0.2.15", features = ["env-filter"] } url = { version = "2.2.0", features = ["serde"] } uuid = { version = "0.8.1", features = ["serde", "v4"] } diff --git a/server/src/apub.rs b/server/src/apub.rs index a8377e4..29fc8fc 100644 --- a/server/src/apub.rs +++ b/server/src/apub.rs @@ -76,6 +76,7 @@ impl SignatureVerify for RsaVerifier { })?; if !matches!(algorithm, Some(Algorithm::Hs2019)) { + log::error!("Bad Algorithm"); return Err(VerifyError); } @@ -83,6 +84,7 @@ impl SignatureVerify for RsaVerifier { let public_key = if let Some(key) = apub.public_key_for_id(&key_id)? { key } else { + log::warn!("No public key for ID {}", key_id); spawner.download_apub(hyaenidae_profiles::OnBehalfOf::Server, key_id, vec![]); return Err(VerifyError.into()); }; diff --git a/server/src/jobs.rs b/server/src/jobs.rs index 09629a8..d73c12c 100644 --- a/server/src/jobs.rs +++ b/server/src/jobs.rs @@ -47,10 +47,10 @@ pub(super) fn build( pub(super) struct Spawn(QueueHandle); impl Spawn { - pub(crate) fn ingest(&self, any_base: AnyBase, key_owner: Url) { + pub(crate) fn ingest(&self, any_base: AnyBase, key_id: Url) { if let Err(e) = self.0.queue(Ingest { any_base, - key_owner: Some(key_owner), + key_id: Some(key_id), stack: vec![], }) { log::error!("Failed to queue ingest: {}", e); @@ -90,7 +90,7 @@ impl Spawner for Spawn { fn process(&self, any_base: AnyBase, stack: Vec) { if let Err(e) = self.0.queue(Ingest { any_base, - key_owner: None, + key_id: None, stack, }) { log::error!("Failed to queue process job: {}", e); @@ -151,7 +151,7 @@ struct DownloadApub { #[derive(Clone, serde::Deserialize, serde::Serialize)] struct Ingest { any_base: AnyBase, - key_owner: Option, + key_id: Option, stack: Vec, } @@ -413,7 +413,7 @@ impl ActixJob for Ingest { } state .profiles - .ingest(self.any_base, self.key_owner, self.stack) + .ingest(self.any_base, self.key_id, self.stack) .await?; Ok(()) }) diff --git a/server/src/main.rs b/server/src/main.rs index 5a29904..50181d2 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -46,7 +46,10 @@ async fn main() -> anyhow::Result<()> { std::env::set_var("RUST_LOG", "info"); } } - env_logger::init(); + + tracing_subscriber::fmt() + .with_env_filter(tracing_subscriber::EnvFilter::from_default_env()) + .init(); let secret_key = if let Some(secret_key) = &config.secret_key { secret_key.inner.to_owned() diff --git a/server/src/profiles/mod.rs b/server/src/profiles/mod.rs index 47c9cc3..7681084 100644 --- a/server/src/profiles/mod.rs +++ b/server/src/profiles/mod.rs @@ -569,23 +569,23 @@ impl Profile { let inner = profiles.by_id(profile_id)?.req()?; let banner = match inner.banner() { Some(banner_id) => { - let file = files.by_id(banner_id)?.req()?; - if let Some(key) = file.pictrs_key() { - Some(key.to_owned()) - } else { - None - } + let fallible = || -> Result { + let file = files.by_id(banner_id)?.req()?; + let key = file.pictrs_key().req()?; + Ok(key.to_owned()) + }; + (fallible)().ok() } None => None, }; let icon = match inner.icon() { Some(icon_id) => { - let file = files.by_id(icon_id)?.req()?; - if let Some(key) = file.pictrs_key() { - Some(key.to_owned()) - } else { - None - } + let fallible = || -> Result { + let file = files.by_id(icon_id)?.req()?; + let key = file.pictrs_key().req()?; + Ok(key.to_owned()) + }; + (fallible)().ok() } None => None, };