rework a couple of zot basics
This commit is contained in:
parent
dd00fcc7bb
commit
093ab7177a
@ -59,15 +59,18 @@ function zot_verify(&$item,$identity) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
function zot_notify($channel,$url,$type = 'notify') {
|
function zot_notify($channel,$url,$type = 'notify',$recipients = null) {
|
||||||
$x = z_post_url($url, array(
|
$x = z_post_url($url, array(
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
|
'sender' => json_encode(array(
|
||||||
'guid' => $channel['channel_guid'],
|
'guid' => $channel['channel_guid'],
|
||||||
'guid_sig' => base64url_encode($guid,$channel['prvkey']),
|
'guid_sig' => base64url_encode($guid,$channel['prvkey']),
|
||||||
'hub' => z_root(),
|
'hub' => z_root(),
|
||||||
'hub_sig' => base64url_encode(z_root,$channel['prvkey']),
|
'hub_sig' => base64url_encode(z_root,$channel['prvkey'])
|
||||||
|
)),
|
||||||
|
'recipients' => json_encode($recipients),
|
||||||
'callback' => '/post',
|
'callback' => '/post',
|
||||||
'spec' => ZOT_REVISION)
|
'version' => ZOT_REVISION)
|
||||||
);
|
);
|
||||||
return($x);
|
return($x);
|
||||||
}
|
}
|
||||||
@ -100,7 +103,7 @@ function zot_finger($webbie,$channel) {
|
|||||||
$url = 'https://' . $host;
|
$url = 'https://' . $host;
|
||||||
}
|
}
|
||||||
|
|
||||||
$rhs = '/.well-known/zot-guid';
|
$rhs = '/.well-known/zot-info';
|
||||||
|
|
||||||
if($channel) {
|
if($channel) {
|
||||||
$postvars = array(
|
$postvars = array(
|
||||||
@ -146,7 +149,7 @@ function zot_refresh($them,$channel) {
|
|||||||
if(! $guid_hash)
|
if(! $guid_hash)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
$rhs = '/.well-known/zot-guid';
|
$rhs = '/.well-known/zot-info';
|
||||||
|
|
||||||
$postvars = array(
|
$postvars = array(
|
||||||
'guid_hash' => $guid_hash,
|
'guid_hash' => $guid_hash,
|
||||||
@ -206,17 +209,16 @@ function zot_refresh($them,$channel) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function zot_gethub($arr) {
|
function zot_gethub($jarr) {
|
||||||
|
if($jarr->guid && $jarr->guid_sig && $jarr->hub && $jarr->hub_sig) {
|
||||||
if((x($arr,'guid')) && (x($arr,'guid_sig')) && (x($arr,'hub')) && (x($arr,'hub_sig'))) {
|
|
||||||
$r = q("select * from hubloc
|
$r = q("select * from hubloc
|
||||||
where hubloc_guid = '%s' and hubloc_guid_sig = '%s'
|
where hubloc_guid = '%s' and hubloc_guid_sig = '%s'
|
||||||
and hubloc_url = '%s' and hubloc_url_sig = '%s'
|
and hubloc_url = '%s' and hubloc_url_sig = '%s'
|
||||||
limit 1",
|
limit 1",
|
||||||
dbesc($arr['guid']),
|
dbesc($jarr->guid),
|
||||||
dbesc($arr['guid_sig']),
|
dbesc($jarr->guid_sig),
|
||||||
dbesc($arr['hub']),
|
dbesc($jarr->hub),
|
||||||
dbesc($arr['hub_sig'])
|
dbesc($jarr->hub_sig)
|
||||||
);
|
);
|
||||||
if($r && count($r))
|
if($r && count($r))
|
||||||
return $r[0];
|
return $r[0];
|
||||||
@ -225,39 +227,23 @@ function zot_gethub($arr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function zot_register_hub($arr) {
|
function zot_register_hub($arr) {
|
||||||
$total = 0;
|
|
||||||
if((x($arr,'hub')) && (x($arr,'guid'))) {
|
$result = array('success' => false);
|
||||||
$x = z_fetch_url($arr['hub'] . '/.well-known/zot-guid/' . $arr['guid']);
|
|
||||||
|
if($arr->hub && $arr->hub_sig && $arr->guid && $arr->guid_sig) {
|
||||||
|
|
||||||
|
$guid_hash = base64url_encode(hash('whirlpool',$arr->guid . $arr->guid_sig, true));
|
||||||
|
|
||||||
|
$x = z_fetch_url($arr->hub . '/.well-known/zot-info/?f=&hash=' . $guid_hash);
|
||||||
|
|
||||||
if($x['success']) {
|
if($x['success']) {
|
||||||
$record = json_decode($x['body']);
|
$record = json_decode($x['body']);
|
||||||
if($record->hub && count($record->hub)) {
|
$c = import_xchan_from_json($record);
|
||||||
foreach($record->hub as $h) {
|
if($c['success'])
|
||||||
// store any hubs we don't know about
|
$result['success'] = true;
|
||||||
if( ! zot_gethub(
|
|
||||||
array('guid' => $arr['guid'],
|
|
||||||
'guid_sig' => $arr['guid_sig'],
|
|
||||||
'hub' => $h->url,
|
|
||||||
'hub_sig' => $h->url_sig))) {
|
|
||||||
$r = q("insert into hubloc (hubloc_guid, hubloc_guid_sig, hubloc_flags, hubloc_url,
|
|
||||||
hubloc_url_sig, hubloc_callback, hubloc_sitekey, hubloc_key)
|
|
||||||
values ( '%s', '%s', %d, '%s', '%s', '%s', '%s', '%s' )",
|
|
||||||
dbesc($arr['guid']),
|
|
||||||
dbesc($arr['guid_sig']),
|
|
||||||
intval((($h->primary) ? HUBLOC_FLAGS_PRIMARY : 0) | HUBLOC_FLAGS_UNVERIFIED ),
|
|
||||||
dbesc($h->url),
|
|
||||||
dbesc($h->url_sig),
|
|
||||||
dbesc($h->callback),
|
|
||||||
dbesc($h->sitekey),
|
|
||||||
dbesc($record->key)
|
|
||||||
);
|
|
||||||
if($r)
|
|
||||||
$total ++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
return $result;
|
||||||
}
|
|
||||||
}
|
|
||||||
return $total;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ function _well_known_init(&$a){
|
|||||||
hostxrd_init($a);
|
hostxrd_init($a);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'zot-guid':
|
case 'zot-info':
|
||||||
$a->argc -= 1;
|
$a->argc -= 1;
|
||||||
array_shift($a->argv);
|
array_shift($a->argv);
|
||||||
$a->argv[0] = 'zfinger';
|
$a->argv[0] = 'zfinger';
|
||||||
|
12
mod/post.php
12
mod/post.php
@ -11,12 +11,16 @@ function post_post(&$a) {
|
|||||||
|
|
||||||
$ret = array('result' => false, 'message' => '');
|
$ret = array('result' => false, 'message' => '');
|
||||||
|
|
||||||
$msgtype = ((x($_REQUEST,'type')) ? $_REQUEST['type'] : '');
|
$msgtype = ((array_key_exists('type',$_REQUEST)) ? $_REQUEST['type'] : '');
|
||||||
|
|
||||||
$hub = zot_gethub($_REQUEST);
|
if(array_key_exists('sender',$_REQUEST)) {
|
||||||
|
$j_sender = json_decode($_REQUEST['sender']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$hub = zot_gethub($j_sender);
|
||||||
if(! $hub) {
|
if(! $hub) {
|
||||||
$result = zot_register_hub($_REQUEST);
|
$result = zot_register_hub($j_sender);
|
||||||
if((! $result) || (! zot_gethub($_REQUEST))) {
|
if((! $result['success']) || (! zot_gethub($j_sender))) {
|
||||||
$ret['message'] = 'Hub not available.';
|
$ret['message'] = 'Hub not available.';
|
||||||
json_return_and_die($ret);
|
json_return_and_die($ret);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user