X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2Ffollow.php;h=31b92aa0dc06eb6873de05af9f3a647febc5901e;hb=9815d63352857a53084627e9662400b335c02150;hp=abde4abd036f712866706c44e583990c727a2e16;hpb=14e4ab544add5372bbdea7e838dcb7b147eea4af;p=friendica.git diff --git a/mod/follow.php b/mod/follow.php index abde4abd03..31b92aa0dc 100644 --- a/mod/follow.php +++ b/mod/follow.php @@ -17,7 +17,7 @@ use Friendica\Util\Strings; function follow_post(App $a) { if (!local_user()) { - System::httpExit(403, ['title' => L10n::t('Access denied.')]); + throw new \Friendica\Network\HTTPException\ForbiddenException(L10n::t('Access denied.')); } if (isset($_REQUEST['cancel'])) { @@ -60,7 +60,18 @@ function follow_content(App $a) } $uid = local_user(); - $url = Strings::escapeTags(trim($_REQUEST['url'])); + + // Issue 4815: Silently removing a prefixing @ + $url = ltrim(Strings::escapeTags(trim($_REQUEST['url'] ?? '')), '@!'); + + // Issue 6874: Allow remote following from Peertube + if (strpos($url, 'acct:') === 0) { + $url = str_replace('acct:', '', $url); + } + + if (!$url) { + $a->internalRedirect($return_path); + } $submit = L10n::t('Submit Request'); @@ -82,32 +93,34 @@ function follow_content(App $a) $ret = Probe::uri($url); - if (($ret['network'] == Protocol::DIASPORA) && !Config::get('system', 'diaspora_enabled')) { + $protocol = Contact::getProtocol($ret['url'], $ret['network']); + + if (($protocol == Protocol::DIASPORA) && !Config::get('system', 'diaspora_enabled')) { notice(L10n::t("Diaspora support isn't enabled. Contact can't be added.")); $submit = ''; //$a->internalRedirect($_SESSION['return_path']); // NOTREACHED } - if (($ret['network'] == Protocol::OSTATUS) && Config::get('system', 'ostatus_disabled')) { + if (($protocol == Protocol::OSTATUS) && Config::get('system', 'ostatus_disabled')) { notice(L10n::t("OStatus support is disabled. Contact can't be added.")); $submit = ''; //$a->internalRedirect($_SESSION['return_path']); // NOTREACHED } - if ($ret['network'] == Protocol::PHANTOM) { + if ($protocol == Protocol::PHANTOM) { notice(L10n::t("The network type couldn't be detected. Contact can't be added.")); $submit = ''; //$a->internalRedirect($_SESSION['return_path']); // NOTREACHED } - if ($ret['network'] == Protocol::MAIL) { + if ($protocol == Protocol::MAIL) { $ret['url'] = $ret['addr']; } - if (($ret['network'] === Protocol::DFRN) && !DBA::isResult($r)) { + if (($protocol === Protocol::DFRN) && !DBA::isResult($r)) { $request = $ret['request']; $tpl = Renderer::getMarkupTemplate('dfrn_request.tpl'); } else { @@ -138,7 +151,7 @@ function follow_content(App $a) $gcontact_id = $r[0]['id']; } - if ($ret['network'] === Protocol::DIASPORA) { + if ($protocol === Protocol::DIASPORA) { $r[0]['location'] = ''; $r[0]['about'] = ''; }