Keep a unique set of WebFingerResource aliases

This commit is contained in:
Mikael Nordfeldth 2016-02-21 18:47:32 +01:00
parent afbdcf8938
commit b23cc7465f
1 changed files with 5 additions and 4 deletions

View File

@ -35,19 +35,20 @@ abstract class WebFingerResource
// Add the URI as an identity, this is _not_ necessarily an HTTP url // Add the URI as an identity, this is _not_ necessarily an HTTP url
$uri = $this->object->getUri(); $uri = $this->object->getUri();
$aliases[] = $uri; $aliases[$uri] = true;
if (common_config('webfinger', 'http_alias') if (common_config('webfinger', 'http_alias')
&& strtolower(parse_url($uri, PHP_URL_SCHEME)) === 'https') { && strtolower(parse_url($uri, PHP_URL_SCHEME)) === 'https') {
$aliases[] = preg_replace('/^https:/', 'http:', $uri, 1); $aliases[preg_replace('/^https:/', 'http:', $uri, 1)] = true;
} }
try { try {
$aliases[] = $this->object->getUrl(); $aliases[$this->object->getUrl()] = true;
} catch (InvalidUrlException $e) { } catch (InvalidUrlException $e) {
// getUrl failed because no valid URL could be returned, just ignore it // getUrl failed because no valid URL could be returned, just ignore it
} }
return $aliases; // return a unique set of aliases by extracting only the keys
return array_keys($aliases);
} }
abstract public function updateXRD(XML_XRD $xrd); abstract public function updateXRD(XML_XRD $xrd);