One Hat Cyber Team
Your IP :
216.73.217.126
Server IP :
185.33.55.30
Server :
Linux cl30.webspacecontrol.com 5.14.0-611.38.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 10 17:21:28 EDT 2026 x86_64
Server Software :
Apache
PHP Version :
8.1.34
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
opt
/
cxs2
/
app
/
libs
/
Discover
/
Edit File:
Crawl.php
<?php /** * Crawl * * @copyright Copyright (c) 2007 DotRoll Kft. (http://www.dotroll.com) * @author Zoltán Istvanovszki <zoltan.istvanovszki@dotroll.com> * @since 2019-06-11 * @package CXS_2.0 */ namespace Discover; class Crawl extends CommonComponent { /** * cPanel user * * @var string */ private $hash; /** * Main, addon and sub domain directories * * @var array */ private $directories = []; /** * Used brace from depth checking * * @var string */ private $brace; /** * CMS libraries * * @var array */ private $libraries = []; /** * Init Crawl */ public function onConstruct() { foreach (\array_keys($this->config->components->toArray()) as $library) { if ($library[0] == \strtoupper($library[0])) { $this->libraries[] = $library; } } // $this->libraries = ['PrestaShop']; // test // 4images // OpenCart // WebMail Lite // ownCloud // Roundcube // Magento // Piwigo // SquirrelMail // phpList // Moodle // LimeSurvey // DokuWiki } /** * Crawl CMS libraries and assign to the user domains * * @return array */ public function getCms(): array { $installations = $this->crawl(); foreach ($installations as &$installation) { foreach ($this->directories as $directory => $domains) { if (\strpos($installation['dir'], $directory) === 0) { $installation['domain'][\implode(', ', $domains)] = \substr($installation['dir'], \strlen($directory)); } } } return $installations; } /** * Crawl installations * * @return array */ public function crawl(): array { $installations = []; foreach ($this->libraries as $library) { $installations = \array_merge($installations, $this->getLibraryResult($library)); } \ksort($installations); return $installations; } /** * Get CMS libary result * * @param string $library CMS library * @return type */ private function getLibraryResult(string $library) { if (!isset($this->$library)) { $this->$library = $this->di->get($library); } return $this->$library->get($this->hash, $this->getBrace()); } /** * Get brace * * @param int|null $depth Depth * @return string */ private function getBrace(?int $depth = 5): string { if (empty($this->brace)) { $braces = []; $asterisk = []; for ($i = 0; $i < $depth; $i++) { $asterisk[] = '*'; $braces[] = \implode('/', $asterisk); } $this->brace = '{' . \implode(',', $braces) . '}'; } return $this->brace; } /** * Set credentials * * @param string $hash cPanel username * @param array $directories cPanel directories * @return \Discover\Crawl */ public function setCredentials(string $hash, array $directories): Crawl { return $this->setHash($hash)->setDirectories($directories); } /** * Set username * * @param string $hash cPanel username * @return \Discover\Crawl */ public function setHash(string $hash): Crawl { $this->hash = $hash; return $this; } /** * Set directories * * @param array $directories cPanel directories * @return \Discover\Crawl */ public function setDirectories(array $directories): Crawl { \ksort($directories); $this->directories = $directories; return $this; } }
Simpan