Merge pull request #13323 from annando/relay
Improvements for relays like relay.fedi.buzz
This commit is contained in:
commit
737422330a
|
@ -23,8 +23,8 @@ namespace Friendica\Console;
|
|||
|
||||
use Asika\SimpleConsole\CommandArgsException;
|
||||
use Friendica\Model\APContact;
|
||||
use Friendica\Model\Contact;
|
||||
use Friendica\Protocol\ActivityPub\Transmitter;
|
||||
use Friendica\Protocol\Relay as ProtocolRelay;
|
||||
|
||||
/**
|
||||
* tool to control the list of ActivityPub relay servers from the CLI
|
||||
|
@ -90,13 +90,9 @@ HELP;
|
|||
}
|
||||
|
||||
if ((count($this->args) == 1) && ($this->getArgument(0) == 'list')) {
|
||||
$contacts = $this->dba->select('apcontact', ['url'],
|
||||
["`type` IN (?, ?) AND `url` IN (SELECT `url` FROM `contact` WHERE `uid` = ? AND `rel` = ?)",
|
||||
'Application', 'Service', 0, Contact::FRIEND]);
|
||||
while ($contact = $this->dba->fetch($contacts)) {
|
||||
foreach (ProtocolRelay::getList(['url']) as $contact) {
|
||||
$this->out($contact['url']);
|
||||
}
|
||||
$this->dba->close($contacts);
|
||||
} elseif (count($this->args) == 0) {
|
||||
throw new CommandArgsException('too few arguments');
|
||||
} elseif (count($this->args) == 1) {
|
||||
|
|
|
@ -584,6 +584,14 @@ class APContact
|
|||
*/
|
||||
public static function isRelay(array $apcontact): bool
|
||||
{
|
||||
if (in_array($apcontact['type'], ['Person', 'Organization'])) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (($apcontact['type'] == 'Service') && empty($apcontact['outbox']) && empty($apcontact['sharedinbox']) && empty($apcontact['following']) && empty($apcontact['followers']) && empty($apcontact['statuses_count'])) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (empty($apcontact['nick']) || $apcontact['nick'] != 'relay') {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -354,7 +354,7 @@ class Relay
|
|||
public static function getList(array $fields = []): array
|
||||
{
|
||||
return DBA::selectToArray('apcontact', $fields,
|
||||
["`type` = ? AND `url` IN (SELECT `url` FROM `contact` WHERE `uid` = ? AND `rel` = ?)", 'Application', 0, Contact::FRIEND]);
|
||||
["`type` IN (?, ?) AND `url` IN (SELECT `url` FROM `contact` WHERE `uid` = ? AND `rel` = ?)", 'Application', 'Service', 0, Contact::FRIEND]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue
Block a user