From 396f1e92ca11c6c5c92a3e65d9fe65da1151783d Mon Sep 17 00:00:00 2001
From: Mikael Nordfeldth <mmn@hethane.se>
Date: Sun, 15 Feb 2015 13:17:04 +0100
Subject: [PATCH] Present http:// alias by default in WebFinger output

because it might help us (and especially StatusNet sites) to recognize
profiles that have migrated from HTTP to HTTPS!
---
 plugins/WebFinger/WebFingerPlugin.php       | 7 +++++++
 plugins/WebFinger/lib/webfingerresource.php | 7 ++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/plugins/WebFinger/WebFingerPlugin.php b/plugins/WebFinger/WebFingerPlugin.php
index f7e428e54c..e1e6a1b41c 100644
--- a/plugins/WebFinger/WebFingerPlugin.php
+++ b/plugins/WebFinger/WebFingerPlugin.php
@@ -31,6 +31,13 @@ if (!defined('GNUSOCIAL')) { exit(1); }
 
 class WebFingerPlugin extends Plugin
 {
+    public $http_alias = true;
+
+    public function initialize()
+    {
+        common_config_set('webfinger', 'http_alias', $this->http_alias);
+    }
+
     public function onRouterInitialized($m)
     {
         $m->connect('.well-known/host-meta', array('action' => 'hostmeta'));
diff --git a/plugins/WebFinger/lib/webfingerresource.php b/plugins/WebFinger/lib/webfingerresource.php
index d473d95628..61b2cc09ad 100644
--- a/plugins/WebFinger/lib/webfingerresource.php
+++ b/plugins/WebFinger/lib/webfingerresource.php
@@ -34,7 +34,12 @@ abstract class WebFingerResource
         $aliases = array();
 
         // Add the URI as an identity, this is _not_ necessarily an HTTP url
-        $aliases[] = $this->object->getUri();
+        $uri = $this->object->getUri();
+        $aliases[] = $uri;
+        if (common_config('webfinger', 'http_alias')
+                && strtolower(parse_url($uri, PHP_URL_SCHEME)) === 'https') {
+            $aliases[] = preg_replace('/^https:/', 'http:', $uri, 1);
+        }
 
         try {
             $aliases[] = $this->object->getUrl();
-- 
2.39.5