<?php require_once 'common.php'; use Dapphp\TorUtils\DirectoryClient; $client = new DirectoryClient(); $descriptors = $client->getAllServerDescriptors(); echo sprintf("We know about %d descriptors.\n\n", sizeof($descriptors)); foreach ($descriptors as $descriptor) { echo sprintf("%-19s %s %16s:%s\n", $descriptor->nickname, $descriptor->fingerprint, $descriptor->ip_address, $descriptor->or_port); echo sprintf("Running: %s\n", $descriptor->platform); echo sprintf("Uptime: %s\n", uptimeToString($descriptor->getCurrentUptime(), false)); echo sprintf("Contact: %s\n", $descriptor->contact); echo sprintf("Bandwidth (avg / burst / observed): %d / %d / %d\n", $descriptor->bandwidth_average, $descriptor->bandwidth_burst, $descriptor->bandwidth_observed); if (sizeof($descriptor->or_address) > 0) { echo sprintf("OR Address: %68s\n", implode(', ', $descriptor->or_address)); } echo sprintf("Exit Policy:\n accept: %s\n reject: %s\n", isset($descriptor->exit_policy4['accept']) ? implode(' ', $descriptor->exit_policy4['accept']) : '', implode(' ', $descriptor->exit_policy4['reject'])); echo str_pad('', 80, '-') . "\n"; }
$fingerprint = $tc->getInfoFingerprint(); } catch (ProtocolError $pex) { $fingerprint = $pex->getMessage(); } echo sprintf("*** Controller IP Address: %s / Fingerprint: %s ***\n", $address, $fingerprint); // ask controller how many bytes Tor has transferred $read = $tc->getInfoTrafficRead(); $writ = $tc->getInfoTrafficWritten(); echo sprintf("*** Tor traffic (read / written): %s / %s ***\n", humanFilesize($read), humanFilesize($writ)); echo "\n"; try { // fetch info for this descriptor from controller $descriptor = $tc->getInfoDescriptor('drew010relay01'); // if descriptor found, query directory info to get flags $dirinfo = $tc->getInfoDirectoryStatus($descriptor->fingerprint); echo "== Descriptor Info ==\n" . "Nickname : {$descriptor->nickname}\n" . "Fingerprint : {$descriptor->fingerprint}\n" . "Running : {$descriptor->platform}\n" . "Uptime : " . uptimeToString($descriptor->getCurrentUptime(), false) . "\n" . "OR Address(es): " . $descriptor->ip_address . ':' . $descriptor->or_port; if (sizeof($descriptor->or_address) > 0) { echo ', ' . implode(', ', $descriptor->or_address); } echo "\n" . "Contact : {$descriptor->contact}\n" . "BW (observed) : " . number_format($descriptor->bandwidth_observed) . " B/s\n" . "BW (average) : " . number_format($descriptor->bandwidth_average) . " B/s\n" . "Flags : " . implode(' ', $dirinfo->flags) . "\n\n"; } catch (ProtocolError $pe) { // doesn't necessarily mean the node doesn't exist // the controller may not have updated directory info yet echo $pe->getMessage() . "\n\n"; // Unrecognized key "desc/name/drew010relay01 } try { echo "Sending heartbeat signal to controller..."; $tc->signal(ControlClient::SIGNAL_HEARTBEAT); // watch tor.log file for heartbeat message echo "OK";