Avoid possible problems with numeric nicknames and GNU Social

This commit is contained in:
Michael 2017-04-09 04:29:02 +00:00
parent 1a05efb026
commit 5c75fe4c14
3 changed files with 35 additions and 21 deletions

View File

@ -364,9 +364,9 @@ class Probe {
return self::mail($uri, $uid); return self::mail($uri, $uid);
} }
if ($network == NETWORK_MAIL) if ($network == NETWORK_MAIL) {
return self::mail($uri, $uid); return self::mail($uri, $uid);
}
// Remove "acct:" from the URI // Remove "acct:" from the URI
$uri = str_replace('acct:', '', $uri); $uri = str_replace('acct:', '', $uri);
@ -391,37 +391,37 @@ class Probe {
/// @todo Do we need the prefix "acct:" or "acct://"? /// @todo Do we need the prefix "acct:" or "acct://"?
foreach ($lrdd AS $key => $link) { foreach ($lrdd AS $key => $link) {
if ($webfinger) if ($webfinger) {
continue; continue;
}
if (!in_array($key, array("lrdd", "lrdd-xml", "lrdd-json"))) {
continue;
}
// At first try it with the given uri
$path = str_replace('{uri}', urlencode($uri), $link);
$webfinger = self::webfinger($path);
if (!in_array($key, array("lrdd", "lrdd-xml", "lrdd-json"))) // We cannot be sure that the detected address was correct, so we don't use the values
continue; if ($webfinger AND ($uri != $addr)) {
$nick = "";
$addr = "";
}
// Try webfinger with the address (user@domain.tld) // Try webfinger with the address (user@domain.tld)
$path = str_replace('{uri}', urlencode($addr), $link); if (!$webfinger) {
$webfinger = self::webfinger($path); $path = str_replace('{uri}', urlencode($addr), $link);
$webfinger = self::webfinger($path);
}
// Mastodon needs to have it with "acct:" // Mastodon needs to have it with "acct:"
if (!$webfinger) { if (!$webfinger) {
$path = str_replace('{uri}', urlencode("acct:".$addr), $link); $path = str_replace('{uri}', urlencode("acct:".$addr), $link);
$webfinger = self::webfinger($path); $webfinger = self::webfinger($path);
} }
// If webfinger wasn't successful then try it with the URL - possibly in the format https://...
if (!$webfinger AND ($uri != $addr)) {
$path = str_replace('{uri}', urlencode($uri), $link);
$webfinger = self::webfinger($path);
// Since the detection with the address wasn't successful, we delete it.
if ($webfinger) {
$nick = "";
$addr = "";
}
}
} }
if (!$webfinger) if (!$webfinger) {
return self::feed($uri); return self::feed($uri);
}
$result = false; $result = false;

View File

@ -4,6 +4,13 @@ require_once('include/Scrape.php');
function probe_content(App $a) { function probe_content(App $a) {
if (!local_user()) {
http_status_exit(403,
array("title" => t("Public access denied."),
"description" => t("Only logged in users are permitted to perform a probing.")));
killme();
}
$o .= '<h3>Probe Diagnostic</h3>'; $o .= '<h3>Probe Diagnostic</h3>';
$o .= '<form action="probe" method="get">'; $o .= '<form action="probe" method="get">';

View File

@ -3,6 +3,13 @@ require_once("include/Probe.php");
function webfinger_content(App $a) { function webfinger_content(App $a) {
if (!local_user()) {
http_status_exit(403,
array("title" => t("Public access denied."),
"description" => t("Only logged in users are permitted to perform a probing.")));
killme();
}
$o .= '<h3>Webfinger Diagnostic</h3>'; $o .= '<h3>Webfinger Diagnostic</h3>';
$o .= '<form action="webfinger" method="get">'; $o .= '<form action="webfinger" method="get">';