Файл: install/inc/step.php
Строк: 313
<?php
/* DCMS S (Special)
 * Версия файла 0.0.1
 * Дата последнего редактирования 21.11.2015
 * Модифицировал densnet
 */
$step = (isset($_GET['step'])) ? htmlspecialchars($_GET['step']) : null;
switch ($step) {
    default :
        $set['title'] = 'DCMS S';
        include_once 'inc/head.php';
        ?>
        <div class='card'>
            <div class='card-header'>Предисловие</div>
            <div class='card-block'>
                <progress class="progress progress-striped progress-info" value="1" max="100">1%</progress>
                Вы устанавливаете модификацию <b>DCMS S</b>.<br />
                Модификация находится в стадии разработки. Совместно с <b>DCMS Special.</b><br />
                Если Вы нашли ошибку или уязвимость, сообщите пожалуйста в форум сайта разработки (<a href = 'http://sevfo.com'>http://sevfo.com</a>).<br />
                Так же, Вы сможете найти улучшения и дополнения на сайте разработки.<br />
                Свои пожелания и рекомендации, Вы можете оставить в <a href = 'http://sevfo.com/modules/forum/'>форуме</a>.<br />
                Спасибо, что Выбрали нас!!!
                <div class='hr'></div>
                Автор модификации: <span class="label label-success">densnet</span><br />
                Официальный сайт: <a href = 'http://sevfo.com' class="label label-success">Sevfo.com</a><br />
                Контакты: <br />
                <span style="color: green;">
                    Spaces.ru создатель - <a href = 'http://densnet.spaces.ru' class="label label-success">http://densnet.spaces.ru</a><br />
                    Spaces.ru сообщество - <a href="http://spaces.ru/soo/dcms_s" class="label label-success">http://spaces.ru/soo/dcms_s</a><br />
                    Vk.com создатель - <a href = 'https://vk.com/per___se' class="label label-success">https://vk.com/per___se</a><br />
                    Vk.com группа - <a href="https://vk.com/dcms_s" class="label label-success">https://vk.com/dcms_s</a><br />
                    Facebook.comm группа - <a href = 'https://www.facebook.com/groups/dcmss/' class="label label-success">https://www.facebook.com/groups/dcmss/</a>
                </span>
                <div class='hr'></div>
                <b>Фонд поддержки проекта</b><br />
                <span style="float: right;">
                    <form action = "?step=1" method = "post">
                        <button class = 'btn btn-success'>Далее</button>
                    </form>
                </span>
                <span class="fa fa-rub label label-warning" style="padding: 3px;"> R188896705302</span><br />
                <span class="label label-warning fa fa-usd" style="padding: 3px;"> Z403302640368</span><br />
            </div>
        </div>
        <?php
        break;
    case '1':
        $set['title'] = 'DCMS S';
        include_once 'inc/head.php';
        ?>
        <div class='card'>
            <div class='card-header'>Соглашение</div>
            <div class='card-block'>
                <progress class="progress progress-striped progress-info" value="14" max="100">14%</progress>
                1) Поскольку данная программа распространяется бесплатно, то никакие претензии в сторону автора не принимаются. Также этот пункт относится к случаям взломов, спама и т.д.<br />
                2) Все вопросы об установке и настройке движка направлять только на форум официального сайта.<br />
                3) Пользователь обязуется сохранять все упоминания об авторе, сайте и названии движка в коде и на страницах движка, за исключением изображений.<br />
                4) При упоминании о движке на сторонних форумах необходимо ссылаться на адрес сайта (<a href="http://sevfo.com">http://sevfo.com</a>).<br />
                5) Запрещается использование пользовательских функций движка, а также отдельного кода движка в целях продажи.<br />
                6) В случае нарушения одного или нескольких пунктов данного соглашения автор имеет право обратиться к хозяину сервера (хостинга) с просьбой об удалении всех файлов движка, установленных пользователем. Если данная просьба будет проигнорирована, будут использоваться другие методы (ибо их немалое количество).<br /><br />
                <span style="float: right;">
                    <form action = "?step=2" method = "post">
                        <button class = 'btn btn-success'>Далее</button>
                    </form>
                </span>
                <form method = 'POST' action = '?'>
                    <button class = 'btn btn-success'>Назад</button>
                </form>
            </div>
        </div>
        <?php
        break;
    case '2':
        $set['title'] = 'DCMS S';
        include_once 'inc/head.php';
        ?>
        <div class='card'>
            <div class='card-header'>Проверка платформы</div>
            <div class='card-block'>
                <progress class="progress progress-striped progress-info" value="20" max="100">20%</progress>
                <form method = 'post' action='?step=2'>
                    <button name = 'refresh' class = 'btn btn-success'><span class="fa fa-refresh"></span> Обновить</button>
                </form><br />
                <?php
                require_once H . 'sys/inc/testing.php';
                if (isset($err)) {
                    if (is_array($err)) {
                        foreach ($err as $key => $value) {
                            echo "<div class = 'err'>$value</div>";
                        }
                    } else {
                        echo "<div class = 'err'>$err</div>";
                    }
                }
                ?>
                <br />
                <span style="float: right;">
                    <form action = "?step=3" method = "post">
                        <?php
                        if (isset($err)) {
                            echo "<button class = 'btn btn-success'>Пропустить шаг</button>";
                        } else {
                            echo "<button class = 'btn btn-success'>Далее</button>";
                        }
                        ?>
                    </form>
                </span>
                <form method = 'POST' action = '?step=1'>
                    <button class = 'btn btn-success'>Назад</button>
                </form>
            </div>
        </div>
        <?php
        break;
    case '3':
        $set['title'] = 'DCMS S';
        require_once 'inc/head.php';
        ?>
        <div class='card'>
            <div class='card-header'>Проверка CHMOD</div>
            <div class='card-block'>
                <progress class="progress progress-striped progress-info" value="30" max="100">30%</progress>
                <?php
                if (isset($_GET['chmod_ok'])) {
                    @chmod(H . 'install/', 0777);
                    @chmod(H . 'sys/ini/', 0777);
                    @chmod(H . 'sys/classes/', 0777);
                    @chmod(H . 'sys/inc/', 0777);
                    @chmod(H . 'sys/obmen/files/', 0777);
                    @chmod(H . 'sys/obmen/screens/', 0777);
                    @chmod(H . 'sys/gallery/foto/', 0777);
                    @chmod(H . 'sys/gallery/48/', 0777);
                    @chmod(H . 'sys/gallery/128/', 0777);
                    @chmod(H . 'sys/gallery/640/', 0777);
                    @chmod(H . 'sys/wall/', 0777);
                    @chmod(H . 'sys/txt/', 0777);
                    @chmod(H . 'sys/fnc/', 0777);
                    @chmod(H . 'sys/update/', 0777);
                    @chmod(H . 'sys/tmp/', 0777);
                    msg('Права успешно получены!');
                }
                ?>
                <span style="float: right;">
                    <form action = "?step=3&chmod_ok" method = "post">
                        <button class = 'btn btn-success'>Получить права!</button>
                    </form>
                </span>
                <form method = 'POST' action = '?step=3'>
                    <button class = 'btn btn-success'>Обновить</button>
                </form>
                <br />
                <?php
                require_once H . 'sys/inc/chmod_test.php';
                if (isset($err)) {
                    if (is_array($err)) {
                        foreach ($err as $key => $value) {
                            echo "<div class='label label-danger'>$value</div>n";
                        }
                    } else {
                        echo "<div class='label label-danger'>$err</div>n";
                    }
                }
                ?>
                <br />
                <span style="float: right;">
                    <form action = "?step=4" method = "post">
                        <?php
                        if (isset($err)) {
                            echo "<button class = 'btn btn-success'>Пропустить шаг</button>";
                        } else {
                            echo "<button class = 'btn btn-success'>Далее</button>";
                        }
                        ?>
                    </form>
                </span>
                <form method = 'POST' action = '?step=2'>
                    <button class = 'btn btn-success'>Назад</button>
                </form>
            </div>
        </div>
        <?php
        break;
    case '4':
        $set['title'] = 'DCMS S';
        require_once 'inc/head.php';
        ?>
        <div class='card'>
            <div class='card-header'>Параметры MySQL</div>
            <div class='card-block'>
                <progress class="progress progress-striped progress-info" value="46" max="100">46%</progress>
                <span style="float: right;">
                    <form action = "?step=4" method = "post">
                        <button class = 'btn btn-success'>Обновить</button>
                    </form>
                </span>
                <form method = 'POST' action = '?step=3'>
                    <button class = 'btn btn-success'>Назад</button>
                </form>
            </div>
            <?php
            if (isset($_SESSION['mysql_ok']) && $_SESSION['mysql_ok'] == true) {
                header("Location: ?step=5" . SID);
            } elseif (isset($_POST['host']) && isset($_POST['user']) && isset($_POST['pass']) && isset($_POST['db'])) {
                if (!($db = @mysql_connect($_POST['host'], $_POST['user'], $_POST['pass']))) {
                    $err[] = 'Невозможно подключиться к серверу ' . $_POST['host'];
                } elseif (!@mysql_select_db($_POST['db'], $db)) {
                    $err[] = 'Проверьте название базы';
                } else {
                    $set['mysql_db_name'] = $_SESSION['db'] = $_POST['db'];
                    $set['mysql_host'] = $_SESSION['host'] = $_POST['host'];
                    $set['mysql_user'] = $_SESSION['user'] = $_POST['user'];
                    $set['mysql_pass'] = $_SESSION['pass'] = $_POST['pass'];
                    mysql_query('set charset utf8');
                    mysql_query('SET names utf8');
                    mysql_query('set character_set_client="utf8"');
                    mysql_query('set character_set_connection="utf8"');
                    mysql_query('set character_set_result="utf8"');
                    $db_tables = array();
                    $tab = mysql_query('SHOW TABLES FROM ' . $_SESSION['db']);
                    for ($i = 0; $i < @mysql_num_rows($tab); $i++) {
                        $db_tables[] = mysql_tablename($tab, $i);
                    }
                    $opdirtables = opendir(H . 'install/db_tables');
                    while ($filetables = readdir($opdirtables)) {
                        if (preg_match('#.sql$#i', $filetables)) {
                            $table_name = preg_replace('#.sql$#i', null, $filetables);
                            if (in_array($table_name, $db_tables)) {
                                if (isset($_POST['rename']) && $_POST['rename'] == 1) {
                                    mysql_query("ALTER TABLE `$table_name` RENAME `~" . $time . "_$table_name`");
                                } else {
                                    $db_not_null = true;
                                }
                            }
                        }
                    }
                    if (isset($db_not_null)) {
                        $err[] = 'В выбранной базе данных (' . $_SESSION['db'] . ') содержатся таблицы с идентичными названиями.<br /> Очистите или выберите другую базу данных.';
                    } else {
                        require_once H . 'install/inc/ver_tables.php';
                        $msg[] = "Успешно выполнено $ok_sql из $k_sql запросов";
                        $_SESSION['mysql_ok'] = true;
                    }
                }
            }
            if (isset($_SESSION['mysql_ok']) && $_SESSION['mysql_ok'] == true) {
                ?>
                <div class = 'card-block'>
                    <span class = 'label label-success'>
                        Подключение к базе данных успешно выполнено
                    </span>
                    <?php
                    if (isset($msg)) {
                        foreach ($msg as $key => $value) {
                            echo "<div class = 'label label-success'>$value</div>";
                        }
                    }
                    if (isset($err)) {
                        foreach ($err as $key => $value) {
                            echo "<div class = 'label label-danger'>$value</div>";
                        }
                    }
                    ?>
                    <form method = 'POST' action = '?step=5'>
                        <button class = 'btn btn-success'>Далее</button>
                    </form>
                </div>
                <?php
                require_once 'inc/foot.php';
                exit();
            } else {
                if (isset($err)) {
                    foreach ($err as $key => $value) {
                        echo "<div class='card-block'>";
                        echo "<div class = 'label label-danger'>$value</div>";
                        echo "</div>";
                    }
                }
                $out_mysql_host = output_text($set['mysql_host']);
                $out_mysql_user = output_text($set['mysql_user']);
                $out_mysql_pass = output_text($set['mysql_pass']);
                $out_mysql_db_name = output_text($set['mysql_db_name']);
                ?>
                <form method = 'post' class = 'card-block' action = '?step=4&<?= $passgen ?>'>
                    <div class="form-group">
                        <input value='<?= $out_mysql_host ?>' type="text" name='host' class="form-control" placeholder="Хост">
                    </div>
                    <div class="form-group">
                        <input value='<?= $out_mysql_user ?>' type="text" name='user' class="form-control" placeholder="Пользователь">
                    </div>
                    <div class="form-group">
                        <input value='<?= $out_mysql_pass ?>' type="text" name='pass' class="form-control" placeholder="Пароль">
                    </div>
                    <div class="form-group">
                        <input value='<?= $out_mysql_db_name ?>' type="text" name='db' class="form-control" placeholder="Имя базы">
                    </div>
                    <?php
                    if (isset($db_not_null)) {
                        echo "<label class='checkbox-inline'><input type='checkbox' checked='checked' name='rename' value='1' /> Переименовать существующие таблицы</label><br />";
                    }
                    ?>
                    <button class = 'btn btn-success'>Далее</button>
                </form>
                <?php
            }
            echo "</div>";
            break;
        case '5':
            $set['title'] = 'DCMS S';
            require_once 'inc/head.php';
            ?>
            <div class='card'>
                <div class='card-header'>Регистрация Администратора</div>
                <div class='card-block'>
                    <progress class="progress progress-striped progress-info" value="80" max="100">80%</progress>
                    <form method = 'post' action='?step=5'>
                        <button name = 'refresh' class = 'btn btn-success'>Обновить</button>
                    </form>
                </div>
                <?php
                include_once H . 'sys/inc/shif.php';
                if (!isset($_SESSION['shif'])) {
                    $_SESSION['shif'] = $passgen;
                }
                $set['shif'] = $_SESSION['shif'];
                $db = mysql_connect($_SESSION['host'], $_SESSION['user'], $_SESSION['pass']);
                mysql_select_db($_SESSION['db'], $db);
                mysql_query('set charset utf8');
                mysql_query('SET names utf8');
                mysql_query('set character_set_client="utf8"');
                mysql_query('set character_set_connection="utf8"');
                mysql_query('set character_set_result="utf8"');
                if (isset($_SESSION['adm_reg_ok']) && $_SESSION['adm_reg_ok'] == true) {
                    $tmp_set['title'] = strtoupper($_SERVER['HTTP_HOST']) . ' - Главная';
                    $tmp_set['mysql_host'] = $_SESSION['host'];
                    $tmp_set['mysql_user'] = $_SESSION['user'];
                    $tmp_set['mysql_pass'] = $_SESSION['pass'];
                    $tmp_set['mysql_db_name'] = $_SESSION['db'];
                    $tmp_set['shif'] = $_SESSION['shif'];
                    if (save_settings($tmp_set)) {
                        unset($_SESSION['install_step'], $_SESSION['host'], $_SESSION['user'], $_SESSION['pass'], $_SESSION['db'], $_SESSION['adm_reg_ok'], $_SESSION['mysql_ok']);
                        if ($_SERVER["SERVER_ADDR"] != '127.0.0.1') {
                            delete_dir(H . 'install/');
                        }
                        header("Location: /index.php?" . SID);
                        exit;
                    } else {
                        $msg['Невозможно сохранить настройки системы'];
                    }
                } elseif (isset($_POST['reg'])) {
                    if (!isset($_POST['nick']) || $_POST['nick'] == null) {
                        $err[] = 'Введите логин';
                    } elseif (!preg_match('#^([A-zА-я0-9-_ ])+$#ui', $_POST['nick'])) {
                        $err[] = 'В логине присутствуют запрещенные символы';
                    } else {
                        if (text::utf8_strlen($_POST['nick']) < 3) {
                            $err[] = 'Логин короче 3-х символов';
                        } elseif (text::utf8_strlen($_POST['nick']) > 16) {
                            $err[] = 'Логин длиннее 16-ти символов';
                        } elseif (mysql_result(mysql_query("SELECT COUNT(*) FROM `user` WHERE `nick` = '" . mysql_real_escape_string($_POST['nick']) . "' LIMIT 1"), 0) != 0) {
                            $err[] = 'Выбранный логин уже занят другим пользователем';
                        } else {
                            $nick = $_POST['nick'];
                        }
                    }
                    if (!isset($_POST['password']) || $_POST['password'] == null) {
                        $err[] = 'Введите пароль';
                    } else {
                        if (text::utf8_strlen($_POST['password']) < 6) {
                            $err[] = 'Пароль короче 6-ти символов';
                        } elseif (text::utf8_strlen($_POST['password']) > 16) {
                            $err[] = 'Пароль длиннее 16-ти символов';
                        } elseif (!isset($_POST['password_retry'])) {
                            $err[] = 'Введите подтверждение пароля';
                        } elseif ($_POST['password'] !== $_POST['password_retry']) {
                            $err[] = 'Пароли не совпадают';
                        } else {
                            $password = $_POST['password'];
                        }
                    }
                    if (!isset($_POST['sex']) || !is_numeric($_POST['sex']) || ($_POST['sex'] !== '0' && $_POST['sex'] !== '1')) {
                        $err[] = 'Ошибка при выборе пола';
                    } else {
                        $sex = intval($_POST['sex']);
                    }
                    if (!isset($err)) { #если нет ошибок
                        mysql_query("INSERT INTO `user` (`nick`, `pass`, `date_reg`, `date_aut`, `date_last`, `sex`, `level`, `group_access`, `money`) VALUES('$nick', '" . shif($_POST['password']) . "', $time, $time, $time, '$sex', '4', '15', '500')");
                        $user = mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `nick` = '$nick' AND `pass` = '" . shif($_POST['password']) . "' LIMIT 1"));
                        $q = mysql_query("SELECT `type` FROM `all_accesses`");
                        while ($ac = mysql_fetch_assoc($q)) {
                            mysql_query("INSERT INTO `user_acсess` (`id_user`, `type`) VALUES ('$user[id]','$ac[type]')");
                        }
                        $_SESSION['id_user'] = $user['id'];
                        $_SESSION['adm_reg_ok'] = true;
                    }
                }
                if (isset($_SESSION['adm_reg_ok']) && $_SESSION['adm_reg_ok'] == true) {
                    echo "<div class = 'label label-success'>Регистрация администратора прошла успешно</div>";
                    if (isset($msg)) {
                        foreach ($msg as $key => $value) {
                            echo "<div class = 'label label-success'>$value</div>";
                        }
                    }
                    ?>
                    <form action="?step=6" method="post" class="card-block">
                        <?php
                        if (isset($err)) {
                            echo "<button class = 'btn btn-success'>Пропустить шаг</button>";
                        } else {
                            echo "<button class = 'btn btn-success'>Завершить</button>";
                        }
                        ?>
                    </form>
                    <div class = 'card-block'>
                        * после установки обязательно удалите папку /install/
                    </div>
                    <?php
                } else {
                    if (isset($err)) {
                        foreach ($err as $key => $value) {
                            echo "<div class = 'label label-danger'>$value</div>";
                        }
                    }
                    echo "<form action = '?step=5&$passgen' class = 'card-block' method = 'post'>n";
                    echo "<label>Логин (3-16 символов)</label><br />";
                    echo '<div class="form-group">';
                    echo "<input type='text' class='form-control' name = 'nick'" . ((isset($nick)) ? " value = '" . $nick . "'" : " value = 'Admin'") . " maxlength = '16' />";
                    echo "</div>";
                    echo "<label>Пароль (6-16 символов)</label><br />";
                    echo '<div class="form-group">';
                    echo "<input class='form-control' type = 'password'" . ((isset($password)) ? " value = '" . $password . "'" : null) . " name = 'password' maxlength = '16' />";
                    echo "</div>";
                    echo "<label>Подтверждение пароля</label><br />";
                    echo "<input class='form-control' type = 'password'" . ((isset($password)) ? " value = '" . $password . "'" : null) . " name = 'password_retry' maxlength='16' /><br />";
                    echo '<div class="col-xs-6">';
                    echo '<select class="form-control" name="sex">';
                    echo "<option value='1'" . ((isset($sex) && $sex === 1) ? " selected='selected'" : null) . ">Мужской</option>";
                    echo "<option value='0'" . ((isset($sex) && $sex === 0) ? " selected='selected'" : null) . ">Женский</option>";
                    echo '</select>';
                    echo '</div><br /><br />';
                    echo "<span class='label label-info'>* использование простого пароля облегчает жизнь хакерам</span><br />";
                    echo "<span class='label label-info'>* Все поля обязательны к заполнению</span><br /><br />";
                    echo "<button class = 'btn btn-success' name='reg'>Регистрация</button>";
                    echo "</form>";
                }
                echo "</div>";
                break;
            case '6':
                if (isset($_SESSION['mysql_ok']) && $_SESSION['mysql_ok'] == true) {
                    header("Location: ?step=5" . SID);
                }
                break;
        }
        require_once 'inc/foot.php';