Don't try to follow remote item from non-URI or scheme-less URI

- Address https://github.com/friendica/friendica/issues/12486#issuecomment-1407679388
- Address https://github.com/friendica/friendica/issues/12486#issuecomment-1433112562
This commit is contained in:
Hypolite Petovan 2023-03-26 18:46:16 -04:00
parent 1a21f19f42
commit 8ab5fddafd
1 changed files with 20 additions and 10 deletions

View File

@ -40,6 +40,7 @@ use Friendica\Network\HTTPException\ForbiddenException;
use Friendica\Network\Probe;
use Friendica\Util\Profiler;
use Friendica\Util\Strings;
use GuzzleHttp\Psr7\Uri;
use Psr\Log\LoggerInterface;
class Follow extends BaseModule
@ -223,17 +224,26 @@ class Follow extends BaseModule
protected function followRemoteItem(string $url)
{
$itemId = Item::fetchByLink($url, $this->session->getLocalUserId());
if (!$itemId) {
// If the user-specific search failed, we search and probe a public post
$itemId = Item::fetchByLink($url);
}
if (!empty($itemId)) {
$item = Post::selectFirst(['guid'], ['id' => $itemId]);
if (!empty($item['guid'])) {
$this->baseUrl->redirect('display/' . $item['guid']);
try {
$uri = new Uri($url);
if (!$uri->getScheme()) {
return;
}
$itemId = Item::fetchByLink($url, $this->session->getLocalUserId());
if (!$itemId) {
// If the user-specific search failed, we search and probe a public post
$itemId = Item::fetchByLink($url);
}
if (!empty($itemId)) {
$item = Post::selectFirst(['guid'], ['id' => $itemId]);
if (!empty($item['guid'])) {
$this->baseUrl->redirect('display/' . $item['guid']);
}
}
} catch (\InvalidArgumentException $e) {
return;
}
}
}