]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Make WebFinger fancyurlfix configurable
authorMikael Nordfeldth <mmn@hethane.se>
Sun, 21 Feb 2016 19:05:32 +0000 (20:05 +0100)
committerMikael Nordfeldth <mmn@hethane.se>
Sun, 21 Feb 2016 19:05:32 +0000 (20:05 +0100)
plugins/WebFinger/WebFingerPlugin.php
plugins/WebFinger/lib/webfingerresource.php

index 5eec98ea692fc21603d0ab8fbd4558f35b6308e9..fd25482c7a232e1dc1e89179e45c21a29c701768 100644 (file)
@@ -36,10 +36,12 @@ class WebFingerPlugin extends Plugin
     const OAUTH_AUTHORIZE_REL       = 'http://apinamespace.org/oauth/authorize';
 
     public $http_alias = false;
+    public $fancyurlfix = true; // adds + interprets some extra aliases related to 'index.php/' URLs
 
     public function initialize()
     {
         common_config_set('webfinger', 'http_alias', $this->http_alias);
+        common_config_set('webfinger', 'fancyurlfix', $this->fancyurlfix);
     }
 
     public function onRouterInitialized($m)
@@ -104,25 +106,32 @@ class WebFingerPlugin extends Plugin
                 $user = User::getByUri($resource);
                 $profile = $user->getProfile();
             } catch (NoResultException $e) {
-                try {
-                    try {   // if it's a /index.php/ url
-                        // common_fake_local_fancy_url can throw an exception
-                        $alt_url = common_fake_local_fancy_url($resource);
-                    } catch (Exception $e) {    // let's try to create a fake local /index.php/ url
-                        // this too if it can't do anything about the URL
-                        $alt_url = common_fake_local_nonfancy_url($resource);
+                if (common_config('webfinger', 'fancyurlfix')) {
+                    try {
+                        try {   // if it's a /index.php/ url
+                            // common_fake_local_fancy_url can throw an exception
+                            $alt_url = common_fake_local_fancy_url($resource);
+                        } catch (Exception $e) {    // let's try to create a fake local /index.php/ url
+                            // this too if it can't do anything about the URL
+                            $alt_url = common_fake_local_nonfancy_url($resource);
+                        }
+
+                        // and this will throw a NoResultException if not found
+                        $user = User::getByUri($alt_url);
+                        $profile = $user->getProfile();
+                    } catch (Exception $e) {
+                        // apparently we didn't get any matches with that, so continue...
                     }
-
-                    // and this will throw a NoResultException if not found
-                    $user = User::getByUri($alt_url);
-                    $profile = $user->getProfile();
-                } catch (Exception $e) {
-                    // if our rewrite hack didn't work, try to get something by profile URL
-                    $profile = Profile::getKV('profileurl', $resource);
                 }
             }
         }
 
+        // if we still haven't found a match...
+        if (!$profile instanceof Profile) {
+            // if our rewrite hack didn't work, try to get something by profile URL
+            $profile = Profile::getKV('profileurl', $resource);
+        }
+
         if ($profile instanceof Profile) {
             $target = new WebFingerResource_Profile($profile);
             return false;   // We got our target, stop handler execution
index 51308c32d4a9e572449f78c67e7fd7a8f008f41c..e04d3b407f2f11f8cd6a614f76deba1cfbe9d6f5 100644 (file)
@@ -47,33 +47,33 @@ abstract class WebFingerResource
             // getUrl failed because no valid URL could be returned, just ignore it
         }
 
-        /**
-         * Here we add some hacky hotfixes for remote lookups that have been taught the
-         * (at least now) wrong URI but it's still obviously the same user. Such as:
-         * - https://site.example/user/1 even if the client requests https://site.example/index.php/user/1
-         * - https://site.example/user/1 even if the client requests https://site.example//index.php/user/1
-         * - https://site.example/index.php/user/1 even if the client requests https://site.example/user/1
-         * - https://site.example/index.php/user/1 even if the client requests https://site.example///index.php/user/1
-         */
-
-
-        foreach(array_keys($aliases) as $alias) {
-            try {
-                // get a "fancy url" version of the alias, even without index.php/
-                $alt_url = common_fake_local_fancy_url($alias);
-                // store this as well so remote sites can be sure we really are the same profile
-                $aliases[$alt_url] = true;
-            } catch (Exception $e) {
-                // Apparently we couldn't rewrite that, the $alias was as the function wanted it to be
-            }
-
-            try {
-                // get a non-"fancy url" version of the alias, i.e. add index.php/
-                $alt_url = common_fake_local_nonfancy_url($alias);
-                // store this as well so remote sites can be sure we really are the same profile
-                $aliases[$alt_url] = true;
-            } catch (Exception $e) {
-                // Apparently we couldn't rewrite that, the $alias was as the function wanted it to be
+        if (common_config('webfinger', 'fancyurlfix')) {
+            /**
+             * Here we add some hacky hotfixes for remote lookups that have been taught the
+             * (at least now) wrong URI but it's still obviously the same user. Such as:
+             * - https://site.example/user/1 even if the client requests https://site.example/index.php/user/1
+             * - https://site.example/user/1 even if the client requests https://site.example//index.php/user/1
+             * - https://site.example/index.php/user/1 even if the client requests https://site.example/user/1
+             * - https://site.example/index.php/user/1 even if the client requests https://site.example///index.php/user/1
+             */
+            foreach(array_keys($aliases) as $alias) {
+                try {
+                    // get a "fancy url" version of the alias, even without index.php/
+                    $alt_url = common_fake_local_fancy_url($alias);
+                    // store this as well so remote sites can be sure we really are the same profile
+                    $aliases[$alt_url] = true;
+                } catch (Exception $e) {
+                    // Apparently we couldn't rewrite that, the $alias was as the function wanted it to be
+                }
+    
+                try {
+                    // get a non-"fancy url" version of the alias, i.e. add index.php/
+                    $alt_url = common_fake_local_nonfancy_url($alias);
+                    // store this as well so remote sites can be sure we really are the same profile
+                    $aliases[$alt_url] = true;
+                } catch (Exception $e) {
+                    // Apparently we couldn't rewrite that, the $alias was as the function wanted it to be
+                }
             }
         }