!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache/2.4.68 (Linux) PHP/7.4.33. PHP/7.4.33 

uname -a: Linux bjb2293782.nichost.ru 6.6.151-1.el8.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Aug 10
11:16:02 MSK 2026 x86_64
 

uid=12584(bjb2293782) gid=12584(bjb2293782) groups=12584(bjb2293782)  

Safe-mode: OFF (not secure)

/usr/share/php/Composer/Command/   drwxr-xr-x
Free 59.54 GB of 99.95 GB (59.57%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     HomeCommand.php (5.41 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?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\Command;

use 
Composer\Package\CompletePackageInterface;
use 
Composer\Repository\RepositoryInterface;
use 
Composer\Repository\RootPackageRepository;
use 
Composer\Repository\RepositoryFactory;
use 
Composer\Util\Platform;
use 
Composer\Util\ProcessExecutor;
use 
Composer\Console\Input\InputArgument;
use 
Composer\Console\Input\InputOption;
use 
Symfony\Component\Console\Input\InputInterface;
use 
Symfony\Component\Console\Output\OutputInterface;

/**
 * @author Robert Schönthal <seroscho@googlemail.com>
 */
class HomeCommand extends BaseCommand
{
    use 
CompletionTrait;

    
/**
     * @inheritDoc
     */
    
protected function configure(): void
    
{
        
$this
            
->setName('browse')
            ->
setAliases(['home'])
            ->
setDescription('Opens the package\'s repository URL or homepage in your browser')
            ->
setDefinition([
                new 
InputArgument('packages'InputArgument::IS_ARRAY'Package(s) to browse to.'null$this->suggestInstalledPackage()),
                new 
InputOption('homepage''H'InputOption::VALUE_NONE'Open the homepage instead of the repository URL.'),
                new 
InputOption('show''s'InputOption::VALUE_NONE'Only show the homepage or repository URL.'),
            ])
            ->
setHelp(
                <<<EOT
The home command opens or shows a package's repository URL or
homepage in your default browser.

To open the homepage by default, use -H or --homepage.
To show instead of open the repository or homepage URL, use -s or --show.

Read more at https://getcomposer.org/doc/03-cli.md#browse-home
EOT
            );
    }

    protected function 
execute(InputInterface $inputOutputInterface $output): int
    
{
        
$repos $this->initializeRepos();
        
$io $this->getIO();
        
$return 0;

        
$packages $input->getArgument('packages');
        if (
count($packages) === 0) {
            
$io->writeError('No package specified, opening homepage for the root package');
            
$packages = [$this->requireComposer()->getPackage()->getName()];
        }

        foreach (
$packages as $packageName) {
            
$handled false;
            
$packageExists false;
            foreach (
$repos as $repo) {
                foreach (
$repo->findPackages($packageName) as $package) {
                    
$packageExists true;
                    if (
$package instanceof CompletePackageInterface && $this->handlePackage($package$input->getOption('homepage'), $input->getOption('show'))) {
                        
$handled true;
                        break 
2;
                    }
                }
            }

            if (!
$packageExists) {
                
$return 1;
                
$io->writeError('<warning>Package '.$packageName.' not found</warning>');
            }

            if (!
$handled) {
                
$return 1;
                
$io->writeError('<warning>'.($input->getOption('homepage') ? 'Invalid or missing homepage' 'Invalid or missing repository URL').' for '.$packageName.'</warning>');
            }
        }

        return 
$return;
    }

    private function 
handlePackage(CompletePackageInterface $packagebool $showHomepagebool $showOnly): bool
    
{
        
$support $package->getSupport();
        
$url $support['source'] ?? $package->getSourceUrl();
        if (!
$url || $showHomepage) {
            
$url $package->getHomepage();
        }

        if (!
$url || !filter_var($urlFILTER_VALIDATE_URL)) {
            return 
false;
        }

        if (
$showOnly) {
            
$this->getIO()->write(sprintf('<info>%s</info>'$url));
        } else {
            
$this->openBrowser($url);
        }

        return 
true;
    }

    
/**
     * opens a url in your system default browser
     */
    
private function openBrowser(string $url): void
    
{
        
$url ProcessExecutor::escape($url);

        
$process = new ProcessExecutor($this->getIO());
        if (
Platform::isWindows()) {
            
$process->execute('start "web" explorer ' $url$output);

            return;
        }

        
$linux $process->execute('which xdg-open'$output);
        
$osx $process->execute('which open'$output);

        if (
=== $linux) {
            
$process->execute('xdg-open ' $url$output);
        } elseif (
=== $osx) {
            
$process->execute('open ' $url$output);
        } else {
            
$this->getIO()->writeError('No suitable browser opening command found, open yourself: ' $url);
        }
    }

    
/**
     * Initializes repositories
     *
     * Returns an array of repos in order they should be checked in
     *
     * @return RepositoryInterface[]
     */
    
private function initializeRepos(): array
    {
        
$composer $this->tryComposer();

        if (
$composer) {
            return 
array_merge(
                [new 
RootPackageRepository(clone $composer->getPackage())], // root package
                
[$composer->getRepositoryManager()->getLocalRepository()], // installed packages
                
$composer->getRepositoryManager()->getRepositories() // remotes
            
);
        }

        return 
RepositoryFactory::defaultReposWithDefaultManager($this->getIO());
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0047 ]--