str_compact($msg)]); exit; } function error_exit($msg = '') { echo \Arokettu\Bencode\Bencode::encode(['failure reason' => str_compact($msg)]); exit; } function drop_fast_announce($lp_info, $lp_cached_peers = []) { global $announce_interval; if ($lp_info['update_time'] < (TIMENOW - $announce_interval + 60)) { return; // if announce interval correct } $new_ann_intrv = $lp_info['update_time'] + $announce_interval - TIMENOW; dummy_exit($new_ann_intrv, $lp_cached_peers); } function msg_die($msg) { $output = \Arokettu\Bencode\Bencode::encode([ 'interval' => (int)1800, 'failure reason' => (string)$msg, ]); die($output); } function dummy_exit($interval = 1800, $cache_dict = []) { $output = [ 'interval' => (int)$interval, 'peers' => (string)DUMMY_PEER, 'external ip' => inet_pton($_SERVER['REMOTE_ADDR']), ]; if (!empty($cache_dict)) { $output['complete'] = $cache_dict['complete']; $output['incomplete'] = $cache_dict['incomplete']; $output['downloaded'] = $cache_dict['downloaded']; } if (isset($cache_dict['peers'])) { $output['peers'] = $cache_dict['peers']; } if (isset($cache_dict['peers6'])) { $output['peers6'] = $cache_dict['peers6']; } $output = \Arokettu\Bencode\Bencode::encode($output); die($output); }