aboutsummaryrefslogtreecommitdiffstats
path: root/mod
diff options
context:
space:
mode:
authorredmatrix <redmatrix@redmatrix.me>2015-11-03 20:28:56 -0800
committerredmatrix <redmatrix@redmatrix.me>2015-11-03 20:28:56 -0800
commit877b3361c8145465f81ef9435031826f72b37001 (patch)
treedf31020d005fd87c47d4478a12fbdbe0c9ed0b0f /mod
parent2fbfc2a8f176ef6ca9389f04b67e5734596ed0da (diff)
downloadvolse-hubzilla-877b3361c8145465f81ef9435031826f72b37001.tar.gz
volse-hubzilla-877b3361c8145465f81ef9435031826f72b37001.tar.bz2
volse-hubzilla-877b3361c8145465f81ef9435031826f72b37001.zip
better re-install detection/protection. This necessitated a slight protocol change but should not introduce any compatibility issues with older software. Things just work better if you use an up-to-date server.
Diffstat (limited to 'mod')
-rw-r--r--mod/post.php54
1 files changed, 33 insertions, 21 deletions
diff --git a/mod/post.php b/mod/post.php
index e03e1321b..2a5e819a2 100644
--- a/mod/post.php
+++ b/mod/post.php
@@ -682,45 +682,57 @@ function post_post(&$a) {
foreach($hubs as $hub) {
+ $sitekey = $hub['hubloc_sitekey'];
+
+ if(array_key_exists('sitekey',$sender) && $sender['sitekey']) {
+
+ /*
+ * This hub has now been proven to be valid.
+ * Any hub with the same URL and a different sitekey cannot be valid.
+ * Get rid of them (mark them deleted). There's a good chance they were re-installs.
+ */
+
+ q("update hubloc set hubloc_deleted = 1, hubloc_error = 1 where hubloc_url = '%s' and hubloc_sitekey != '%s' ",
+ dbesc($hub['hubloc_url']),
+ dbesc($sender['sitekey'])
+ );
+
+ $sitekey = $sender['sitekey'];
+ }
+
+ // $sender['sitekey'] is a new addition to the protcol to distinguish
+ // hublocs coming from re-installed sites. Older sites will not provide
+ // this field and we have to still mark them valid, since we can't tell
+ // if this hubloc has the same sitekey as the packet we received.
+
// Update our DB to show when we last communicated successfully with this hub
// This will allow us to prune dead hubs from using up resources
- $r = q("update hubloc set hubloc_connected = '%s' where hubloc_id = %d",
+ $r = q("update hubloc set hubloc_connected = '%s' where hubloc_id = %d and hubloc_sitekey = '%s' ",
dbesc(datetime_convert()),
- intval($hub['hubloc_id'])
+ intval($hub['hubloc_id']),
+ dbesc($sitekey)
);
// a dead hub came back to life - reset any tombstones we might have
if(intval($hub['hubloc_error'])) {
- q("update hubloc set hubloc_error = 0 where hubloc_id = %d",
- intval($hub['hubloc_id'])
+ q("update hubloc set hubloc_error = 0 where hubloc_id = %d and hubloc_sitekey = '%s' ",
+ intval($hub['hubloc_id']),
+ dbesc($sitekey)
);
if(intval($r[0]['hubloc_orphancheck'])) {
- q("update hubloc set hubloc_orhpancheck = 0 where hubloc_id = %d",
- intval($hub['hubloc_id'])
+ q("update hubloc set hubloc_orhpancheck = 0 where hubloc_id = %d and hubloc_sitekey = '%s' ",
+ intval($hub['hubloc_id']),
+ dbesc($sitekey)
);
}
q("update xchan set xchan_orphan = 0 where xchan_orphan = 1 and xchan_hash = '%s'",
dbesc($hub['hubloc_hash'])
);
}
-
-
- /*
- * This hub has now been proven to be valid.
- * Any hub with the same URL and a different sitekey cannot be valid.
- * Get rid of them (mark them deleted). There's a good chance they were re-installs.
- */
-
-
-// q("update hubloc set hubloc_deleted = 1 where hubloc_url = '%s' and hubloc_sitekey != '%s' ",
-// dbesc($hub['hubloc_url']),
-// dbesc($hub['hubloc_sitekey'])
-// );
-
+
$connecting_url = $hub['hubloc_url'];
-
}
/** @TODO check which hub is primary and take action if mismatched */