Remove dependency on activitypub module from config::main
This commit is contained in:
parent
8289aeaf41
commit
eeae9e3ad7
6 changed files with 25 additions and 27 deletions
|
@ -8,11 +8,15 @@ use serde_json::{json, Value};
|
||||||
|
|
||||||
use crate::activitypub::{
|
use crate::activitypub::{
|
||||||
constants::{
|
constants::{
|
||||||
ACTOR_KEY_SUFFIX,
|
|
||||||
AP_CONTEXT,
|
AP_CONTEXT,
|
||||||
W3ID_SECURITY_CONTEXT,
|
W3ID_SECURITY_CONTEXT,
|
||||||
},
|
},
|
||||||
identifiers::{local_actor_id, LocalActorCollection},
|
identifiers::{
|
||||||
|
local_actor_id,
|
||||||
|
local_actor_key_id,
|
||||||
|
local_instance_actor_id,
|
||||||
|
LocalActorCollection,
|
||||||
|
},
|
||||||
receiver::parse_property_value,
|
receiver::parse_property_value,
|
||||||
vocabulary::{IDENTITY_PROOF, IMAGE, LINK, PERSON, PROPERTY_VALUE, SERVICE},
|
vocabulary::{IDENTITY_PROOF, IMAGE, LINK, PERSON, PROPERTY_VALUE, SERVICE},
|
||||||
};
|
};
|
||||||
|
@ -259,7 +263,7 @@ pub fn get_local_actor(
|
||||||
let private_key = deserialize_private_key(&user.private_key)?;
|
let private_key = deserialize_private_key(&user.private_key)?;
|
||||||
let public_key_pem = get_public_key_pem(&private_key)?;
|
let public_key_pem = get_public_key_pem(&private_key)?;
|
||||||
let public_key = PublicKey {
|
let public_key = PublicKey {
|
||||||
id: format!("{}{}", actor_id, ACTOR_KEY_SUFFIX),
|
id: local_actor_key_id(&actor_id),
|
||||||
owner: actor_id.clone(),
|
owner: actor_id.clone(),
|
||||||
public_key_pem: public_key_pem,
|
public_key_pem: public_key_pem,
|
||||||
};
|
};
|
||||||
|
@ -332,12 +336,12 @@ pub fn get_local_actor(
|
||||||
pub fn get_instance_actor(
|
pub fn get_instance_actor(
|
||||||
instance: &Instance,
|
instance: &Instance,
|
||||||
) -> Result<Actor, ActorKeyError> {
|
) -> Result<Actor, ActorKeyError> {
|
||||||
let actor_id = instance.actor_id();
|
let actor_id = local_instance_actor_id(&instance.url());
|
||||||
let actor_inbox = LocalActorCollection::Inbox.of(&actor_id);
|
let actor_inbox = LocalActorCollection::Inbox.of(&actor_id);
|
||||||
let actor_outbox = LocalActorCollection::Outbox.of(&actor_id);
|
let actor_outbox = LocalActorCollection::Outbox.of(&actor_id);
|
||||||
let public_key_pem = get_public_key_pem(&instance.actor_key)?;
|
let public_key_pem = get_public_key_pem(&instance.actor_key)?;
|
||||||
let public_key = PublicKey {
|
let public_key = PublicKey {
|
||||||
id: instance.actor_key_id(),
|
id: local_actor_key_id(&actor_id),
|
||||||
owner: actor_id.clone(),
|
owner: actor_id.clone(),
|
||||||
public_key_pem: public_key_pem,
|
public_key_pem: public_key_pem,
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,5 +7,3 @@ pub const AP_CONTEXT: &str = "https://www.w3.org/ns/activitystreams";
|
||||||
pub const AP_PUBLIC: &str = "https://www.w3.org/ns/activitystreams#Public";
|
pub const AP_PUBLIC: &str = "https://www.w3.org/ns/activitystreams#Public";
|
||||||
pub const W3ID_SECURITY_CONTEXT: &str = "https://w3id.org/security/v1";
|
pub const W3ID_SECURITY_CONTEXT: &str = "https://w3id.org/security/v1";
|
||||||
pub const W3ID_DATA_INTEGRITY_CONTEXT: &str = "https://w3id.org/security/data-integrity/v1";
|
pub const W3ID_DATA_INTEGRITY_CONTEXT: &str = "https://w3id.org/security/data-integrity/v1";
|
||||||
|
|
||||||
pub const ACTOR_KEY_SUFFIX: &str = "#main-key";
|
|
||||||
|
|
|
@ -30,8 +30,8 @@ use crate::models::{
|
||||||
};
|
};
|
||||||
use crate::utils::crypto_rsa::deserialize_private_key;
|
use crate::utils::crypto_rsa::deserialize_private_key;
|
||||||
use super::actors::types::Actor;
|
use super::actors::types::Actor;
|
||||||
use super::constants::{AP_MEDIA_TYPE, ACTOR_KEY_SUFFIX};
|
use super::constants::AP_MEDIA_TYPE;
|
||||||
use super::identifiers::local_actor_id;
|
use super::identifiers::{local_actor_id, local_actor_key_id};
|
||||||
use super::queues::OutgoingActivityJobData;
|
use super::queues::OutgoingActivityJobData;
|
||||||
|
|
||||||
#[derive(thiserror::Error, Debug)]
|
#[derive(thiserror::Error, Debug)]
|
||||||
|
@ -136,14 +136,11 @@ async fn deliver_activity_worker(
|
||||||
recipients: Vec<Recipient>,
|
recipients: Vec<Recipient>,
|
||||||
) -> Result<(), DelivererError> {
|
) -> Result<(), DelivererError> {
|
||||||
let actor_key = deserialize_private_key(&sender.private_key)?;
|
let actor_key = deserialize_private_key(&sender.private_key)?;
|
||||||
let actor_key_id = format!(
|
let actor_id = local_actor_id(
|
||||||
"{}{}",
|
|
||||||
local_actor_id(
|
|
||||||
&instance.url(),
|
&instance.url(),
|
||||||
&sender.profile.username,
|
&sender.profile.username,
|
||||||
),
|
|
||||||
ACTOR_KEY_SUFFIX,
|
|
||||||
);
|
);
|
||||||
|
let actor_key_id = local_actor_key_id(&actor_id);
|
||||||
let activity_signed = if is_object_signed(&activity) {
|
let activity_signed = if is_object_signed(&activity) {
|
||||||
log::warn!("activity is already signed");
|
log::warn!("activity is already signed");
|
||||||
activity
|
activity
|
||||||
|
|
|
@ -7,6 +7,7 @@ use serde_json::Value;
|
||||||
use crate::activitypub::{
|
use crate::activitypub::{
|
||||||
actors::types::Actor,
|
actors::types::Actor,
|
||||||
constants::AP_MEDIA_TYPE,
|
constants::AP_MEDIA_TYPE,
|
||||||
|
identifiers::{local_actor_key_id, local_instance_actor_id},
|
||||||
types::Object,
|
types::Object,
|
||||||
};
|
};
|
||||||
use crate::config::Instance;
|
use crate::config::Instance;
|
||||||
|
@ -90,12 +91,14 @@ async fn send_request(
|
||||||
};
|
};
|
||||||
if !instance.is_private {
|
if !instance.is_private {
|
||||||
// Only public instance can send signed request
|
// Only public instance can send signed request
|
||||||
|
let instance_actor_id = local_instance_actor_id(&instance.url());
|
||||||
|
let instance_actor_key_id = local_actor_key_id(&instance_actor_id);
|
||||||
let headers = create_http_signature(
|
let headers = create_http_signature(
|
||||||
Method::GET,
|
Method::GET,
|
||||||
url,
|
url,
|
||||||
"",
|
"",
|
||||||
&instance.actor_key,
|
&instance.actor_key,
|
||||||
&instance.actor_key_id(),
|
&instance_actor_key_id,
|
||||||
)?;
|
)?;
|
||||||
request_builder = request_builder
|
request_builder = request_builder
|
||||||
.header("Host", headers.host)
|
.header("Host", headers.host)
|
||||||
|
|
|
@ -3,6 +3,8 @@ use uuid::Uuid;
|
||||||
|
|
||||||
use crate::errors::ValidationError;
|
use crate::errors::ValidationError;
|
||||||
|
|
||||||
|
const ACTOR_KEY_SUFFIX: &str = "#main-key";
|
||||||
|
|
||||||
pub enum LocalActorCollection {
|
pub enum LocalActorCollection {
|
||||||
Inbox,
|
Inbox,
|
||||||
Outbox,
|
Outbox,
|
||||||
|
@ -58,6 +60,10 @@ pub fn local_instance_actor_id(instance_url: &str) -> String {
|
||||||
format!("{}/actor", instance_url)
|
format!("{}/actor", instance_url)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn local_actor_key_id(actor_id: &str) -> String {
|
||||||
|
format!("{}{}", actor_id, ACTOR_KEY_SUFFIX)
|
||||||
|
}
|
||||||
|
|
||||||
pub fn local_object_id(instance_url: &str, internal_object_id: &Uuid) -> String {
|
pub fn local_object_id(instance_url: &str, internal_object_id: &Uuid) -> String {
|
||||||
format!("{}/objects/{}", instance_url, internal_object_id)
|
format!("{}/objects/{}", instance_url, internal_object_id)
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,6 @@ use serde::{
|
||||||
};
|
};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
use crate::activitypub::constants::ACTOR_KEY_SUFFIX;
|
|
||||||
use crate::activitypub::identifiers::local_instance_actor_id;
|
|
||||||
use crate::utils::urls::guess_protocol;
|
use crate::utils::urls::guess_protocol;
|
||||||
|
|
||||||
use super::blockchain::BlockchainConfig;
|
use super::blockchain::BlockchainConfig;
|
||||||
|
@ -183,14 +181,6 @@ impl Instance {
|
||||||
self._url.host_str().unwrap().to_string()
|
self._url.host_str().unwrap().to_string()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn actor_id(&self) -> String {
|
|
||||||
local_instance_actor_id(&self.url())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn actor_key_id(&self) -> String {
|
|
||||||
format!("{}{}", self.actor_id(), ACTOR_KEY_SUFFIX)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn agent(&self) -> String {
|
pub fn agent(&self) -> String {
|
||||||
format!(
|
format!(
|
||||||
"Mitra {version}; {instance_url}",
|
"Mitra {version}; {instance_url}",
|
||||||
|
|
Loading…
Reference in a new issue