mirror of
https://github.com/friendica/friendica
synced 2024-12-23 00:00:21 +00:00
Merge pull request #7284 from annando/fix-fatal
Don't send activities to "null" endpoints
This commit is contained in:
commit
f0849b0a93
2 changed files with 31 additions and 5 deletions
|
@ -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']);
|
||||||
|
|
|
@ -1474,6 +1474,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);
|
||||||
|
|
||||||
|
@ -1510,6 +1514,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
|
||||||
|
@ -1556,6 +1564,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,
|
||||||
|
@ -1589,6 +1601,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,
|
||||||
|
@ -1622,6 +1638,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)) {
|
||||||
|
|
Loading…
Reference in a new issue