Fix some federation issue (#573)
* send scheme as part of webfinger remote follow template fix tsileo/microblog.pub#49 * bump webfinger to 0.4.1 * cargo fmt * revert translations * Use group: prefix for blog webfinger queries
This commit is contained in:
parent
54c6d21fc5
commit
4f7c20fc26
9
Cargo.lock
generated
9
Cargo.lock
generated
@ -1911,7 +1911,7 @@ dependencies = [
|
|||||||
"shrinkwraprs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"shrinkwraprs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"validator 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"validator 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"validator_derive 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"validator_derive 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"webfinger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"webfinger 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -2009,7 +2009,7 @@ dependencies = [
|
|||||||
"shrinkwraprs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"shrinkwraprs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tantivy 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tantivy 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"webfinger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"webfinger 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"whatlang 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"whatlang 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -3413,13 +3413,12 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "webfinger"
|
name = "webfinger"
|
||||||
version = "0.3.1"
|
version = "0.4.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"reqwest 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
"reqwest 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -3871,7 +3870,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
|
||||||
"checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1"
|
"checksum walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d9d7ed3431229a144296213105a390676cc49c9b6a72bd19f3176c98e129fa1"
|
||||||
"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3"
|
"checksum want 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "797464475f30ddb8830cc529aaaae648d581f99e2036a928877dfde027ddf6b3"
|
||||||
"checksum webfinger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "edc8f298f29f04bf5b6a85d7d448de4f16b7d45807d0a3ec422efcfbf1960519"
|
"checksum webfinger 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ec24b1b0700d4b466d280228ed0f62274eedeaa80206820f071fdc8ed787b664"
|
||||||
"checksum whatlang 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bf61042986b0f0612917b71609b861d695e76c55f9fc81b8a8f8cd363646816c"
|
"checksum whatlang 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bf61042986b0f0612917b71609b861d695e76c55f9fc81b8a8f8cd363646816c"
|
||||||
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
|
"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
|
||||||
"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
|
"checksum winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "f10e386af2b13e47c89e7236a7a14a086791a2b88ebad6df9bf42040195cf770"
|
||||||
|
@ -31,7 +31,7 @@ serde_qs = "0.4"
|
|||||||
shrinkwraprs = "0.2.1"
|
shrinkwraprs = "0.2.1"
|
||||||
validator = "0.8"
|
validator = "0.8"
|
||||||
validator_derive = "0.8"
|
validator_derive = "0.8"
|
||||||
webfinger = "0.3.1"
|
webfinger = "0.4.1"
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "plume"
|
name = "plume"
|
||||||
|
@ -23,7 +23,7 @@ serde_derive = "1.0"
|
|||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
tantivy = "0.9.1"
|
tantivy = "0.9.1"
|
||||||
url = "1.7"
|
url = "1.7"
|
||||||
webfinger = "0.3.1"
|
webfinger = "0.4.1"
|
||||||
whatlang = "0.7.1"
|
whatlang = "0.7.1"
|
||||||
shrinkwraprs = "0.2.1"
|
shrinkwraprs = "0.2.1"
|
||||||
diesel-derive-newtype = "0.1.2"
|
diesel-derive-newtype = "0.1.2"
|
||||||
|
@ -145,7 +145,7 @@ impl Blog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn fetch_from_webfinger(c: &PlumeRocket, acct: &str) -> Result<Blog> {
|
fn fetch_from_webfinger(c: &PlumeRocket, acct: &str) -> Result<Blog> {
|
||||||
resolve(acct.to_owned(), true)?
|
resolve_with_prefix(Prefix::Group, acct.to_owned(), true)?
|
||||||
.links
|
.links
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.find(|l| l.mime_type == Some(String::from("application/activity+json")))
|
.find(|l| l.mime_type == Some(String::from("application/activity+json")))
|
||||||
|
@ -707,7 +707,7 @@ impl User {
|
|||||||
mime_type: None,
|
mime_type: None,
|
||||||
href: None,
|
href: None,
|
||||||
template: Some(format!(
|
template: Some(format!(
|
||||||
"{}/remote_interact?{{uri}}",
|
"https://{}/remote_interact?{{uri}}",
|
||||||
self.get_instance(conn)?.public_domain
|
self.get_instance(conn)?.public_domain
|
||||||
)),
|
)),
|
||||||
},
|
},
|
||||||
|
@ -48,14 +48,16 @@ impl Resolver<PlumeRocket> for WebfingerResolver {
|
|||||||
CONFIG.base_url.as_str()
|
CONFIG.base_url.as_str()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn find(acct: String, ctx: PlumeRocket) -> Result<Webfinger, ResolverError> {
|
fn find(prefix: Prefix, acct: String, ctx: PlumeRocket) -> Result<Webfinger, ResolverError> {
|
||||||
User::find_by_fqn(&ctx, &acct)
|
match prefix {
|
||||||
.and_then(|usr| usr.webfinger(&*ctx.conn))
|
Prefix::Acct => User::find_by_fqn(&ctx, &acct)
|
||||||
.or_else(|_| {
|
.and_then(|usr| usr.webfinger(&*ctx.conn))
|
||||||
Blog::find_by_fqn(&ctx, &acct)
|
.or(Err(ResolverError::NotFound)),
|
||||||
.and_then(|blog| blog.webfinger(&*ctx.conn))
|
Prefix::Group => Blog::find_by_fqn(&ctx, &acct)
|
||||||
.or(Err(ResolverError::NotFound))
|
.and_then(|blog| blog.webfinger(&*ctx.conn))
|
||||||
})
|
.or(Err(ResolverError::NotFound)),
|
||||||
|
Prefix::Custom(_) => Err(ResolverError::NotFound),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,9 +74,7 @@ pub fn webfinger(resource: String, rockets: PlumeRocket) -> Content<String> {
|
|||||||
"Invalid resource. Make sure to request an acct: URI"
|
"Invalid resource. Make sure to request an acct: URI"
|
||||||
}
|
}
|
||||||
ResolverError::NotFound => "Requested resource was not found",
|
ResolverError::NotFound => "Requested resource was not found",
|
||||||
ResolverError::WrongInstance => {
|
ResolverError::WrongDomain => "This is not the instance of the requested resource",
|
||||||
"This is not the instance of the requested resource"
|
|
||||||
}
|
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user