diff options
Diffstat (limited to 'mod/post.php')
-rw-r--r-- | mod/post.php | 58 |
1 files changed, 47 insertions, 11 deletions
diff --git a/mod/post.php b/mod/post.php index fb8885b93..82ffb5817 100644 --- a/mod/post.php +++ b/mod/post.php @@ -9,16 +9,25 @@ require_once('include/zot.php'); function post_post(&$a) { - $ret = array('result' => false, 'message' => ''); + $ret = array('result' => false); - $msgtype = ((array_key_exists('type',$_REQUEST)) ? $_REQUEST['type'] : ''); + if(array_key_exists('iv',$_REQUEST)) { + // hush-hush ultra top secret mode + $data = aes_unencapsulate($_REQUEST,get_config('system','site_prvkey')); + } + else { + $data = $_REQUEST; + } - if(array_key_exists('sender',$_REQUEST)) { - $j_sender = json_decode($_REQUEST['sender']); + $msgtype = ((array_key_exists('type',$data)) ? $data['type'] : ''); + + if(array_key_exists('sender',$data)) { + $j_sender = json_decode($data['sender']); } $hub = zot_gethub($j_sender); if(! $hub) { + // (!!) this will validate the sender $result = zot_register_hub($j_sender); if((! $result['success']) || (! zot_gethub($j_sender))) { $ret['message'] = 'Hub not available.'; @@ -26,27 +35,54 @@ function post_post(&$a) { } } - // check which hub is primary and take action if mismatched + // TODO: check which hub is primary and take action if mismatched + if(array_key_exists('recipients',$data)) + $j_recipients = json_decode($data['recipients']); if($msgtype === 'refresh') { - // Need to pass the recipient in the message + // remote channel info (such as permissions or photo or something) + // has been updated. Grab a fresh copy and sync it. - // look up recipient + if($j_recipients) { - // format args - // $r = zot_refresh($them,$channel); + // This would be a permissions update, typically for one connection - return; + foreach($j_recipients as $recip) { + $r = q("select channel.*,xchan.* from channel + left join xchan on channel_hash = xchan_hash + where channel_guid = '%s' and channel_guid_sig = '%s' limit 1", + dbesc($recip->guid), + dbesc($recip->guid_sig) + ); + $x = zot_refresh(array( + 'xchan_guid' => $j_sender->guid, + 'xchan_guid_sig' => $j_sender->guid_sig, + 'hubloc_url' => $j_sender->url + ),$r[0]); + } + } + else { + + // system wide refresh + + $x = zot_refresh(array( + 'xchan_guid' => $j_sender->guid, + 'xchan_guid_sig' => $j_sender->guid_sig, + 'hubloc_url' => $j_sender->url + ),null); + } + $ret['result'] = true; + json_return_and_die($ret); } if($msgtype === 'notify') { // add to receive queue - // qreceive_add($_REQUEST); + // qreceive_add($data); $ret['result'] = true; json_return_and_die($ret); |