1
0
Fork 0

We now use the regular probing function

This commit is contained in:
Michael 2018-09-13 21:57:41 +00:00
parent f7b03bc5f3
commit c2f6b166c7
2 changed files with 19 additions and 6 deletions

View file

@ -19,6 +19,7 @@ use Friendica\Model\Contact;
use Friendica\Model\Profile; use Friendica\Model\Profile;
use Friendica\Protocol\Email; use Friendica\Protocol\Email;
use Friendica\Protocol\Feed; use Friendica\Protocol\Feed;
use Friendica\Protocol\ActivityPub;
use Friendica\Util\Crypto; use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network; use Friendica\Util\Network;
@ -328,7 +329,16 @@ class Probe
$uid = local_user(); $uid = local_user();
} }
$data = self::detect($uri, $network, $uid); if ($network != Protocol::ACTIVITYPUB) {
$data = self::detect($uri, $network, $uid);
}
if (empty($data) || ($data['network'] == Protocol::PHANTOM)) {
$ap_profile = ActivityPub::fetchProfile($uri);
if (!empty($ap_profile) && ($ap_profile['network'] == Protocol::ACTIVITYPUB)) {
$data = $ap_profile;
}
}
if (!isset($data["url"])) { if (!isset($data["url"])) {
$data["url"] = $uri; $data["url"] = $uri;

View file

@ -15,6 +15,7 @@ use Friendica\Model\User;
use Friendica\Util\DateTimeFormat; use Friendica\Util\DateTimeFormat;
use Friendica\Util\Crypto; use Friendica\Util\Crypto;
use Friendica\Content\Text\BBCode; use Friendica\Content\Text\BBCode;
use Friendica\Network\Probe;
/** /**
* @brief ActivityPub Protocol class * @brief ActivityPub Protocol class
@ -322,11 +323,11 @@ class ActivityPub
{ {
$url = (strpos($id, '#') ? substr($id, 0, strpos($id, '#')) : $id); $url = (strpos($id, '#') ? substr($id, 0, strpos($id, '#')) : $id);
$profile = self::fetchProfile($url); $profile = Probe::uri($url, Protocol::ACTIVITYPUB);
if (!empty($profile)) { if (!empty($profile)) {
return $profile['pubkey']; return $profile['pubkey'];
} elseif ($url != $actor) { } elseif ($url != $actor) {
$profile = self::fetchProfile($actor); $profile = Probe::uri($actor, Protocol::ACTIVITYPUB);
if (!empty($profile)) { if (!empty($profile)) {
return $profile['pubkey']; return $profile['pubkey'];
} }
@ -395,19 +396,21 @@ class ActivityPub
$profile['name'] = defaults($data, 'name', $profile['nick']); $profile['name'] = defaults($data, 'name', $profile['nick']);
$profile['guid'] = defaults($data, 'uuid', null); $profile['guid'] = defaults($data, 'uuid', null);
$profile['url'] = $data['id']; $profile['url'] = $data['id'];
$profile['alias'] = self::processElement($data, 'url', 'href');
$parts = parse_url($profile['url']); $parts = parse_url($profile['url']);
unset($parts['scheme']); unset($parts['scheme']);
unset($parts['path']); unset($parts['path']);
$profile['addr'] = $profile['nick'] . '@' . str_replace('//', '', Network::unparseURL($parts)); $profile['addr'] = $profile['nick'] . '@' . str_replace('//', '', Network::unparseURL($parts));
$profile['alias'] = self::processElement($data, 'url', 'href');
$profile['photo'] = self::processElement($data, 'icon', 'url'); $profile['photo'] = self::processElement($data, 'icon', 'url');
// $profile['community']
// $profile['keywords']
// $profile['location']
$profile['about'] = defaults($data, 'summary', ''); $profile['about'] = defaults($data, 'summary', '');
$profile['batch'] = self::processElement($data, 'endpoints', 'sharedInbox'); $profile['batch'] = self::processElement($data, 'endpoints', 'sharedInbox');
$profile['pubkey'] = self::processElement($data, 'publicKey', 'publicKeyPem');
$profile['notify'] = $data['inbox']; $profile['notify'] = $data['inbox'];
$profile['poll'] = $data['outbox']; $profile['poll'] = $data['outbox'];
$profile['pubkey'] = self::processElement($data, 'publicKey', 'publicKeyPem');
// Check if the address is resolvable // Check if the address is resolvable
if (self::addrToUrl($profile['addr']) == $profile['url']) { if (self::addrToUrl($profile['addr']) == $profile['url']) {