CasperSecurity

Current Path : /usr/share/phpmyadmin/libraries/classes/Command/
Upload File :
Current File : //usr/share/phpmyadmin/libraries/classes/Command/SetVersionCommand.php

<?php

declare(strict_types=1);

namespace PhpMyAdmin\Command;

use RangeException;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use function file_put_contents;
use function preg_match;
use function sprintf;

final class SetVersionCommand extends Command
{
    /** @var string */
    protected static $defaultName = 'set-version';

    /** @var string */
    private static $generatedClassTemplate = <<<'PHP'
<?php

declare(strict_types=1);

namespace PhpMyAdmin;

/**
 * This class is generated by scripts/console.
 *
 * @see \PhpMyAdmin\Command\SetVersionCommand
 */
final class Version
{
    // The VERSION_SUFFIX constant is defined at libraries/vendor_config.php
    public const VERSION = '%1$u.%2$u.%3$u%4$s' . VERSION_SUFFIX;
    public const SERIES = '%1$u.%2$u';
    public const MAJOR = %1$u;
    public const MINOR = %2$u;
    public const PATCH = %3$u;
    public const ID = %1$u%2$02u%3$02u;
    public const PRE_RELEASE_NAME = '%5$s';
    public const IS_DEV = %6$s;
}

PHP;

    protected function configure(): void
    {
        $this->setDescription('Sets the version number');
        $this->setHelp('This command generates the PhpMyAdmin\Version class based on the version number provided.');
        $this->addArgument('version', InputArgument::REQUIRED, 'The version number');
    }

    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        /** @var string $version */
        $version = $input->getArgument('version');

        $generatedClass = $this->getGeneratedClass($version);

        if (! $this->writeGeneratedClassFile($generatedClass)) {
            // failure
            return 1;
        }

        $output->writeln('PhpMyAdmin\Version class successfully generated!');

        // success
        return 0;
    }

    private function getGeneratedClass(string $version): string
    {
        // Do not allow any major below 5
        $return = preg_match('/^([5-9]+)\.(\d{1,2})\.(\d{1,2})(-([a-z0-9]+))?$/', $version, $matches);
        if ($return === false || $return === 0) {
            throw new RangeException('The version number is in the wrong format: ' . $version);
        }

        return sprintf(
            self::$generatedClassTemplate,
            $matches[1],
            $matches[2],
            $matches[3],
            $matches[4] ?? '',
            $matches[5] ?? '',
            ($matches[5] ?? '') === 'dev' ? 'true' : 'false'
        );
    }

    private function writeGeneratedClassFile(string $generatedClass): bool
    {
        $result = file_put_contents(
            ROOT_PATH . 'libraries/classes/Version.php',
            $generatedClass
        );

        return $result !== false;
    }
}
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY