Don't send activities to "null" endpoints

This commit is contained in:
Michael 2019-06-20 03:06:34 +00:00
parent f878cc2623
commit 2e4e8bdf0a
2 changed files with 31 additions and 5 deletions

View file

@ -87,6 +87,8 @@ class APContact extends BaseObject
return false; return false;
} }
$fetched_contact = false;
if (empty($update)) { if (empty($update)) {
if (is_null($update)) { if (is_null($update)) {
$ref_update = DateTimeFormat::utc('now - 1 month'); $ref_update = DateTimeFormat::utc('now - 1 month');
@ -110,24 +112,28 @@ class APContact extends BaseObject
if (!is_null($update)) { if (!is_null($update)) {
return DBA::isResult($apcontact) ? $apcontact : false; return DBA::isResult($apcontact) ? $apcontact : false;
} }
if (DBA::isResult($apcontact)) {
$fetched_contact = $apcontact;
}
} }
if (empty(parse_url($url, PHP_URL_SCHEME))) { if (empty(parse_url($url, PHP_URL_SCHEME))) {
$url = self::addrToUrl($url); $url = self::addrToUrl($url);
if (empty($url)) { if (empty($url)) {
return false; return $fetched_contact;
} }
} }
$data = ActivityPub::fetchContent($url); $data = ActivityPub::fetchContent($url);
if (empty($data)) { if (empty($data)) {
return false; return $fetched_contact;
} }
$compacted = JsonLD::compact($data); $compacted = JsonLD::compact($data);
if (empty($compacted['@id'])) { if (empty($compacted['@id'])) {
return false; return $fetched_contact;
} }
$apcontact = []; $apcontact = [];
@ -168,12 +174,12 @@ class APContact extends BaseObject
// Quit if none of the basic values are set // Quit if none of the basic values are set
if (empty($apcontact['url']) || empty($apcontact['inbox']) || empty($apcontact['type'])) { if (empty($apcontact['url']) || empty($apcontact['inbox']) || empty($apcontact['type'])) {
return false; return $fetched_contact;
} }
// Quit if this doesn't seem to be an account at all // Quit if this doesn't seem to be an account at all
if (!in_array($apcontact['type'], ActivityPub::ACCOUNT_TYPES)) { if (!in_array($apcontact['type'], ActivityPub::ACCOUNT_TYPES)) {
return false; return $fetched_contact;
} }
$parts = parse_url($apcontact['url']); $parts = parse_url($apcontact['url']);

View file

@ -1479,6 +1479,10 @@ class Transmitter
public static function sendActivity($activity, $target, $uid, $id = '') public static function sendActivity($activity, $target, $uid, $id = '')
{ {
$profile = APContact::getByURL($target); $profile = APContact::getByURL($target);
if (empty($profile['inbox'])) {
Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]);
return;
}
$owner = User::getOwnerDataById($uid); $owner = User::getOwnerDataById($uid);
@ -1515,6 +1519,10 @@ class Transmitter
public static function sendFollowObject($object, $target, $uid = 0) public static function sendFollowObject($object, $target, $uid = 0)
{ {
$profile = APContact::getByURL($target); $profile = APContact::getByURL($target);
if (empty($profile['inbox'])) {
Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]);
return;
}
if (empty($uid)) { if (empty($uid)) {
// Fetch the list of administrators // Fetch the list of administrators
@ -1561,6 +1569,10 @@ class Transmitter
public static function sendContactAccept($target, $id, $uid) public static function sendContactAccept($target, $id, $uid)
{ {
$profile = APContact::getByURL($target); $profile = APContact::getByURL($target);
if (empty($profile['inbox'])) {
Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]);
return;
}
$owner = User::getOwnerDataById($uid); $owner = User::getOwnerDataById($uid);
$data = ['@context' => ActivityPub::CONTEXT, $data = ['@context' => ActivityPub::CONTEXT,
@ -1594,6 +1606,10 @@ class Transmitter
public static function sendContactReject($target, $id, $uid) public static function sendContactReject($target, $id, $uid)
{ {
$profile = APContact::getByURL($target); $profile = APContact::getByURL($target);
if (empty($profile['inbox'])) {
Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]);
return;
}
$owner = User::getOwnerDataById($uid); $owner = User::getOwnerDataById($uid);
$data = ['@context' => ActivityPub::CONTEXT, $data = ['@context' => ActivityPub::CONTEXT,
@ -1627,6 +1643,10 @@ class Transmitter
public static function sendContactUndo($target, $cid, $uid) public static function sendContactUndo($target, $cid, $uid)
{ {
$profile = APContact::getByURL($target); $profile = APContact::getByURL($target);
if (empty($profile['inbox'])) {
Logger::warning('No inbox found for target', ['target' => $target, 'profile' => $profile]);
return;
}
$object_id = self::activityIDFromContact($cid); $object_id = self::activityIDFromContact($cid);
if (empty($object_id)) { if (empty($object_id)) {