From 0272ab4cd9a6428396489d88c7a1a89be76e5810 Mon Sep 17 00:00:00 2001
From: friendica <info@friendica.com>
Date: Sun, 15 Dec 2013 14:36:43 -0800
Subject: Provide a fallback channel to probe for magic-auth when we have no
 prior communications with a site. This will be a system channel if one
 exists, otherwise any channel will do. We'll try to use the first valid
 channel on the site because that was probably created when the site was
 installed and is the closest thing to a system channel we've got.

---
 mod/magic.php | 37 ++++++++++++++++++++++---------------
 1 file changed, 22 insertions(+), 15 deletions(-)

(limited to 'mod/magic.php')

diff --git a/mod/magic.php b/mod/magic.php
index 03d09e70d..aead559a7 100644
--- a/mod/magic.php
+++ b/mod/magic.php
@@ -33,21 +33,28 @@ function magic_init(&$a) {
 	
 	if(! $x) {
 
-		// Somebody new? Finger them if they've never been seen here before
-
-		if($addr) {
-			$ret = zot_finger($addr,null);
-			if($ret['success']) {
-				$j = json_decode($ret['body'],true);
-				if($j)
-					import_xchan($j);
-
-				// Now try again
-
-				$x = q("select * from hubloc where hubloc_url = '%s' order by hubloc_connected desc limit 1",
-					dbesc($basepath)
-				);
-			}
+		/*
+		 * We have no records for, or prior communications with this hub. 
+		 * If an address was supplied, let's finger them to create a hub record. 
+		 * Otherwise we'll use the special address '[system]' which will return
+		 * either a system channel or the first available normal channel. We don't
+		 * really care about what channel is returned - we need the hub information 
+		 * from that response so that we can create signed auth packets destined 
+		 * for that hub.
+		 *
+		 */
+
+		$ret = zot_finger((($addr) ? $addr : '[system]@' . $parsed['host']),null);
+		if($ret['success']) {
+			$j = json_decode($ret['body'],true);
+			if($j)
+				import_xchan($j);
+
+			// Now try again
+
+			$x = q("select * from hubloc where hubloc_url = '%s' order by hubloc_connected desc limit 1",
+				dbesc($basepath)
+			);
 		}
 	}
 
-- 
cgit v1.2.3