need better peer verification due to re-install issue, this is temporary

This commit is contained in:
redmatrix
2015-11-03 19:50:40 -08:00
parent e09b49288f
commit 2fbfc2a8f1
3 changed files with 47 additions and 36 deletions

View File

@@ -663,16 +663,16 @@ function post_post(&$a) {
/* Check if the sender is already verified here */
$hub = zot_gethub($sender);
$hubs = zot_gethub($sender,true);
if (! $hub) {
if (! $hubs) {
/* Have never seen this guid or this guid coming from this location. Check it and register it. */
// (!!) this will validate the sender
$result = zot_register_hub($sender);
if ((! $result['success']) || (! ($hub = zot_gethub($sender)))) {
if ((! $result['success']) || (! ($hubs = zot_gethub($sender,true)))) {
$ret['message'] = 'Hub not available.';
logger('mod_zot: no hub');
json_return_and_die($ret);
@@ -680,42 +680,49 @@ function post_post(&$a) {
}
// 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
foreach($hubs as $hub) {
$r = q("update hubloc set hubloc_connected = '%s' where hubloc_id = %d",
dbesc(datetime_convert()),
intval($hub['hubloc_id'])
);
// 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
// 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'])
$r = q("update hubloc set hubloc_connected = '%s' where hubloc_id = %d",
dbesc(datetime_convert()),
intval($hub['hubloc_id'])
);
if(intval($r[0]['hubloc_orphancheck'])) {
q("update hubloc set hubloc_orhpancheck = 0 where hubloc_id = %d",
intval($hub['hubloc_id'])
// 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'])
);
if(intval($r[0]['hubloc_orphancheck'])) {
q("update hubloc set hubloc_orhpancheck = 0 where hubloc_id = %d",
intval($hub['hubloc_id'])
);
}
q("update xchan set xchan_orphan = 0 where xchan_orphan = 1 and xchan_hash = '%s'",
dbesc($hub['hubloc_hash'])
);
}
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'];
}
/*
* 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'])
);
/** @TODO check which hub is primary and take action if mismatched */
if (array_key_exists('recipients', $data))
@@ -917,7 +924,7 @@ function post_post(&$a) {
if ($msgtype === 'notify') {
logger('notify received from ' . $hub['hubloc_url']);
logger('notify received from ' . $connecting_url);
$async = get_config('system','queued_fetch');