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 Asika\SimpleConsole\CommandArgsException;
|
||||||
use Friendica\Model\APContact;
|
use Friendica\Model\APContact;
|
||||||
use Friendica\Model\Contact;
|
|
||||||
use Friendica\Protocol\ActivityPub\Transmitter;
|
use Friendica\Protocol\ActivityPub\Transmitter;
|
||||||
|
use Friendica\Protocol\Relay as ProtocolRelay;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* tool to control the list of ActivityPub relay servers from the CLI
|
* 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')) {
|
if ((count($this->args) == 1) && ($this->getArgument(0) == 'list')) {
|
||||||
$contacts = $this->dba->select('apcontact', ['url'],
|
foreach (ProtocolRelay::getList(['url']) as $contact) {
|
||||||
["`type` IN (?, ?) AND `url` IN (SELECT `url` FROM `contact` WHERE `uid` = ? AND `rel` = ?)",
|
|
||||||
'Application', 'Service', 0, Contact::FRIEND]);
|
|
||||||
while ($contact = $this->dba->fetch($contacts)) {
|
|
||||||
$this->out($contact['url']);
|
$this->out($contact['url']);
|
||||||
}
|
}
|
||||||
$this->dba->close($contacts);
|
|
||||||
} elseif (count($this->args) == 0) {
|
} elseif (count($this->args) == 0) {
|
||||||
throw new CommandArgsException('too few arguments');
|
throw new CommandArgsException('too few arguments');
|
||||||
} elseif (count($this->args) == 1) {
|
} elseif (count($this->args) == 1) {
|
||||||
|
|
|
@ -584,6 +584,14 @@ class APContact
|
||||||
*/
|
*/
|
||||||
public static function isRelay(array $apcontact): bool
|
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') {
|
if (empty($apcontact['nick']) || $apcontact['nick'] != 'relay') {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -354,7 +354,7 @@ class Relay
|
||||||
public static function getList(array $fields = []): array
|
public static function getList(array $fields = []): array
|
||||||
{
|
{
|
||||||
return DBA::selectToArray('apcontact', $fields,
|
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