aboutsummaryrefslogtreecommitdiffstats
path: root/mod/magic.php
diff options
context:
space:
mode:
authorfriendica <info@friendica.com>2013-12-15 14:36:43 -0800
committerfriendica <info@friendica.com>2013-12-15 14:36:43 -0800
commit0272ab4cd9a6428396489d88c7a1a89be76e5810 (patch)
tree78ae24629cb4fd9b52442fdad2f307107460b048 /mod/magic.php
parent950bd72e020daf887ac487c95d6f4f2e42b1dee9 (diff)
downloadvolse-hubzilla-0272ab4cd9a6428396489d88c7a1a89be76e5810.tar.gz
volse-hubzilla-0272ab4cd9a6428396489d88c7a1a89be76e5810.tar.bz2
volse-hubzilla-0272ab4cd9a6428396489d88c7a1a89be76e5810.zip
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.
Diffstat (limited to 'mod/magic.php')
-rw-r--r--mod/magic.php37
1 files changed, 22 insertions, 15 deletions
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)
+ );
}
}