proxy support
This commit is contained in:
+2
-1
@@ -8,6 +8,7 @@ use plume_common::{activity_pub::broadcast, utils::md_to_html};
|
||||
use plume_models::{
|
||||
blogs::Blog, db_conn::DbConn, instance::Instance, medias::Media, mentions::*, post_authors::*,
|
||||
posts::*, safe_string::SafeString, tags::*, timeline::*, users::User, Error, PlumeRocket,
|
||||
CONFIG,
|
||||
};
|
||||
|
||||
#[get("/posts/<id>")]
|
||||
@@ -201,7 +202,7 @@ pub fn create(
|
||||
|
||||
let act = post.create_activity(&*conn)?;
|
||||
let dest = User::one_by_instance(&*conn)?;
|
||||
worker.execute(move || broadcast(&author, act, dest));
|
||||
worker.execute(move || broadcast(&author, act, dest, CONFIG.proxy().cloned()));
|
||||
}
|
||||
|
||||
Timeline::add_to_all_timelines(&rockets, &post, Kind::Original)?;
|
||||
|
||||
+3
-3
@@ -4,7 +4,7 @@ use plume_common::activity_pub::{
|
||||
sign::{verify_http_headers, Signable},
|
||||
};
|
||||
use plume_models::{
|
||||
headers::Headers, inbox::inbox, instance::Instance, users::User, Error, PlumeRocket,
|
||||
headers::Headers, inbox::inbox, instance::Instance, users::User, Error, PlumeRocket, CONFIG,
|
||||
};
|
||||
use rocket::{data::*, http::Status, response::status, Outcome::*, Request};
|
||||
use rocket_contrib::json::*;
|
||||
@@ -27,8 +27,8 @@ pub fn handle_incoming(
|
||||
.or_else(|| activity["actor"]["id"].as_str())
|
||||
.ok_or(status::BadRequest(Some("Missing actor id for activity")))?;
|
||||
|
||||
let actor =
|
||||
User::from_id(&rockets, actor_id, None).expect("instance::shared_inbox: user error");
|
||||
let actor = User::from_id(&rockets, actor_id, None, CONFIG.proxy())
|
||||
.expect("instance::shared_inbox: user error");
|
||||
if !verify_http_headers(&actor, &headers.0, &sig).is_secure() && !act.clone().verify(&actor) {
|
||||
// maybe we just know an old key?
|
||||
actor
|
||||
|
||||
@@ -16,7 +16,7 @@ use plume_common::{
|
||||
};
|
||||
use plume_models::{
|
||||
blogs::Blog, comments::*, inbox::inbox, instance::Instance, medias::Media, mentions::Mention,
|
||||
posts::Post, safe_string::SafeString, tags::Tag, users::User, Error, PlumeRocket,
|
||||
posts::Post, safe_string::SafeString, tags::Tag, users::User, Error, PlumeRocket, CONFIG,
|
||||
};
|
||||
|
||||
#[derive(Default, FromForm, Debug, Validate)]
|
||||
@@ -86,9 +86,9 @@ pub fn create(
|
||||
// federate
|
||||
let dest = User::one_by_instance(&*conn).expect("comments::create: dest error");
|
||||
let user_clone = user.clone();
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user_clone, new_comment, dest));
|
||||
rockets.worker.execute(move || {
|
||||
broadcast(&user_clone, new_comment, dest, CONFIG.proxy().cloned())
|
||||
});
|
||||
|
||||
Flash::success(
|
||||
Redirect::to(
|
||||
@@ -155,9 +155,9 @@ pub fn delete(
|
||||
)?;
|
||||
|
||||
let user_c = user.clone();
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user_c, delete_activity, dest));
|
||||
rockets.worker.execute(move || {
|
||||
broadcast(&user_c, delete_activity, dest, CONFIG.proxy().cloned())
|
||||
});
|
||||
let conn = rockets.conn;
|
||||
rockets
|
||||
.worker
|
||||
|
||||
@@ -387,7 +387,7 @@ fn ban(
|
||||
.unwrap();
|
||||
let target = User::one_by_instance(&*conn)?;
|
||||
let delete_act = u.delete_activity(&*conn)?;
|
||||
worker.execute(move || broadcast(&u, delete_act, target));
|
||||
worker.execute(move || broadcast(&u, delete_act, target, CONFIG.proxy().cloned()));
|
||||
}
|
||||
|
||||
Ok(())
|
||||
@@ -408,13 +408,13 @@ pub fn interact(rockets: PlumeRocket, user: Option<User>, target: String) -> Opt
|
||||
return Some(Redirect::to(uri!(super::user::details: name = target)));
|
||||
}
|
||||
|
||||
if let Ok(post) = Post::from_id(&rockets, &target, None) {
|
||||
if let Ok(post) = Post::from_id(&rockets, &target, None, CONFIG.proxy()) {
|
||||
return Some(Redirect::to(
|
||||
uri!(super::posts::details: blog = post.get_blog(&rockets.conn).expect("Can't retrieve blog").fqn, slug = &post.slug, responding_to = _),
|
||||
));
|
||||
}
|
||||
|
||||
if let Ok(comment) = Comment::from_id(&rockets, &target, None) {
|
||||
if let Ok(comment) = Comment::from_id(&rockets, &target, None, CONFIG.proxy()) {
|
||||
if comment.can_see(&rockets.conn, user.as_ref()) {
|
||||
let post = comment
|
||||
.get_post(&rockets.conn)
|
||||
|
||||
+5
-2
@@ -6,6 +6,7 @@ use plume_common::activity_pub::broadcast;
|
||||
use plume_common::utils;
|
||||
use plume_models::{
|
||||
blogs::Blog, inbox::inbox, likes, posts::Post, timeline::*, users::User, Error, PlumeRocket,
|
||||
CONFIG,
|
||||
};
|
||||
|
||||
#[post("/~/<blog>/<slug>/like")]
|
||||
@@ -27,7 +28,9 @@ pub fn create(
|
||||
|
||||
let dest = User::one_by_instance(&*conn)?;
|
||||
let act = like.to_activity(&*conn)?;
|
||||
rockets.worker.execute(move || broadcast(&user, act, dest));
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user, act, dest, CONFIG.proxy().cloned()));
|
||||
} else {
|
||||
let like = likes::Like::find_by_user_on_post(&*conn, user.id, post.id)?;
|
||||
let delete_act = like.build_undo(&*conn)?;
|
||||
@@ -39,7 +42,7 @@ pub fn create(
|
||||
let dest = User::one_by_instance(&*conn)?;
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user, delete_act, dest));
|
||||
.execute(move || broadcast(&user, delete_act, dest, CONFIG.proxy().cloned()));
|
||||
}
|
||||
|
||||
Ok(Redirect::to(
|
||||
|
||||
+9
-5
@@ -30,7 +30,7 @@ use plume_models::{
|
||||
tags::*,
|
||||
timeline::*,
|
||||
users::User,
|
||||
Error, PlumeRocket,
|
||||
Error, PlumeRocket, CONFIG,
|
||||
};
|
||||
|
||||
#[get("/~/<blog>/<slug>?<responding_to>", rank = 4)]
|
||||
@@ -339,7 +339,9 @@ pub fn update(
|
||||
.create_activity(&conn)
|
||||
.expect("post::update: act error");
|
||||
let dest = User::one_by_instance(&*conn).expect("post::update: dest error");
|
||||
rockets.worker.execute(move || broadcast(&user, act, dest));
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user, act, dest, CONFIG.proxy().cloned()));
|
||||
|
||||
Timeline::add_to_all_timelines(&rockets, &post, Kind::Original).ok();
|
||||
} else {
|
||||
@@ -347,7 +349,9 @@ pub fn update(
|
||||
.update_activity(&*conn)
|
||||
.expect("post::update: act error");
|
||||
let dest = User::one_by_instance(&*conn).expect("posts::update: dest error");
|
||||
rockets.worker.execute(move || broadcast(&user, act, dest));
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user, act, dest, CONFIG.proxy().cloned()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -533,7 +537,7 @@ pub fn create(
|
||||
.expect("posts::create: activity error");
|
||||
let dest = User::one_by_instance(&*conn).expect("posts::create: dest error");
|
||||
let worker = &rockets.worker;
|
||||
worker.execute(move || broadcast(&user, act, dest));
|
||||
worker.execute(move || broadcast(&user, act, dest, CONFIG.proxy().cloned()));
|
||||
|
||||
Timeline::add_to_all_timelines(&rockets, &post, Kind::Original)?;
|
||||
}
|
||||
@@ -594,7 +598,7 @@ pub fn delete(
|
||||
let user_c = user.clone();
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user_c, delete_activity, dest));
|
||||
.execute(move || broadcast(&user_c, delete_activity, dest, CONFIG.proxy().cloned()));
|
||||
let conn = rockets.conn;
|
||||
rockets
|
||||
.worker
|
||||
|
||||
@@ -6,7 +6,7 @@ use plume_common::activity_pub::broadcast;
|
||||
use plume_common::utils;
|
||||
use plume_models::{
|
||||
blogs::Blog, inbox::inbox, posts::Post, reshares::*, timeline::*, users::User, Error,
|
||||
PlumeRocket,
|
||||
PlumeRocket, CONFIG,
|
||||
};
|
||||
|
||||
#[post("/~/<blog>/<slug>/reshare")]
|
||||
@@ -28,7 +28,9 @@ pub fn create(
|
||||
|
||||
let dest = User::one_by_instance(&*conn)?;
|
||||
let act = reshare.to_activity(&*conn)?;
|
||||
rockets.worker.execute(move || broadcast(&user, act, dest));
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user, act, dest, CONFIG.proxy().cloned()));
|
||||
} else {
|
||||
let reshare = Reshare::find_by_user_on_post(&*conn, user.id, post.id)?;
|
||||
let delete_act = reshare.build_undo(&*conn)?;
|
||||
@@ -40,7 +42,7 @@ pub fn create(
|
||||
let dest = User::one_by_instance(&*conn)?;
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user, delete_act, dest));
|
||||
.execute(move || broadcast(&user, delete_act, dest, CONFIG.proxy().cloned()));
|
||||
}
|
||||
|
||||
Ok(Redirect::to(
|
||||
|
||||
+7
-6
@@ -31,7 +31,7 @@ use plume_models::{
|
||||
reshares::Reshare,
|
||||
safe_string::SafeString,
|
||||
users::*,
|
||||
Error, PlumeRocket,
|
||||
Error, PlumeRocket, CONFIG,
|
||||
};
|
||||
|
||||
#[get("/me")]
|
||||
@@ -82,8 +82,9 @@ pub fn details(
|
||||
.fetch_followers_ids()
|
||||
.expect("Remote user: fetching followers error")
|
||||
{
|
||||
let follower = User::from_id(&fetch_followers_rockets, &user_id, None)
|
||||
.expect("user::details: Couldn't fetch follower");
|
||||
let follower =
|
||||
User::from_id(&fetch_followers_rockets, &user_id, None, CONFIG.proxy())
|
||||
.expect("user::details: Couldn't fetch follower");
|
||||
follows::Follow::insert(
|
||||
&*fetch_followers_rockets.conn,
|
||||
follows::NewFollow {
|
||||
@@ -164,7 +165,7 @@ pub fn follow(
|
||||
let msg = i18n!(rockets.intl.catalog, "You are no longer following {}."; target.name());
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user, delete_act, vec![target]));
|
||||
.execute(move || broadcast(&user, delete_act, vec![target], CONFIG.proxy().cloned()));
|
||||
msg
|
||||
} else {
|
||||
let f = follows::Follow::insert(
|
||||
@@ -181,7 +182,7 @@ pub fn follow(
|
||||
let msg = i18n!(rockets.intl.catalog, "You are now following {}."; target.name());
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&user, act, vec![target]));
|
||||
.execute(move || broadcast(&user, act, vec![target], CONFIG.proxy().cloned()));
|
||||
msg
|
||||
};
|
||||
Ok(Flash::success(
|
||||
@@ -426,7 +427,7 @@ pub fn delete(
|
||||
let delete_act = account.delete_activity(&*rockets.conn)?;
|
||||
rockets
|
||||
.worker
|
||||
.execute(move || broadcast(&account, delete_act, target));
|
||||
.execute(move || broadcast(&account, delete_act, target, CONFIG.proxy().cloned()));
|
||||
|
||||
if let Some(cookie) = cookies.get_private(AUTH_COOKIE) {
|
||||
cookies.remove_private(cookie);
|
||||
|
||||
Reference in New Issue
Block a user