$base, 'site_update' => datetime_convert(), 'site_dead' => 0, 'site_type' => intval(($outq['outq_driver'] === 'post') ? SITE_TYPE_NOTZOT : SITE_TYPE_UNKNOWN), 'site_crypto' => '' ] ); } } $arr = array('outq' => $outq, 'base' => $base, 'handled' => false, 'immediate' => $immediate); call_hooks('queue_deliver',$arr); if($arr['handled']) return; // "post" queue driver - used for diaspora and friendica-over-diaspora communications. if($outq['outq_driver'] === 'post') { $result = z_post_url($outq['outq_posturl'],$outq['outq_msg']); if($result['success'] && $result['return_code'] < 300) { logger('deliver: queue post success to ' . $outq['outq_posturl'], LOGGER_DEBUG); if($base) { q("update site set site_update = '%s', site_dead = 0 where site_url = '%s' ", dbesc(datetime_convert()), dbesc($base) ); } q("update dreport set dreport_result = '%s', dreport_time = '%s' where dreport_queue = '%s'", dbesc('accepted for delivery'), dbesc(datetime_convert()), dbesc($outq['outq_hash']) ); remove_queue_item($outq['outq_hash']); // server is responding - see if anything else is going to this destination and is piled up // and try to send some more. We're relying on the fact that do_delivery() results in an // immediate delivery otherwise we could get into a queue loop. if(! $immediate) { $x = q("select outq_hash from outq where outq_posturl = '%s' and outq_delivered = 0", dbesc($outq['outq_posturl']) ); $piled_up = array(); if($x) { foreach($x as $xx) { $piled_up[] = $xx['outq_hash']; } } if($piled_up) { // call do_delivery() with the force flag do_delivery($piled_up, true); } } } else { logger('deliver: queue post returned ' . $result['return_code'] . ' from ' . $outq['outq_posturl'],LOGGER_DEBUG); update_queue_item($outq['outq_hash'],10); } return; } // normal zot delivery logger('deliver: dest: ' . $outq['outq_posturl'] . ' driver: ' . $outq['outq_driver'], LOGGER_DEBUG); if($outq['outq_driver'] === 'zot6') { if($outq['outq_posturl'] === z_root() . '/zot') { // local delivery $zot = new Receiver(new Zot6Handler(),$outq['outq_notify']); $result = $zot->run(true); logger('returned_json: ' . json_encode($result,JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES), LOGGER_DATA); logger('deliver: local zot6 delivery succeeded to ' . $outq['outq_posturl']); Libzot::process_response($outq['outq_posturl'],[ 'success' => true, 'body' => json_encode($result) ], $outq); } else { logger('remote'); $channel = null; if($outq['outq_channel']) { $channel = channelx_by_n($outq['outq_channel']); } $host_crypto = null; if($channel && $base) { $h = q("select hubloc_sitekey, site_crypto from hubloc left join site on hubloc_url = site_url where site_url = '%s' and hubloc_network = 'zot6' order by hubloc_id desc limit 1", dbesc($base) ); if($h) { $host_crypto = $h[0]; } } $msg = $outq['outq_notify']; $result = Libzot::zot($outq['outq_posturl'],$msg,$channel,$host_crypto); if($result['success']) { logger('deliver: remote zot6 delivery succeeded to ' . $outq['outq_posturl']); Libzot::process_response($outq['outq_posturl'],$result, $outq); } else { logger('deliver: remote zot6 delivery failed to ' . $outq['outq_posturl']); logger('deliver: remote zot6 delivery fail data: ' . print_r($result,true), LOGGER_DATA); update_queue_item($outq['outq_hash'],10); } } return; } else { $channel = null; if($outq['outq_msg'] && $outq['outq_channel']) { $channel = channelx_by_n($outq['outq_channel']); } $host_crypto = null; if($channel && $base) { $h = q("select hubloc_sitekey, site_crypto from hubloc left join site on hubloc_url = site_url where site_url = '%s' and hubloc_sitekey != '' order by hubloc_id desc limit 1", dbesc($base) ); if($h) { $host_crypto = $h[0]; } } $msg = $outq['outq_notify']; $result = zot_zot($outq['outq_posturl'],$msg,$channel,$host_crypto); if($result['success']) { logger('deliver: remote zot delivery succeeded to ' . $outq['outq_posturl']); zot_process_response($outq['outq_posturl'],$result, $outq); } else { logger('deliver: remote zot delivery failed to ' . $outq['outq_posturl']); logger('deliver: remote zot delivery fail data: ' . print_r($result,true), LOGGER_DATA); update_queue_item($outq['outq_hash'],10); } return; } }