From 9c2d48bcd4b8c5cb4efea1232ef3e52c1a0649c9 Mon Sep 17 00:00:00 2001 From: Mario Date: Wed, 8 Apr 2020 12:20:44 +0000 Subject: [PATCH] update 1236: we have seen situations in the wild where a zot6 xchan was present while its hubloc was missing. fix those separately if required so that we cover both situations. --- Zotlabs/Update/_1236.php | 56 +++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 18 deletions(-) diff --git a/Zotlabs/Update/_1236.php b/Zotlabs/Update/_1236.php index 6b4e7b299..e57338e16 100644 --- a/Zotlabs/Update/_1236.php +++ b/Zotlabs/Update/_1236.php @@ -61,29 +61,12 @@ class _1236 { xchan_store_lowlevel($rec); } - $h = q("SELECT * FROM hubloc WHERE hubloc_hash = '%s' AND hubloc_url = '%s' LIMIT 1", - dbesc($zot_xchan), - dbesc(z_root()) - ); - - if($h) { - $rec = $h[0]; - $rec['hubloc_hash'] = $zhash; - $rec['hubloc_guid_sig'] = 'sha256.' . $rec['hubloc_guid_sig']; - $rec['hubloc_network'] = 'zot6'; - $rec['hubloc_url_sig'] = 'sha256.' . $rec['hubloc_url_sig']; - $rec['hubloc_callback'] = z_root() . '/zot'; - $rec['hubloc_id_url'] = channel_url($rr); - $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),get_config('system','pubkey')); - hubloc_store_lowlevel($rec); - } - // Now try again $xchan = q("SELECT xchan_hash, xchan_guid_sig FROM xchan WHERE xchan_guid = '%s' AND xchan_network = 'zot6'", dbesc($guid) ); - if(!$xchan) { + if(! $xchan) { logger('Could not create zot6 xchan record for: ' . $zot_xchan); continue; } @@ -93,6 +76,43 @@ class _1236 { $zot6_xchan = $xchan[0]['xchan_hash']; $zot6_xchan_guid_sig = $xchan[0]['xchan_guid_sig']; + $hubloc = q("SELECT hubloc_hash FROM hubloc WHERE hubloc_guid = '%s' AND hubloc_url = '%s' AND hubloc_network = 'zot6'", + dbesc($guid), + dbesc(z_root()) + ); + + if(! $hubloc) { + // This should not actually happen. + // A local zot6 hubloc for every channel should have been + // created in update _1226. + + // In case this failed, we will try to fix it here. + logger('No local zot6 hubloc found for: ' . $rr['channel_hash']); + + $h = q("SELECT * FROM hubloc WHERE hubloc_hash = '%s' AND hubloc_url = '%s' LIMIT 1", + dbesc($zot_xchan), + dbesc(z_root()) + ); + + if($h) { + $rec = $h[0]; + $rec['hubloc_hash'] = $zot6_xchan; + $rec['hubloc_guid_sig'] = 'sha256.' . $rec['hubloc_guid_sig']; + $rec['hubloc_network'] = 'zot6'; + $rec['hubloc_url_sig'] = 'sha256.' . $rec['hubloc_url_sig']; + $rec['hubloc_callback'] = z_root() . '/zot'; + $rec['hubloc_id_url'] = channel_url($rr); + $rec['hubloc_site_id'] = Libzot::make_xchan_hash(z_root(),get_config('system','pubkey')); + + $hubloc = hubloc_store_lowlevel($rec); + } + + if(! $hubloc) { + logger('Could not create local zot6 hubloc record for: ' . $zot_xchan); + continue; + } + } + logger('Transforming channel: ' . $zot_xchan); q("UPDATE channel SET channel_hash = '%s', channel_portable_id = '%s', channel_guid_sig = '%s' WHERE channel_hash = '%s'", dbesc($zot6_xchan),