From 105f3ca7479c20e118b47b3ec03f8c1b3ff8656f Mon Sep 17 00:00:00 2001 From: Michael Date: Mon, 9 Apr 2018 05:53:23 +0000 Subject: [PATCH] Relay: Avoid empty tags / Always use the "relay account" --- mod/_well_known.php | 8 ++++++-- src/Protocol/Diaspora.php | 26 +++++++++++++------------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/mod/_well_known.php b/mod/_well_known.php index 25289171f6..c5bee3fdad 100644 --- a/mod/_well_known.php +++ b/mod/_well_known.php @@ -46,8 +46,10 @@ function wk_social_relay() $server_tags = Config::get('system', 'relay_server_tags'); $tagitems = explode(",", $server_tags); + /// @todo Check if it was better to use "strtolower" on the tags foreach ($tagitems AS $tag) { - $tags[trim($tag, "# ")] = trim($tag, "# "); + $tag = trim($tag, "# "); + $tags[$tag] = $tag; } if (Config::get('system', 'relay_user_tags')) { @@ -62,7 +64,9 @@ function wk_social_relay() $taglist = []; foreach ($tags AS $tag) { - $taglist[] = $tag; + if (!empty($tag)) { + $taglist[] = $tag; + } } $relay = [ diff --git a/src/Protocol/Diaspora.php b/src/Protocol/Diaspora.php index 75e3820754..79e7c09637 100644 --- a/src/Protocol/Diaspora.php +++ b/src/Protocol/Diaspora.php @@ -123,30 +123,30 @@ class Diaspora { $batch = $server_url . '/receive/public'; - $fields = ['batch', 'id', 'name', 'network', 'nick', - 'url', 'archive', 'blocked', 'contact-type']; - // Fetch the first unarchived, unblocked account + $fields = ['batch', 'id', 'name', 'network', 'archive', 'blocked']; + + // Fetch the relay contact $condition = ['uid' => 0, 'network' => NETWORK_DIASPORA, 'batch' => $batch, - 'archive' => false, 'blocked' => false]; + 'contact-type' => ACCOUNT_TYPE_RELAY]; $contact = dba::selectFirst('contact', $fields, $condition); - // If there is nothing found, we check if there is already a relay account + // If there is nothing found, we check if there is some unmarked relay + // This code segment can be removed before the release 2018-05 if (!DBM::is_result($contact)) { $condition = ['uid' => 0, 'network' => NETWORK_DIASPORA, 'batch' => $batch, - 'contact-type' => ACCOUNT_TYPE_RELAY]; + 'name' => 'relay', 'nick' => 'relay', 'url' => $server_url]; $contact = dba::selectFirst('contact', $fields, $condition); + + if (DBM::is_result($contact)) { + // Mark the relay account as a relay account + $fields = ['contact-type' => ACCOUNT_TYPE_RELAY]; + dba::update('contact', $fields, ['id' => $contact['id']]); + } } if (DBM::is_result($contact)) { if ($contact['archive'] || $contact['blocked']) { return false; } - - // Mark relay accounts as a relay, if this hadn't been the case before - if (($contact['url'] == $server_url) && ($contact['nick'] == 'relay') && - ($contact['name'] == 'relay') && ($contact['contact-type'] != ACCOUNT_TYPE_RELAY)) { - $fields = ['contact-type' => ACCOUNT_TYPE_RELAY]; - dba::update('contact', $fields, ['id' => $contact['id']]); - } return $contact; } else { $fields = ['uid' => 0, 'created' => DateTimeFormat::utcNow(), -- 2.39.5