Use compat mode when signing outgoing activities (fixes #1984) (#2473)

Nutomic-patch-7
Nutomic 2022-10-03 17:46:42 +00:00 committed by GitHub
parent 3f8c28b26f
commit 290acf6acc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 72 additions and 52 deletions

80
Cargo.lock generated
View File

@ -4,15 +4,15 @@ version = 3
[[package]] [[package]]
name = "activitypub_federation" name = "activitypub_federation"
version = "0.2.0" version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "446e75aefabf78ed9cc7e175f0d90c74f478086fb9bc571a9614fb0b7cbe35d4" checksum = "690ed975ab70b883b4f0776f60fd7f23a7484a49f4257e7672e64d0990e95771"
dependencies = [ dependencies = [
"activitypub_federation_derive", "activitypub_federation_derive",
"actix-web", "actix-web",
"anyhow", "anyhow",
"async-trait", "async-trait",
"background-jobs", "background-jobs 0.13.0",
"base64", "base64",
"chrono", "chrono",
"derive_builder 0.11.2", "derive_builder 0.11.2",
@ -479,8 +479,18 @@ version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c301b3ccb60fa2aadb4da111e27b257ddc4f0509848c43c85764dc14f7a49a3" checksum = "5c301b3ccb60fa2aadb4da111e27b257ddc4f0509848c43c85764dc14f7a49a3"
dependencies = [ dependencies = [
"background-jobs-actix", "background-jobs-actix 0.12.0",
"background-jobs-core", "background-jobs-core 0.12.0",
]
[[package]]
name = "background-jobs"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "793a813f9145c5f3a27b8dcd834c0927de68bbd60d53a369e5894f3cc5759020"
dependencies = [
"background-jobs-actix 0.13.0",
"background-jobs-core 0.13.0",
] ]
[[package]] [[package]]
@ -493,7 +503,7 @@ dependencies = [
"anyhow", "anyhow",
"async-mutex", "async-mutex",
"async-trait", "async-trait",
"background-jobs-core", "background-jobs-core 0.12.0",
"num_cpus", "num_cpus",
"serde", "serde",
"serde_json", "serde_json",
@ -504,6 +514,27 @@ dependencies = [
"uuid 0.8.2", "uuid 0.8.2",
] ]
[[package]]
name = "background-jobs-actix"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8660626a2d8781b50cbe0e3b63d8e2a7e08a90e80fa2bca8e8cc19deff72ebf4"
dependencies = [
"actix-rt",
"anyhow",
"async-mutex",
"async-trait",
"background-jobs-core 0.13.0",
"num_cpus",
"serde",
"serde_json",
"thiserror",
"tokio",
"tracing",
"tracing-futures",
"uuid 1.1.2",
]
[[package]] [[package]]
name = "background-jobs-core" name = "background-jobs-core"
version = "0.12.0" version = "0.12.0"
@ -523,6 +554,25 @@ dependencies = [
"uuid 0.8.2", "uuid 0.8.2",
] ]
[[package]]
name = "background-jobs-core"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48e78e842fe2ae461319e3d1843c12e301630e65650332b02032ac70b0dfc66f"
dependencies = [
"actix-rt",
"anyhow",
"async-trait",
"event-listener",
"serde",
"serde_json",
"thiserror",
"time 0.3.14",
"tracing",
"tracing-futures",
"uuid 1.1.2",
]
[[package]] [[package]]
name = "base64" name = "base64"
version = "0.13.0" version = "0.13.0"
@ -2189,7 +2239,7 @@ dependencies = [
"actix-web", "actix-web",
"actix-web-actors", "actix-web-actors",
"anyhow", "anyhow",
"background-jobs", "background-jobs 0.12.0",
"chrono", "chrono",
"diesel", "diesel",
"lemmy_api_common", "lemmy_api_common",
@ -2570,9 +2620,9 @@ checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
[[package]] [[package]]
name = "openssl" name = "openssl"
version = "0.10.41" version = "0.10.42"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"cfg-if", "cfg-if",
@ -2602,9 +2652,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]] [[package]]
name = "openssl-sys" name = "openssl-sys"
version = "0.9.75" version = "0.9.76"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" checksum = "5230151e44c0f05157effb743e8d517472843121cf9243e8b81393edb5acd9ce"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"cc", "cc",
@ -3829,18 +3879,18 @@ dependencies = [
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "1.0.35" version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c53f98874615aea268107765aa1ed8f6116782501d18e53d08b471733bea6c85" checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"
dependencies = [ dependencies = [
"thiserror-impl", "thiserror-impl",
] ]
[[package]] [[package]]
name = "thiserror-impl" name = "thiserror-impl"
version = "1.0.35" version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8b463991b4eab2d801e724172285ec4195c650e8ec79b149e6c2a8e6dd3f783" checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"
dependencies = [ dependencies = [
"proc-macro2 1.0.43", "proc-macro2 1.0.43",
"quote 1.0.21", "quote 1.0.21",

View File

@ -22,7 +22,7 @@ lemmy_db_views_moderator = { version = "=0.16.5", path = "../db_views_moderator"
lemmy_db_views_actor = { version = "=0.16.5", path = "../db_views_actor", features = ["full"] } lemmy_db_views_actor = { version = "=0.16.5", path = "../db_views_actor", features = ["full"] }
lemmy_api_common = { version = "=0.16.5", path = "../api_common", features = ["full"] } lemmy_api_common = { version = "=0.16.5", path = "../api_common", features = ["full"] }
lemmy_websocket = { version = "=0.16.5", path = "../websocket" } lemmy_websocket = { version = "=0.16.5", path = "../websocket" }
activitypub_federation = "0.2.0" activitypub_federation = { version = "0.2.2" }
diesel = "2.0.0" diesel = "2.0.0"
bcrypt = "0.13.0" bcrypt = "0.13.0"
chrono = { version = "0.4.22", features = ["serde"], default-features = false } chrono = { version = "0.4.22", features = ["serde"], default-features = false }

View File

@ -16,7 +16,7 @@ lemmy_db_views = { version = "=0.16.5", path = "../db_views", features = ["full"
lemmy_db_views_actor = { version = "=0.16.5", path = "../db_views_actor", features = ["full"] } lemmy_db_views_actor = { version = "=0.16.5", path = "../db_views_actor", features = ["full"] }
lemmy_api_common = { version = "=0.16.5", path = "../api_common", features = ["full"] } lemmy_api_common = { version = "=0.16.5", path = "../api_common", features = ["full"] }
lemmy_websocket = { version = "=0.16.5", path = "../websocket" } lemmy_websocket = { version = "=0.16.5", path = "../websocket" }
activitypub_federation = "0.2.0" activitypub_federation = { version = "0.2.2" }
bcrypt = "0.13.0" bcrypt = "0.13.0"
serde_json = { version = "1.0.85", features = ["preserve_order"] } serde_json = { version = "1.0.85", features = ["preserve_order"] }
serde = { version = "1.0.145", features = ["derive"] } serde = { version = "1.0.145", features = ["derive"] }

View File

@ -20,7 +20,7 @@ lemmy_db_views = { version = "=0.16.5", path = "../db_views", features = ["full"
lemmy_db_views_actor = { version = "=0.16.5", path = "../db_views_actor", features = ["full"] } lemmy_db_views_actor = { version = "=0.16.5", path = "../db_views_actor", features = ["full"] }
lemmy_api_common = { version = "=0.16.5", path = "../api_common", features = ["full"] } lemmy_api_common = { version = "=0.16.5", path = "../api_common", features = ["full"] }
lemmy_websocket = { version = "=0.16.5", path = "../websocket" } lemmy_websocket = { version = "=0.16.5", path = "../websocket" }
activitypub_federation = "0.2.0" activitypub_federation = { version = "0.2.2" }
diesel = "2.0.0" diesel = "2.0.0"
activitystreams-kinds = "0.2.1" activitystreams-kinds = "0.2.1"
chrono = { version = "0.4.22", features = ["serde"], default-features = false } chrono = { version = "0.4.22", features = ["serde"], default-features = false }

View File

@ -2,7 +2,7 @@ use crate::fetcher::post_or_comment::PostOrComment;
use activitypub_federation::{ use activitypub_federation::{
core::signatures::PublicKey, core::signatures::PublicKey,
traits::{Actor, ApubObject}, traits::{Actor, ApubObject},
InstanceSettingsBuilder, InstanceSettings,
LocalInstance, LocalInstance,
}; };
use anyhow::Context; use anyhow::Context;
@ -34,13 +34,14 @@ static CONTEXT: Lazy<Vec<serde_json::Value>> = Lazy::new(|| {
fn local_instance(context: &LemmyContext) -> &'static LocalInstance { fn local_instance(context: &LemmyContext) -> &'static LocalInstance {
static LOCAL_INSTANCE: OnceCell<LocalInstance> = OnceCell::new(); static LOCAL_INSTANCE: OnceCell<LocalInstance> = OnceCell::new();
LOCAL_INSTANCE.get_or_init(|| { LOCAL_INSTANCE.get_or_init(|| {
let settings = InstanceSettingsBuilder::default() let settings = InstanceSettings::builder()
.http_fetch_retry_limit(context.settings().federation.http_fetch_retry_limit) .http_fetch_retry_limit(context.settings().federation.http_fetch_retry_limit)
.worker_count(context.settings().federation.worker_count) .worker_count(context.settings().federation.worker_count)
.debug(context.settings().federation.debug) .debug(context.settings().federation.debug)
// TODO No idea why, but you can't pass context.settings() to the verify_url_function closure // TODO No idea why, but you can't pass context.settings() to the verify_url_function closure
// without the value getting captured. // without the value getting captured.
.verify_url_function(|url| check_apub_id_valid(url, &SETTINGS)) .verify_url_function(|url| check_apub_id_valid(url, &SETTINGS))
.http_signature_compat(true)
.build() .build()
.expect("configure federation"); .expect("configure federation");
LocalInstance::new( LocalInstance::new(

View File

@ -1,31 +0,0 @@
[package]
name = "lemmy_apub_lib"
version = "0.16.3"
edition = "2021"
description = "A link aggregator for the fediverse"
license = "AGPL-3.0"
homepage = "https://join-lemmy.org/"
documentation = "https://join-lemmy.org/docs/en/index.html"
[dependencies]
lemmy_utils = { version = "=0.16.3", path = "../utils" }
lemmy_apub_lib_derive = { version = "=0.16.3", path = "../apub_lib_derive" }
chrono = { version = "0.4.19", default-features = false }
serde = { version = "1.0.136", features = ["derive"] }
async-trait = "0.1.53"
url = { version = "2.2.2", features = ["serde"] }
serde_json = { version = "1.0.79", features = ["preserve_order"] }
anyhow = "1.0.56"
reqwest = { version = "0.11.10", features = ["json"] }
reqwest-middleware = "0.1.5"
tracing = "0.1.32"
base64 = "0.13.0"
openssl = "0.10.38"
once_cell = "1.10.0"
http = "0.2.6"
sha2 = "0.10.2"
actix-web = { version = "4.0.1", default-features = false }
http-signature-normalization-actix = { version = "0.6.1", default-features = false, features = ["server", "sha-2"] }
http-signature-normalization-reqwest = { version = "0.5.0", default-features = false, features = ["sha-2", "middleware"] }
background-jobs = "0.12.0"
diesel = { version = "2.0.0-rc.0", features = ["chrono"] }

View File

@ -24,7 +24,7 @@ url = { version = "2.3.1", features = ["serde"] }
strum = "0.24.1" strum = "0.24.1"
strum_macros = "0.24.3" strum_macros = "0.24.3"
serde_json = { version = "1.0.85", features = ["preserve_order"], optional = true } serde_json = { version = "1.0.85", features = ["preserve_order"], optional = true }
activitypub_federation = { version = "0.2.0", optional = true } activitypub_federation = { version = "0.2.2", optional = true }
lemmy_utils = { version = "=0.16.5", path = "../utils", optional = true } lemmy_utils = { version = "=0.16.5", path = "../utils", optional = true }
bcrypt = { version = "0.13.0", optional = true } bcrypt = { version = "0.13.0", optional = true }
diesel = { version = "2.0.0", features = ["postgres","chrono","r2d2","serde_json"], optional = true } diesel = { version = "2.0.0", features = ["postgres","chrono","r2d2","serde_json"], optional = true }