forked from GNUsocial/gnu-social
Handle normalized acct: URIs in ostatussub
Mastodon sent the proper acct: URI and not just 'user@domain' when using the remote subscribe functionality.
This commit is contained in:
parent
75079320d1
commit
35b0a9e3ae
@ -242,9 +242,9 @@ class OStatusSubAction extends Action
|
|||||||
function pullRemoteProfile()
|
function pullRemoteProfile()
|
||||||
{
|
{
|
||||||
$validate = new Validate();
|
$validate = new Validate();
|
||||||
$this->profile_uri = $this->trimmed('profile');
|
$this->profile_uri = Discovery::normalize($this->trimmed('profile'));
|
||||||
try {
|
try {
|
||||||
if ($validate->email($this->profile_uri)) {
|
if (Discovery::isAcct($this->profile_uri) && $validate->email(mb_substr($this->profile_uri, 5))) {
|
||||||
$this->oprofile = Ostatus_profile::ensureWebfinger($this->profile_uri);
|
$this->oprofile = Ostatus_profile::ensureWebfinger($this->profile_uri);
|
||||||
} else if ($validate->uri($this->profile_uri)) {
|
} else if ($validate->uri($this->profile_uri)) {
|
||||||
$this->oprofile = Ostatus_profile::ensureProfileURL($this->profile_uri);
|
$this->oprofile = Ostatus_profile::ensureProfileURL($this->profile_uri);
|
||||||
|
@ -1574,8 +1574,10 @@ class Ostatus_profile extends Managed_DataObject
|
|||||||
*/
|
*/
|
||||||
public static function ensureWebfinger($addr)
|
public static function ensureWebfinger($addr)
|
||||||
{
|
{
|
||||||
// First, try the cache
|
// Normalize $addr, i.e. add 'acct:' if missing
|
||||||
|
$addr = Discovery::normalize($addr);
|
||||||
|
|
||||||
|
// Try the cache
|
||||||
$uri = self::cacheGet(sprintf('ostatus_profile:webfinger:%s', $addr));
|
$uri = self::cacheGet(sprintf('ostatus_profile:webfinger:%s', $addr));
|
||||||
|
|
||||||
if ($uri !== false) {
|
if ($uri !== false) {
|
||||||
@ -1591,7 +1593,7 @@ class Ostatus_profile extends Managed_DataObject
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Try looking it up
|
// Try looking it up
|
||||||
$oprofile = Ostatus_profile::getKV('uri', Discovery::normalize($addr));
|
$oprofile = Ostatus_profile::getKV('uri', $addr);
|
||||||
|
|
||||||
if ($oprofile instanceof Ostatus_profile) {
|
if ($oprofile instanceof Ostatus_profile) {
|
||||||
self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), $oprofile->getUri());
|
self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), $oprofile->getUri());
|
||||||
|
Loading…
Reference in New Issue
Block a user