[feature] Allow delivery to sharedInboxes where possible (#847)

* update Activity

* add instance-deliver-to-shared-inboxes setting

* update activity version again

* add SharedInboxURI field to accounts

* serdes for endpoints/sharedInbox

* deliver to sharedInbox if one is available

* update tests

* only assign shared inbox if shared domain

* look for shared inbox if currently nil

* go fmt

* finger to get params.RemoteAccountID if necessary

* make comments clearer

* compare dns more consistently
This commit is contained in:
tobi
2022-09-23 21:27:35 +02:00
committed by GitHub
parent eb1bb8b1b3
commit 69a193dae5
69 changed files with 2212 additions and 32 deletions

View File

@@ -702,3 +702,33 @@ func ExtractSensitive(withSensitive WithSensitive) bool {
return false
}
// ExtractSharedInbox extracts the sharedInbox URI properly from an Actor.
// Returns nil if this property is not set.
func ExtractSharedInbox(withEndpoints WithEndpoints) *url.URL {
endpointsProp := withEndpoints.GetActivityStreamsEndpoints()
if endpointsProp == nil {
return nil
}
for iter := endpointsProp.Begin(); iter != endpointsProp.End(); iter = iter.Next() {
if iter.IsActivityStreamsEndpoints() {
endpoints := iter.Get()
if endpoints == nil {
return nil
}
sharedInboxProp := endpoints.GetActivityStreamsSharedInbox()
if sharedInboxProp == nil {
return nil
}
if !sharedInboxProp.IsIRI() {
return nil
}
return sharedInboxProp.GetIRI()
}
}
return nil
}