diff options
author | mrjive <mrjive@mrjive.it> | 2015-11-11 16:51:48 +0100 |
---|---|---|
committer | mrjive <mrjive@mrjive.it> | 2015-11-11 16:51:48 +0100 |
commit | 53a796afcc0cff6f9e3f51457df4506a43db1945 (patch) | |
tree | a2366c48e0dae047b052283cc44284224369c8cd /mod/fhublocs.php | |
parent | a4c3058f845a1c38d06b2201a10700c5f878366d (diff) | |
parent | bc7c0ed844711e81c4bc642e3024849195a48421 (diff) | |
download | volse-hubzilla-53a796afcc0cff6f9e3f51457df4506a43db1945.tar.gz volse-hubzilla-53a796afcc0cff6f9e3f51457df4506a43db1945.tar.bz2 volse-hubzilla-53a796afcc0cff6f9e3f51457df4506a43db1945.zip |
Merge pull request #8 from redmatrix/master
get fresh code from HZ base
Diffstat (limited to 'mod/fhublocs.php')
-rw-r--r-- | mod/fhublocs.php | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/mod/fhublocs.php b/mod/fhublocs.php new file mode 100644 index 000000000..dce00e383 --- /dev/null +++ b/mod/fhublocs.php @@ -0,0 +1,80 @@ +<?php + +require_once('include/zot.php'); +require_once('include/crypto.php'); + +/* fix missing or damaged hublocs */ + +function fhublocs_content(&$a) { + + if(! is_site_admin()) + return; + + $o = ''; + + $r = q("select * from channel where channel_removed = 0"); + $sitekey = get_config('system','pubkey'); + + if($r) { + foreach($r as $rr) { + $found = false; + $primary_address = ''; + $x = zot_get_hublocs($rr['channel_hash']); + if($x) { + foreach($x as $xx) { + if($xx['hubloc_url'] === z_root() && $xx['hubloc_sitekey'] === $sitekey) { + $found = true; + break; + } + } + if($found) { + $o .= 'Hubloc exists for ' . $rr['channel_name'] . EOL; + continue; + } + } + $y = q("select xchan_addr from xchan where xchan_hash = '%s' limit 1", + dbesc($rr['channel_hash']) + ); + if($y) + $primary_address = $y[0]['xchan_addr']; + + $hub_address = $rr['channel']['channel_address'] . '@' . get_app()->get_hostname(); + + + $primary = (($hub_address === $primary_address) ? 1 : 0); + if(! $y) + $primary = 1; + + $m = q("delete from hubloc where hubloc_hash = '%s' and hubloc_url = '%s' ", + dbesc($rr['channel_hash']), + dbesc(z_root()) + ); + + // Create a verified hub location pointing to this site. + + $h = q("insert into hubloc ( hubloc_guid, hubloc_guid_sig, hubloc_hash, hubloc_addr, hubloc_primary, hubloc_url, hubloc_url_sig, hubloc_host, hubloc_callback, hubloc_sitekey, hubloc_network ) + values ( '%s', '%s', '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s', '%s' )", + dbesc($rr['channel_guid']), + dbesc($rr['channel_guid_sig']), + dbesc($rr['channel_hash']), + dbesc($rr['channel_address'] . '@' . get_app()->get_hostname()), + intval($primary), + dbesc(z_root()), + dbesc(base64url_encode(rsa_sign(z_root(),$rr['channel_prvkey']))), + dbesc(get_app()->get_hostname()), + dbesc(z_root() . '/post'), + dbesc($sitekey), + dbesc('zot') + ); + + if($h) + $o . 'local hubloc created for ' . $rr['channel_name'] . EOL; + else + $o .= 'DB update failed for ' . $rr['channel_name'] . EOL; + + } + + return $o; + + } +}
\ No newline at end of file |