/var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/debug_kit/src
NameSizeModeActions
Cache/-0755rm
Command/-0755rm
Controller/-0755rm
Database/-0755rm
Log/-0755rm
Mailer/-0755rm
Middleware/-0755rm
Model/-0755rm
Panel/-0755rm
View/-0755rm
DebugInclude.php53900644editdlrm
DebugMemory.php28070644editdlrm
DebugPanel.php26610644editdlrm
DebugSql.php57620644editdlrm
DebugTimer.php59130644editdlrm
Plugin.php39810644editdlrm
ToolbarService.php118320644editdlrm
Edit: /var/www/vhosts/ihelp.ro/httpdocs/vendor/cakephp/debug_kit/src/ToolbarService.php (11832B)
[ 'DebugKit.Cache' => true, 'DebugKit.Session' => true, 'DebugKit.Request' => true, 'DebugKit.SqlLog' => true, 'DebugKit.Timer' => true, 'DebugKit.Log' => true, 'DebugKit.Variables' => true, 'DebugKit.Environment' => true, 'DebugKit.Include' => true, 'DebugKit.History' => true, 'DebugKit.Routes' => true, 'DebugKit.Packages' => true, 'DebugKit.Mail' => true, 'DebugKit.Deprecations' => true, ], 'forceEnable' => false, 'safeTld' => [], 'ignorePathsPattern' => null, ]; /** * Constructor * * @param \Cake\Event\EventManager $events The event manager to use defaults to the global manager * @param array $config The configuration data for DebugKit. */ public function __construct(EventManager $events, array $config) { $this->setConfig($config); $this->registry = new PanelRegistry($events); } /** * Fetch the PanelRegistry * * @return \DebugKit\Panel\PanelRegistry */ public function registry() { return $this->registry; } /** * Check whether or not debug kit is enabled. * * @return bool */ public function isEnabled() { if (isset($GLOBALS['__PHPUNIT_BOOTSTRAP'])) { return false; } $enabled = (bool)Configure::read('debug') && !$this->isSuspiciouslyProduction() && php_sapi_name() !== 'phpdbg'; if ($enabled) { return true; } $force = $this->getConfig('forceEnable'); if (is_callable($force)) { return $force(); } return $force; } /** * Returns true if this application is being executed on a domain with a TLD * that is commonly associated with a production environment, or if the IP * address is not in a private or reserved range. * * Private IPv4 = 10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16 * Reserved IPv4 = 0.0.0.0/8, 169.254.0.0/16, 127.0.0.0/8 and 240.0.0.0/4 * * Private IPv6 = fc00::/7 * Reserved IPv6 = ::1/128, ::/128, ::ffff:0:0/96 and fe80::/10 * * @return bool */ protected function isSuspiciouslyProduction() { $host = parse_url('http://' . env('HTTP_HOST'), PHP_URL_HOST); if ($host === false) { return false; } // IPv6 addresses in URLs are enclosed in brackets. Remove them. $host = trim($host, '[]'); // Check if the host is a private or reserved IPv4/6 address. $isIp = filter_var($host, FILTER_VALIDATE_IP) !== false; if ($isIp) { $flags = FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE; return filter_var($host, FILTER_VALIDATE_IP, $flags) !== false; } // So it's not an IP address. It must be a domain name. $parts = explode('.', $host); if (count($parts) == 1) { return false; } // Check if the TLD is in the list of safe TLDs. $tld = end($parts); $safeTlds = ['localhost', 'invalid', 'test', 'example', 'local']; $safeTlds = array_merge($safeTlds, (array)$this->getConfig('safeTld')); if (in_array($tld, $safeTlds, true)) { return false; } // Don't log a warning if forceEnable is set. if (!$this->getConfig('forceEnable')) { $safeList = implode(', ', $safeTlds); Log::warning( "DebugKit is disabling itself as your host `{$host}` " . "is not in the known safe list of top-level-domains ({$safeList}). " . 'If you would like to force DebugKit on use the `DebugKit.forceEnable` Configure option.' ); } return true; } /** * Get the list of loaded panels * * @return array */ public function loadedPanels() { return $this->registry->loaded(); } /** * Get the a loaded panel * * @param string $name The name of the panel you want to get. * @return \DebugKit\DebugPanel|null The panel or null. */ public function panel($name) { return $this->registry->{$name}; } /** * Load all the panels being used * * @return void */ public function loadPanels() { foreach ($this->getConfig('panels') as $panel => $enabled) { [$panel, $enabled] = is_numeric($panel) ? [$enabled, true] : [$panel, $enabled]; if ($enabled) { $this->registry->load($panel); } } } /** * Call the initialize method onl all the loaded panels. * * @return void */ public function initializePanels() { foreach ($this->registry->loaded() as $panel) { $this->registry->{$panel}->initialize(); } } /** * Save the toolbar state. * * @param \Cake\Http\ServerRequest $request The request * @param \Psr\Http\Message\ResponseInterface $response The response * @return false|\DebugKit\Model\Entity\Request Saved request data. */ public function saveData(ServerRequest $request, ResponseInterface $response) { $path = $request->getUri()->getPath(); $dashboardUrl = '/debug-kit'; if (strpos($path, 'debug_kit') !== false || strpos($path, 'debug-kit') !== false) { if (!($path === $dashboardUrl || $path === $dashboardUrl . '/')) { // internal debug-kit request return false; } // debug-kit dashboard, save request and show toolbar } $ignorePathsPattern = $this->getConfig('ignorePathsPattern'); $statusCode = $response->getStatusCode(); if ( $ignorePathsPattern && $statusCode >= 200 && $statusCode <= 299 && preg_match($ignorePathsPattern, $path) ) { return false; } $data = [ 'url' => $request->getUri()->getPath(), 'content_type' => $response->getHeaderLine('Content-Type'), 'method' => $request->getMethod(), 'status_code' => $response->getStatusCode(), 'requested_at' => $request->getEnv('REQUEST_TIME'), 'panels' => [], ]; try { /** @var \DebugKit\Model\Table\RequestsTable $requests */ $requests = $this->getTableLocator()->get('DebugKit.Requests'); $requests->gc(); } catch (MissingDatasourceConfigException $e) { Log::warning( 'Unable to save request. Check your debug_kit datasource connection ' . 'or ensure that PDO SQLite extension is enabled.' ); Log::warning($e->getMessage()); return false; } $row = $requests->newEntity($data); $row->setNew(true); foreach ($this->registry->loaded() as $name) { $panel = $this->registry->{$name}; try { $content = serialize($panel->data()); } catch (\Exception $e) { $content = serialize([ 'error' => $e->getMessage(), ]); } $row->panels[] = $requests->Panels->newEntity([ 'panel' => $name, 'element' => $panel->elementName(), 'title' => $panel->title(), 'summary' => $panel->summary(), 'content' => $content, ]); } try { return $requests->save($row); } catch (PDOException $e) { Log::warning('Unable to save request. This is probably due to concurrent requests.'); Log::warning($e->getMessage()); } return false; } /** * Reads the modified date of a file in the webroot, and returns the integer * * @return string */ public function getToolbarUrl() { $url = 'js/inject-iframe.js'; $filePaths = [ str_replace('/', DIRECTORY_SEPARATOR, WWW_ROOT . 'debug_kit/' . $url), str_replace('/', DIRECTORY_SEPARATOR, CorePlugin::path('DebugKit') . 'webroot/' . $url), ]; $url = '/debug_kit/' . $url; foreach ($filePaths as $filePath) { if (file_exists($filePath)) { return $url . '?' . filemtime($filePath); } } return $url; } /** * Injects the JS to build the toolbar. * * The toolbar will only be injected if the response's content type * contains HTML and there is a tag. * * @param \DebugKit\Model\Entity\Request $row The request data to inject. * @param \Psr\Http\Message\ServerRequestInterface $request The request to augment. * @param \Psr\Http\Message\ResponseInterface $response The response to augment. * @return \Psr\Http\Message\ResponseInterface The modified response */ public function injectScripts($row, ServerRequestInterface $request, ResponseInterface $response) { $response = $response->withHeader('X-DEBUGKIT-ID', (string)$row->id); if (strpos($response->getHeaderLine('Content-Type'), 'html') === false) { return $response; } $body = $response->getBody(); if (!$body->isSeekable() || !$body->isWritable()) { return $response; } $body->rewind(); $contents = $body->getContents(); $pos = strrpos($contents, ''); if ($pos === false) { return $response; } $nonce = $request->getAttribute('cspScriptNonce'); if ($nonce) { $nonce = sprintf(' nonce="%s"', $nonce); } $url = Router::url('/', true); $script = sprintf( '', $row->id, $url, Router::url($this->getToolbarUrl()), $nonce ); $contents = substr($contents, 0, $pos) . $script . substr($contents, $pos); $body->rewind(); $body->write($contents); return $response->withBody($body); } }