]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Handle normalized acct: URIs in ostatussub
authorMikael Nordfeldth <mmn@hethane.se>
Sun, 16 Apr 2017 09:01:16 +0000 (11:01 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Sun, 16 Apr 2017 09:01:16 +0000 (11:01 +0200)
Mastodon sent the proper acct: URI and not just 'user@domain' when
using the remote subscribe functionality.

plugins/OStatus/actions/ostatussub.php
plugins/OStatus/classes/Ostatus_profile.php

index 75c75c54c6e64667e51965d845f328edaf458311..a8039ae56532226705b68ea6298a985e1f193779 100644 (file)
@@ -242,9 +242,9 @@ class OStatusSubAction extends Action
     function pullRemoteProfile()
     {
         $validate = new Validate();
-        $this->profile_uri = $this->trimmed('profile');
+        $this->profile_uri = Discovery::normalize($this->trimmed('profile'));
         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);
             } else if ($validate->uri($this->profile_uri)) {
                 $this->oprofile = Ostatus_profile::ensureProfileURL($this->profile_uri);
index 2724aaedc0998e9253fbb6a6e1eefd56ad57c743..eb385e09f109fe8d9a8ce0953bc4eddb8c4c846f 100644 (file)
@@ -1574,8 +1574,10 @@ class Ostatus_profile extends Managed_DataObject
      */
     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));
 
         if ($uri !== false) {
@@ -1591,7 +1593,7 @@ class Ostatus_profile extends Managed_DataObject
         }
 
         // Try looking it up
-        $oprofile = Ostatus_profile::getKV('uri', Discovery::normalize($addr));
+        $oprofile = Ostatus_profile::getKV('uri', $addr);
 
         if ($oprofile instanceof Ostatus_profile) {
             self::cacheSet(sprintf('ostatus_profile:webfinger:%s', $addr), $oprofile->getUri());