Path: blob/master/src/applications/console/plugin/DarkConsoleRequestPlugin.php
13402 views
<?php12final class DarkConsoleRequestPlugin extends DarkConsolePlugin {34public function getName() {5return pht('Request');6}78public function getDescription() {9return pht(10'Information about %s and %s.',11'$_REQUEST',12'$_SERVER');13}1415public function generateData() {16$addr = idx($_SERVER, 'SERVER_ADDR');17if ($addr) {18$hostname = @gethostbyaddr($addr);19} else {20$hostname = null;21}2223$controller = $this->getRequest()->getController();24if ($controller) {25$controller_class = get_class($controller);26} else {27$controller_class = null;28}2930$site = $this->getRequest()->getSite();31if ($site) {32$site_class = get_class($site);33} else {34$site_class = null;35}3637return array(38'request' => $_REQUEST,39'server' => $_SERVER,40'special' => array(41'site' => $site_class,42'controller' => $controller_class,43'machine' => php_uname('n'),44'host' => $addr,45'hostname' => $hostname,46),47);48}4950public function renderPanel() {51$data = $this->getData();5253$special_map = array(54'site' => pht('Site'),55'controller' => pht('Controller'),56'machine' => pht('Machine'),57'host' => pht('Host'),58'hostname' => pht('Hostname'),59);6061$special = idx($data, 'special', array());6263$rows = array();64foreach ($special_map as $key => $label) {65$rows[] = array(66$label,67idx($special, $key),68);69}7071$sections = array();72$sections[] = array(73'name' => pht('Basics'),74'rows' => $rows,75);7677$mask = array(78'HTTP_COOKIE' => true,79'HTTP_X_PHABRICATOR_CSRF' => true,80);8182$maps = array(83array(84'name' => pht('Request'),85'data' => idx($data, 'request', array()),86),87array(88'name' => pht('Server'),89'data' => idx($data, 'server', array()),90),91);9293foreach ($maps as $map) {94$data = $map['data'];95$rows = array();96foreach ($data as $key => $value) {97if (isset($mask[$key])) {98$value = phutil_tag('em', array(), pht('(Masked)'));99} else if (is_array($value)) {100$value = @json_encode($value);101} else {102$value = $value;103}104105$rows[] = array(106$key,107$value,108);109}110111$sections[] = array(112'name' => $map['name'],113'rows' => $rows,114);115}116117$out = array();118foreach ($sections as $section) {119$out[] = id(new AphrontTableView($section['rows']))120->setHeaders(121array(122$section['name'],123null,124))125->setColumnClasses(126array(127'header',128'wide wrap',129));130}131return $out;132}133}134135136