// 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"; } catch (ProtocolError $pe) { echo $pe->getMessage(); } echo "\n\n"; $descriptor = $tc->getInfoDirectoryStatus('milesprower'); print_r($descriptor); $temp = $tc->getInfoMicroDescriptor($descriptor->nickname); try { $descriptor->country = $tc->getInfoIpToCountry($descriptor->ip_address); } catch (ProtocolError $pe) { echo "Failed to get country: " . $pe->getMessage() . "\n"; } $descriptor->combine($temp);
<?php /** * Simple example showing how to send a signal to Tor to change your IP address */ require_once 'common.php'; use Dapphp\TorUtils\ControlClient; $tc = new ControlClient(); try { $tc->connect('127.0.0.1', 9051); // connect to controller at 127.0.0.1:9051 $tc->authenticate('password'); // authenticate using hashedcontrolpassword "password" $tc->signal(ControlClient::SIGNAL_NEWNYM); // send signal to change IP echo "Signal sent - IP changed successfully!\n"; } catch (\Exception $ex) { echo "Signal failed: " . $ex->getMessage() . "\n"; }