1
0
Fork 0

Block communication with Diaspora for communities

This commit is contained in:
Michael 2022-02-15 07:08:02 +00:00
parent 2b0518ac04
commit 29d83c0ffb
4 changed files with 17 additions and 7 deletions

View file

@ -818,6 +818,15 @@ class Item
$item['inform'] = trim($item['inform'] ?? ''); $item['inform'] = trim($item['inform'] ?? '');
$item['file'] = trim($item['file'] ?? ''); $item['file'] = trim($item['file'] ?? '');
// Communities aren't working with the Diaspora protoccol
if (($uid != 0) && ($item['network'] == Protocol::DIASPORA)) {
$user = User::getById($uid, ['account-type']);
if ($user['account-type'] == Contact::TYPE_COMMUNITY) {
Logger::info('Community posts are not supported via Diaspora');
return 0;
}
}
// Items cannot be stored before they happen ... // Items cannot be stored before they happen ...
if ($item['created'] > DateTimeFormat::utcNow()) { if ($item['created'] > DateTimeFormat::utcNow()) {
$item['created'] = DateTimeFormat::utcNow(); $item['created'] = DateTimeFormat::utcNow();

View file

@ -93,6 +93,12 @@ class Receive extends BaseModule
$importer = User::getByGuid($this->parameters['guid']); $importer = User::getByGuid($this->parameters['guid']);
if ($importer['account-type'] == User::ACCOUNT_TYPE_COMMUNITY) {
// Communities aren't working with the Diaspora protoccol
// We throw an "accepted" here, so that the sender doesn't repeat the delivery
throw new HTTPException\AcceptedException();
}
$msg = $this->decodePost(false, $importer['prvkey'] ?? ''); $msg = $this->decodePost(false, $importer['prvkey'] ?? '');
$this->logger->info('Diaspora: Dispatching.'); $this->logger->info('Diaspora: Dispatching.');

View file

@ -858,10 +858,6 @@ class Diaspora
} elseif (($contact["rel"] == Contact::SHARING) || ($contact["rel"] == Contact::FRIEND)) { } elseif (($contact["rel"] == Contact::SHARING) || ($contact["rel"] == Contact::FRIEND)) {
// Yes, then it is fine. // Yes, then it is fine.
return true; return true;
// Is it a post to a community?
} elseif (($contact["rel"] == Contact::FOLLOWER) && ($importer['account-type'] == User::ACCOUNT_TYPE_COMMUNITY)) {
// That's good
return true;
// Is the message a global user or a comment? // Is the message a global user or a comment?
} elseif (($importer["uid"] == 0) || $is_comment) { } elseif (($importer["uid"] == 0) || $is_comment) {
// Messages for the global users and comments are always accepted // Messages for the global users and comments are always accepted
@ -3473,9 +3469,8 @@ class Diaspora
private static function prependParentAuthorMention($body, $profile_url) private static function prependParentAuthorMention($body, $profile_url)
{ {
$profile = Contact::getByURL($profile_url, false, ['addr', 'name', 'contact-type']); $profile = Contact::getByURL($profile_url, false, ['addr', 'name']);
if (!empty($profile['addr']) if (!empty($profile['addr'])
&& $profile['contact-type'] != Contact::TYPE_COMMUNITY
&& !strstr($body, $profile['addr']) && !strstr($body, $profile['addr'])
&& !strstr($body, $profile_url) && !strstr($body, $profile_url)
) { ) {

View file

@ -153,7 +153,7 @@ class Notifier
} }
// Should the post be transmitted to Diaspora? // Should the post be transmitted to Diaspora?
$diaspora_delivery = true; $diaspora_delivery = ($owner['account-type'] != User::ACCOUNT_TYPE_COMMUNITY);
// If this is a public conversation, notify the feed hub // If this is a public conversation, notify the feed hub
$public_message = true; $public_message = true;