CasperSecurity

Current Path : /usr/share/phpmyadmin/libraries/classes/Controllers/Setup/
Upload File :
Current File : //usr/share/phpmyadmin/libraries/classes/Controllers/Setup/HomeController.php

<?php

declare(strict_types=1);

namespace PhpMyAdmin\Controllers\Setup;

use PhpMyAdmin\Config\FormDisplay;
use PhpMyAdmin\Config\FormDisplayTemplate;
use PhpMyAdmin\Config\ServerConfigChecks;
use PhpMyAdmin\Core;
use PhpMyAdmin\LanguageManager;
use PhpMyAdmin\Sanitize;
use PhpMyAdmin\Setup\Index;
use function preg_replace;
use function uniqid;

class HomeController extends AbstractController
{
    /**
     * @param array $params Request parameters
     *
     * @return string HTML
     */
    public function index(array $params): string
    {
        $pages = $this->getPages();

        // Handle done action info
        $actionDone = Core::isValid($params['action_done'], 'scalar') ? $params['action_done'] : '';
        $actionDone = preg_replace('/[^a-z_]/', '', $actionDone);

        // message handling
        Index::messagesBegin();

        // Check phpMyAdmin version
        if (isset($params['version_check'])) {
            Index::versionCheck();
        }

        // Perform various security, compatibility and consistency checks
        $configChecker = new ServerConfigChecks($this->config);
        $configChecker->performConfigChecks();

        $text = __(
            'You are not using a secure connection; all data (including potentially '
            . 'sensitive information, like passwords) is transferred unencrypted!'
        );
        $text .= ' <a href="#">';
        $text .= __(
            'If your server is also configured to accept HTTPS requests '
            . 'follow this link to use a secure connection.'
        );
        $text .= '</a>';
        Index::messagesSet('notice', 'no_https', __('Insecure connection'), $text);

        // Check for done action info and set notice message if present
        switch ($actionDone) {
            case 'config_saved':
                /* Use uniqid to display this message every time configuration is saved */
                Index::messagesSet(
                    'notice',
                    uniqid('config_saved'),
                    __('Configuration saved.'),
                    Sanitize::sanitizeMessage(
                        __(
                            'Configuration saved to file config/config.inc.php in phpMyAdmin '
                            . 'top level directory, copy it to top level one and delete '
                            . 'directory config to use it.'
                        )
                    )
                );
                break;
            case 'config_not_saved':
                /* Use uniqid to display this message every time configuration is saved */
                Index::messagesSet(
                    'notice',
                    uniqid('config_not_saved'),
                    __('Configuration not saved!'),
                    Sanitize::sanitizeMessage(
                        __(
                            'Please create web server writable folder [em]config[/em] in '
                            . 'phpMyAdmin top level directory as described in '
                            . '[doc@setup_script]documentation[/doc]. Otherwise you will be '
                            . 'only able to download or display it.'
                        )
                    )
                );
                break;
            default:
                break;
        }

        Index::messagesEnd();
        $messages = Index::messagesShowHtml();

        $formDisplay = new FormDisplay($this->config);

        $defaultLanguageOptions = [
            'doc' => $formDisplay->getDocLink('DefaultLang'),
            'values' => [],
            'values_escaped' => true,
        ];

        // prepare unfiltered language list
        $sortedLanguages = LanguageManager::getInstance()->sortedLanguages();
        $languages = [];
        foreach ($sortedLanguages as $language) {
            $languages[] = [
                'code' => $language->getCode(),
                'name' => $language->getName(),
                'is_active' => $language->isActive(),
            ];
            $defaultLanguageOptions['values'][$language->getCode()] = $language->getName();
        }

        $serverDefaultOptions = [
            'doc' => $formDisplay->getDocLink('ServerDefault'),
            'values' => [],
            'values_disabled' => [],
        ];

        $servers = [];
        if ($this->config->getServerCount() > 0) {
            $serverDefaultOptions['values']['0'] = __('let the user choose');
            $serverDefaultOptions['values']['-'] = '------------------------------';
            if ($this->config->getServerCount() === 1) {
                $serverDefaultOptions['values_disabled'][] = '0';
            }
            $serverDefaultOptions['values_disabled'][] = '-';

            foreach ($this->config->getServers() as $id => $server) {
                $servers[$id] = [
                    'id' => $id,
                    'name' => $this->config->getServerName($id),
                    'auth_type' => $this->config->getValue('Servers/' . $id . '/auth_type'),
                    'dsn' => $this->config->getServerDSN($id),
                    'params' => [
                        'token' => $_SESSION[' PMA_token '],
                        'edit' => [
                            'page' => 'servers',
                            'mode' => 'edit',
                            'id' => $id,
                        ],
                        'remove' => [
                            'page' => 'servers',
                            'mode' => 'remove',
                            'id' => $id,
                        ],
                    ],
                ];
                $serverDefaultOptions['values'][(string) $id] = $this->config->getServerName($id) . ' [' . $id . ']';
            }
        } else {
            $serverDefaultOptions['values']['1'] = __('- none -');
            $serverDefaultOptions['values_escaped'] = true;
        }

        $formDisplayTemplate = new FormDisplayTemplate($GLOBALS['PMA_Config']);
        $serversFormTopHtml = $formDisplayTemplate->displayFormTop(
            'index.php',
            'get',
            [
                'page' => 'servers',
                'mode' => 'add',
            ]
        );
        $configFormTopHtml = $formDisplayTemplate->displayFormTop('config.php');
        $formBottomHtml = $formDisplayTemplate->displayFormBottom();

        $defaultLanguageInput = $formDisplayTemplate->displayInput(
            'DefaultLang',
            __('Default language'),
            'select',
            $this->config->getValue('DefaultLang'),
            '',
            true,
            $defaultLanguageOptions
        );
        $serverDefaultInput = $formDisplayTemplate->displayInput(
            'ServerDefault',
            __('Default server'),
            'select',
            $this->config->getValue('ServerDefault'),
            '',
            true,
            $serverDefaultOptions
        );

        $eolOptions = [
            'values' => [
                'unix' => 'UNIX / Linux (\n)',
                'win' => 'Windows (\r\n)',
            ],
            'values_escaped' => true,
        ];
        $eol = Core::ifSetOr($_SESSION['eol'], (PMA_IS_WINDOWS ? 'win' : 'unix'));
        $eolInput = $formDisplayTemplate->displayInput(
            'eol',
            __('End of line'),
            'select',
            $eol,
            '',
            true,
            $eolOptions
        );

        return $this->template->render('setup/home/index', [
            'formset' => $params['formset'] ?? '',
            'languages' => $languages,
            'messages' => $messages,
            'servers_form_top_html' => $serversFormTopHtml,
            'config_form_top_html' => $configFormTopHtml,
            'form_bottom_html' => $formBottomHtml,
            'server_count' => $this->config->getServerCount(),
            'servers' => $servers,
            'default_language_input' => $defaultLanguageInput,
            'server_default_input' => $serverDefaultInput,
            'eol_input' => $eolInput,
            'pages' => $pages,
        ]);
    }
}
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