From f880bdd33b44667959a04dd9e44eacbf31d42f3a Mon Sep 17 00:00:00 2001
From: Michael Vogel <icarus@dabo.de>
Date: Sun, 6 Dec 2015 18:52:19 +0100
Subject: [PATCH] Workaround for misconfigured Friendica servers

---
 include/Scrape.php | 42 ++++++++++++++++++++++++++++++++++++++++--
 mod/noscrape.php   |  1 +
 2 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/include/Scrape.php b/include/Scrape.php
index af90a0750..b7df8e04f 100644
--- a/include/Scrape.php
+++ b/include/Scrape.php
@@ -632,9 +632,7 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) {
 
 		if ($connectornetworks)
 			$check_feed = false;
-
 		if($check_feed) {
-
 			$feedret = scrape_feed(($poll) ? $poll : $url);
 
 			logger('probe_url: scrape_feed ' . (($poll)? $poll : $url) . ' returns: ' . print_r($feedret,true), LOGGER_DATA);
@@ -726,6 +724,46 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) {
 				}
 			}
 
+			// Workaround for misconfigured Friendica servers
+			if (($network == "") AND (strstr($url, "/profile/"))) {
+				$noscrape = str_replace("/profile/", "/noscrape/", $url);
+				$noscrapejson = fetch_url($noscrape);
+				if ($noscrapejson) {
+
+					$network = NETWORK_DFRN;
+
+					$poco = str_replace("/profile/", "/poco/", $url);
+
+					$noscrapedata = json_decode($noscrapejson, true);
+
+					if (isset($noscrapedata["addr"]))
+						$addr = $noscrapedata["addr"];
+
+					if (isset($noscrapedata["fn"]))
+						$vcard["fn"] = $noscrapedata["fn"];
+
+					if (isset($noscrapedata["key"]))
+						$pubkey = $noscrapedata["key"];
+
+					if (isset($noscrapedata["photo"]))
+						$vcard["photo"] = $noscrapedata["photo"];
+
+					if (isset($noscrapedata["dfrn-request"]))
+						$request = $noscrapedata["dfrn-request"];
+
+					if (isset($noscrapedata["dfrn-confirm"]))
+						$confirm = $noscrapedata["dfrn-confirm"];
+
+					if (isset($noscrapedata["dfrn-notify"]))
+						$notify = $noscrapedata["dfrn-notify"];
+
+					if (isset($noscrapedata["dfrn-poll"]))
+						$poll = $noscrapedata["dfrn-poll"];
+
+//					print_r($noscrapedata);
+				}
+			}
+
 			if((! $vcard['photo']) && strlen($email))
 				$vcard['photo'] = avatar_img($email);
 			if($poll === $profile)
diff --git a/mod/noscrape.php b/mod/noscrape.php
index 34d5254fc..51bd7234c 100644
--- a/mod/noscrape.php
+++ b/mod/noscrape.php
@@ -24,6 +24,7 @@ function noscrape_init(&$a) {
 
 	$json_info = array(
 		'fn' => $a->profile['name'],
+		'addr' => $a->profile['addr'],
 		'key' => $a->profile['pubkey'],
 		'homepage' => $a->get_baseurl()."/profile/{$which}",
 		'comm' => (x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY),