Вход Регистрация
Файл: install/index.php
Строк: 393
<?php
    $start 
microtime(true);
    
$btn_clickable true;

    
define('H'$_SERVER['DOCUMENT_ROOT'] . '/');
    if (
file_exists('engine/files/data/settings.ini')){
        
// exit('Движок уже установлен');
    
}


    function 
show_error($err)
    {
        if (
is_array($err)){
            foreach (
$err as $value){
                echo 
'<div class="err">' $value '</div>';
            }
        }
        else{
            echo 
'<div class="err">' $err '</div>';
        }
    }

    function 
save_settings($set)
    {
        include_once 
'engine/classes/Ini.php';
        
$ini = new ini('engine/files/data/settings.ini');
        foreach (
$set as $key => $value){
            
$ini->write($key'"' $value '"');
        }

        return 
$ini->updateFile();
    }

    
// рекурсивное удаление папки
    
function delete_dir($dir)
    {
        if (
is_dir($dir)){
            
$od opendir($dir);
            while (
$rd readdir($od)) {
                if (
$rd == '.' || $rd == '..'){
                    continue;
                }
                if (
is_dir("$dir/$rd")){
                    @
chmod("$dir/$rd"0777);
                    
delete_dir("$dir/$rd");
                }
                else{
                    @
chmod("$dir/$rd"0777);
                    @
unlink("$dir/$rd");
                }
            }
            
closedir($od);
            @
chmod("$dir"0777);

            return @
rmdir("$dir");
        }
        else{
            @
chmod("$dir"0777);
            @
unlink("$dir");
        }
    }

    
ob_start();
    
session_start();
    
header("Content-type: text/html");
?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
    <title>Установка</title>
    <link rel="stylesheet" href="/style/themes/default/style.css" type="text/css"/>
    <link rel="icon" type="image/png" href="/favicon.ico"/>
</head>
<body>
<div class="title">
    Установка SecWind
</div>
<div class="news">
<?php

    
if (!isset($_SESSION['install_step']) || $_SESSION['install_step'] < && $_SESSION['install_step'] > 7){
        
$_SESSION['install_step'] = 0;
    }
//if (isset($_GET['step']))
    //$_SESSION['install_step']++;
    
$_SESSION['install_step'] = isset($_GET['step']) ? ($_GET['step'] > $_GET['step']) :$_SESSION['install_step'];

    switch (
$_SESSION['install_step'])
    {

    case 
0:

        
?>
        <img src="/style/sw.png" style="float:left;padding-right: 5px;"/>
        SecWind быстрый, удобный инновационный wap движок<br/>
        В отличии от других cms, SecWind позволяет вам не влезая в код, ftp, и phpmyadmin устанавливать,удалять модули
        <br/>
        А также SecWind предоставляет удобную админку, включающие такие разделы как: Безопасность, Модули,
        MySQL менеджер, с множеством утилит внутри
        <hr/>
        Автор: Tadochi <br/>
        <hr/>
        Спасибо за модули:
        <ul>
            <li>Screamer - Библиотека</li>
            <li>FlySelf - Загруз центр</li>
            <li>seg0ro - Форум</li>
            <li>FoXxs - Дневники</li>
        </ul>
        <?php
        
break;

    case 
1:
        
$last_version = @json_decode(file_get_contents('http://secwind.ru/?act=get_last_version'), true);
        
$my_version parse_ini_file('engine/files/data/for_settings.ini');

        if (empty(
$last_version) || (function_exists('json_last_error') && json_last_error())){
            echo 
'Возможно вы не используете последнюю версию<br />';
        }
        else{
            echo (
version_compare($last_version['last_version'],
                                  
$my_version['version']) == 'У вас установлена последняя версия' 'Последняя: <a href="' $last_version['link_update'] . '">' $last_version['last_version'] . ' ' $last_version['status'] . '</a>') . '<br />
                Дата выхода: ' 
date('H:i, j F'$last_version['time_release']) . '<br />
                Список изменений в версии ' 
$last_version['last_version'] . ': <br /> ' nl2br($last_version['changelog']) . '<hr />';
        }
        echo 
file_get_contents('engine/files/data/agreement.txt');
        break;

    case 
2:
        include 
'engine/includes/testing.php';
        include 
'engine/includes/chmod_test.php';

        if (isset(
$err)){
            
show_error($err);
            
$btn_clickable false;
        }
        break;

    case 
3:
        
$btn_clickable false;

        if (isset(
$_POST['host'], $_POST['user'], $_POST['pass'], $_POST['db'])){
            
$db = @mysqli_connect($_POST['host'], $_POST['user'], $_POST['pass'], $_POST['db']);
            if (!
$db){
                
$err 'Невозможно подключиться к серверу ' htmlspecialchars(mysqli_connect_error());
            }
            else{
                
$_SESSION['db'] = $_POST['db'];
                
$_SESSION['host'] = $_POST['host'];
                
$_SESSION['user'] = $_POST['user'];
                
$_SESSION['pass'] = $_POST['pass'];

                
mysqli_query($db'SET names utf8');
                
mysqli_multi_query($dbfile_get_contents('engine/files/data/table.sql'));
                echo 
'<div class="msg">Подключение к базе данных успешно выполнено</div>';
                
$btn_clickable true;
            }
        }

        if (isset(
$err)){
            
show_error($err);
        }


        
?>
        <form method="post" <?= $btn_clickable 'style="display:none"' '' ?>>
            Хост:<br/>
            <input name="host"
                   value="<?= $_SERVER['REMOTE_ADDR'] == '127.0.0.1' 'localhost' $_SERVER['SERVER_NAME'?>"
                   type="text"/><br/>
            Пользователь:<br/>
            <input name="user" value="root" type="text"/><br/>
            Пароль:<br/>
            <input name="pass" value="" type="text"/><br/>
            Имя базы:<br/>
            <input name="db" value="<?= $_SERVER['SERVER_NAME'?>" type="text"/><br/>
            <input type="submit" value="Соединить с базой"/>
        </form>
        <?php
        
break;

    case 
4:
    
$btn_clickable false;
    
$db mysqli_connect($_SESSION['host'], $_SESSION['user'], $_SESSION['pass'], $_SESSION['db']);
    
mysqli_query($db'SET names utf8');
    if (isset(
$_POST['reg']))
    {
    if (empty(
$_POST['nick'])){
        
$err[] = 'Введите ник';
    }
    elseif (!
preg_match("#^([A-zА-я0-9-_ ])+$#ui"$_POST['nick'])){
        
$err[] = 'В нике присутствуют запрещенные символы';
    }
    else{
        
$nickLen mb_strlen($_POST['nick']);
        if (
$nickLen 3){
            
$err[] = 'Ник короче 3-х символов';
        }
        elseif (
$nickLen 16){
            
$err[] = 'Ник длиннее 16-ти символов';
        }
        elseif (@
mysqli_num_rows(mysqli_query($db,
                                              
"SELECT COUNT(*) FROM `user` WHERE `nick` = '" mysqli_real_escape_string($db,
                                                                                                                         
$_POST['nick']) . "' LIMIT 1")) > 1
        
){
            
$err[] = 'Выбранный ник уже занят другим пользователем';
        }
        else{
            
$nick $_POST['nick'];
        }
    }

    if (empty(
$_POST['password'])){
        
$err[] = 'Введите пароль';
    }
    else{
        
$pass_Len mb_strlen($_POST['password']);
        if (
$pass_Len 6){
            
$err[] = 'Пароль короче 6-ти символов';
        }
        elseif (
$pass_Len 16){
            
$err[] = 'Пароль длиннее 16-ти символов';
        }
        elseif (empty(
$_POST['password_retry'])){
            
$err[] = 'Введите подтверждение пароля';
        }
        elseif (
$_POST['password'] !== $_POST['password_retry']){
            
$err[] = 'Пароли не совпадают';
        }
        else{
            
$password $_POST['password'];
        }
    }

    
$pol $_POST['pol'] == 1;

    if (!isset(
$err))
    {
    
$status mysqli_fetch_assoc(mysqli_query($db'SHOW TABLE STATUS LIKE "user"'));
    
$password md5($status['Auto_increment'] . $password);
    
mysqli_query($db"
                INSERT INTO `user`
                (`nick`, `pass`, `date_reg`, `date_aut`, `date_last`, `pol`, `group_access`, `balls`) VALUES
                ('" 
$nick "', '" $password "', '" time() . "', '" time() . "', '" time() . "', '" $pol "', '10', '82366622244044')");
    echo 
mysqli_error($db);
    
$user mysqli_fetch_assoc(mysqli_query($db"SELECT `id` FROM `user` WHERE `nick` = '$nick' LIMIT 1"));

    
$_SESSION['user_id'] = $user['id'];
    
setcookie('user_id'$user['id'], time() + 60 60 24 365'/');
    
setcookie('pass'$passwordtime() + 60 60 24 365'/');

    echo 
'<div class="msg">Регистрация администратора прошла успешно</div>';

    if (isset(
$msg)){
        echo 
'<div class="msg">' $value '</div>';
    }
?>
<h3>После установки обязательно удалите папку /install/<h3/>
    <?
        $btn_clickable 
true;
        }

        if (isset(
$err)){
            foreach (
$err as $err){
                echo 
'<div class="err">' $err '</div>';
            }
            
?>
            <form>
                <input value="Повторить" type="submit"/>
            </form>
        <?
        
}
        }
        else{
            
?>
            <form method='post'>
                Логин (3-16 символов):<br/>
                <input type='text' name='nick' value="admin" maxlength="16"/><br/>
                Пароль (6-16 символов):<br/>
                <input type='password' name='password' maxlength='16'/><br/>
                Подтверждение пароля:<br/>
                <input type='password' name='password_retry' maxlength='16'/><br/>
                Ваш пол:<br/>
                <select name='pol'>
                    <option value='1' selected='selected'>Мужской</option>
                    <option value='0'>Женский</option>
                </select><br/>
                * Все поля обязательны к заполнению<br/>
                <input type='submit' name='reg' value='Регистрация'/><br/>
            </form>
        <?
        
}
        break;

        case 
5:
            

            if (isset(
$_POST['ok'])){
                if (empty(
$_POST['modules'])){
                    
show_error('Не выбраны модули для установки');
                }
                else{
                    
$_SESSION['modules'] = $_POST['modules'];
                    
$_SESSION['modules_list'] = count($_POST['modules']);
                    
$_SESSION['modules_installed'] = 0;
                    echo 
'<div class="msg">Нажмите далее для установки модулей</div>';
                }
            }
            else{
                
save_settings(array_merge(
                              
parse_ini_file('engine/files/data/for_settings.ini'),
                              array(
                                  
'title' => ucfirst($_SERVER['HTTP_HOST']),
                                  
'mysql_host' => $_SESSION['host'],
                                  
'mysql_user' => $_SESSION['user'],
                                  
'mysql_pass' => $_SESSION['pass'],
                                  
'mysql_db_name' => $_SESSION['db'])));

            

            
$config = array('date_create' => time(), 'author_info' => array('name' => 'Patsifist''icq' => 1314191'email' => 'Tadochi@spaces.ru'), 'support' => 'SecWind.ru');

            
file_put_contents('engine/files/data/secwind.db'serialize($config));
            
unlink('engine/files/data/for_settings.ini');
            
unlink('engine/files/data/table.sql');
                
$modules opendir('engine/files/modules/configs/');
                
$btn_clickable false;
                echo 
'<div class="menu_razd">Выберите модуль, который хотели бы установить</div><form method="post">';

                while (
$modul readdir($modules)) {
                    if (
$modul == '.' || $modul == '..'){
                        continue;
                    }

                    
$name pathinfo($modulPATHINFO_FILENAME);
                    
$module array_map('htmlspecialchars',
                                        
parse_ini_file('engine/files/modules/configs/' $name '.app'));
                    echo 
'
                <div class="link"><label>
                <input type="checkbox" name="modules[]" value="' 
$name '"/> ' . (!empty($module['module_runame']) ? $module['module_runame'] : $module['module_name']) . '' . (!empty($module['module_version']) ? '<span class="status" style="float:right;font-size:smaller">' $module['module_version'] . '</span>' '') . (!empty($module['module_desc']) ? '<br />' nl2br($module['module_desc']) : '') . '</label></div>';
                }
                echo 
'<input type="submit" name="ok" value="Выбрать"/></form>';
            }
            break;

        case 
6:
            
$btn_clickable false;
            if (isset(
$_POST['answer'])){
                if (
$_POST['answer'] == 'Принять'){
                    
$module_file $_POST['module'];
                    
$module array_map('htmlspecialchars',
                                        
parse_ini_file('engine/files/modules/configs/' $module_file '.app'));
                    
$db mysqli_connect($_SESSION['host'], $_SESSION['user'], $_SESSION['pass'], $_SESSION['db']);
                    
mysqli_query($db'SET names utf8');


                    
$dir_install = empty($module['dir_install']) ? $module['dir_install'] . '/';
                    
$dir_pre_install = empty($module['dir_install']) ? 'engine/files/tmp/' 'engine/files/tmp/' $module['dir_install'] . '/';
                    
$ftp_dir_ins str_replace(H''$dir_install);
                    
$ftp_dir_pre str_replace(H''$dir_pre_install);


                    if (!
is_dir($dir_install) && !mkdir($dir_install))
                    {
                        
show_error('Возникла проблема с папкой для установки');
                    }
                    else
                    {
                        include_once 
'engine/classes/Pclzip.php';
                        
$zip = new Pclzip('engine/files/modules/archives/' .$module_file '.zip');
                        
                        foreach (
$zip->listContent() as $item)
                        {
                            if (
$item['folder'] == 0)
                            {
                                continue;
                            }
                            if (!
is_dir($item['filename']))
                            
mkdir($item['filename'], 0777);// var_dump($item);
                        
}
                        
                        
$zip->extract(PCLZIP_OPT_SUBSTITUE_FILEH);


                        
show_error('Модуль "'.$module['module_name'].'" установлен');

                        if (!empty(
$module['file_sql'])){
                            
mysqli_multi_query($dbfile_get_contents($dir_install $module['file_sql']));
                            
show_error('Сделаны запросы из файла ' $module['file_sql']);
                            
unlink($dir_install $module['file_sql']);
                        }

                        if (!empty(
$module['dir_chmod'])){
                            
$dirs explode(' '$module['dir_chmod']);
                            foreach (
$dirs as $dir){
                                
chmod($dir0777);
                            }
                            
show_error('Выставлены права доступа 777 на необходимые папки');
                        }

                        
mysqli_query($db"INSERT INTO `modules` SET
                    `name` = '" 
mysqli_real_escape_string($db$module['module_name']) . "',
                    `ru_name` = '" 
. (!empty($module['module_runame']) ? mysqli_real_escape_string($db$module['module_runame']) : '') . "',
                    `desc` = '" 
. (!empty($module['module_desc']) ? mysqli_real_escape_string($db$module['module_desc']) : '') . "',
                    `version` = '" 
. (!empty($module['module_version']) && is_numeric($module['module_version']) ? $module['module_version'] : '') . "',
                    `uninstaller` = '" 
. (!empty($module['file_uninstaller']) ? mysqli_real_escape_string($db$module['file_uninstaller']) : '') . "',
                    `author_name` = '" 
mysqli_real_escape_string($db$module['author_name']) . "',
                    `author_e-mail` = '" 
. (!empty($module['author_e-mail']) ?mysqli_real_escape_string($db$module['author_e-mail']) : '') . "',
                    `author_icq` = '" 
. (!empty($module['author_icq']) ? intval($module['author_icq']) : '') . "',
                    `author_wmid` = '" 
. (!empty($module['author_wmid']) ? intval($module['author_wmid']) : '') . "'");


                        
//unlink(H . 'engine/files/modules/configs/' .$module_file . '.app');
                        //unlink(H . 'engine/files/modules/archives/' . $module_file . '.zip');
                        /*if (file_exists(H . 'style/icons/modules/' .$module['module_name'] . '.png'))
                        {
                            Rename(H . 'style/icons/modules/' . $module['module_name'] . '.png',
                                   H . 'style/icons/modules/' . $module['module_name'] . '.png');
                        }*/
                    
}
                }
                if (!
$_SESSION['modules'])
                {
                    
$btn_clickable true;
                    echo 
'<div class="menu_razd">Установка закончена, нажмите "Далее" для завершения</div>';
                }
                else
                {
                    echo 
'<a class="link" href="?">Установить следующий модуль</a>';
                }
            }
            else{
                if (!empty(
$_SESSION['modules']))
                {
                    
$module_file array_shift($_SESSION['modules']);
                    
$module array_map('htmlspecialchars'parse_ini_file('engine/files/modules/configs/' $module_file '.app'));
                    echo 
'<div class="post">
                            <img src="/style/icons/modules/' 
. (file_exists('style/icons/modules/' $module['module_name'] . '.png') ? $module['module_name'] : '0') . '.png"/> ' . (!empty($module['module_runame']) ? $module['module_runame'] . ' (' $module['module_name'] . ')' $module['module_name']) . '<br />
                            <span class="status">Автор:</span> ' 
$module['author_name'] . '<br />' . (!empty($module['module_version']) ? '<span class="status">Версия:</span> ' $module['module_version'] . '<br />' '') . (!empty($module['module_desc']) ? nl2br($module['module_desc']) . '<br />' '') . '<textarea>' . (!empty($module['agreement']) ? $module['agreement'] : 'Устанавливая модуль "' $module['module_name'] . '", Вы принимаете условия использования модуля.') . '</textarea><br />' '<form method="post">
                                <input type="hidden" name="module" value="' 
$module_file '"/>
                                <input type="submit" name="answer" value="Отказаться"/>
                                 <input type="submit" name="answer" value="Принять"/>
                            </form>
                            </div>'
;
                }
                else
                {
                    
$btn_clickable true;
                    
show_error('Этап пропущен. Вы не выбрали ни одного модуля, Вы можете установить модули в люое время, через админку');
                }
            }
            break;

            case 
7:
                
mkdir(H.'engine/files/tmp/'0777);
                
mkdir(H.'engine/files/backup/files/',0777);
                
mkdir(H.'engine/files/backup/mysql/',0777);
                
mkdir(H.'engine/files/users/cache/',0777);
                if (
$_SERVER['SERVER_ADDR'] != '127.0.0.1'){
                
delete_dir('install/');
                }
                
header('Location: /');
                exit;
            break;
        }

    
?>
    <form>
        <input name='step' value='<?= $_SESSION['install_step'] + 1 ?>' type='hidden'/>
        <input value='Далее' type='submit'<?= !$btn_clickable ' style="display:none"' '' ?>/>
    </form>
</div>
<!-- Div "main_menu" -->
<div class='foot'>
    Генерация: <?= round(microtime(1) - $start4?> сек<br/>
</div>
</body>
</html>
Онлайн: 0
Реклама