Merge pull request #9535 from annando/ap-relay

Relay code reworked to support AP delivery
This commit is contained in:
Hypolite Petovan 2020-11-15 20:27:08 -05:00 committed by GitHub
commit a69c98e32f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 285 additions and 206 deletions

View file

@ -176,6 +176,14 @@ class Contact
*/
public static function insert(array $fields, bool $on_duplicate_update = false)
{
if (!empty($fields['baseurl']) && empty($fields['gsid'])) {
$fields['gsid'] = GServer::getID($fields['baseurl'], true);
}
if (empty($fields['created'])) {
$fields['created'] = DateTimeFormat::utcNow();
}
$ret = DBA::insert('contact', $fields, $on_duplicate_update);
$contact = DBA::selectFirst('contact', ['nurl', 'uid'], ['id' => DBA::lastInsertId()]);
if (!DBA::isResult($contact)) {

View file

@ -31,7 +31,7 @@ use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Module\Register;
use Friendica\Network\CurlResult;
use Friendica\Protocol\Diaspora;
use Friendica\Protocol\Relay;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Network;
use Friendica\Util\Strings;
@ -518,7 +518,7 @@ class GServer
$data['tags'] = [];
}
$gserver = DBA::selectFirst('gserver', ['id', 'relay-subscribe', 'relay-scope'], ['nurl' => Strings::normaliseLink($server_url)]);
$gserver = DBA::selectFirst('gserver', ['id', 'url', 'network', 'relay-subscribe', 'relay-scope'], ['nurl' => Strings::normaliseLink($server_url)]);
if (!DBA::isResult($gserver)) {
return;
}
@ -567,8 +567,22 @@ class GServer
$fields['batch'] = $data['protocols']['dfrn'];
}
}
if (isset($data['protocols']['activitypub'])) {
$fields['network'] = Protocol::ACTIVITYPUB;
if (!empty($data['protocols']['activitypub']['actor'])) {
$fields['url'] = $data['protocols']['activitypub']['actor'];
}
if (!empty($data['protocols']['activitypub']['receive'])) {
$fields['batch'] = $data['protocols']['activitypub']['receive'];
}
}
}
Diaspora::setRelayContact($server_url, $fields);
Logger::info('Discovery ended', ['server' => $server_url, 'data' => $fields]);
Relay::updateContact($gserver, $fields);
}
/**