Файл: install/inc/step.php
Строк: 341
<?php
/* Мод "Инсталляция"
* Версия v0.0.1
* Дата последнего редактирования 18.04.2015
* Двиг DCMS Special
* Модифицировал densnet
* Файл step.php
* Описание: Мастер установки
*/
$step = (isset($_GET['step'])) ? htmlspecialchars($_GET['step']) : null;
switch ($step) {
default :
$set['title'] = 'Предисловие';
include_once 'inc/head.php';
?>
<div class = "comm1" style="text-align: center;">
<img src = "/style/icons/bullet_green.png" alt = "Шаг 1"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 2"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 3"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 4"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 5"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 6"/>
</div>
<div class = "comm2" style="text-align: center;">
<b>Мастер установки DCMS Special</b>
</div>
<div class = 'comm'>
Вы устанавливаете модификацию <b>DCMS Special</b>.<br />
Модификация находится в стадии разработки.<br />
Так что, если Вы нашли ошибку или уязвимость, сообщите пожалуйста в форум сайта разработки (<a href = 'http://sevfo.com'>http://sevfo.com</a>).<br />
Так же, Вы сможете найти улучшения и дополнения на сайте разработки.<br />
Свои пожелания и рекомендации, Вы можете оставить на сайте разработки.<br />
Спасибо, что Выбрали нас!!!
</div>
<div class = 'comm'>
Автор модификации: <span style="color: red;">densnet</span><br />
Официальный сайт: <a href = 'http://sevfo.com'>Sevfo.com</a><br />
Контакты: <br />
<span style="color: green;">
Spaces.ru - <a href = 'http://densnet.spaces.ru'>http://densnet.spaces.ru</a><br />
Vk.com - <a href = 'http://vk.com/densnet'>http://vk.com/densnet</a><br />
</span>
</div>
<div class = 'comm'>
<b>Фонд поддержки проекта</b><br />
<img src = "/style/icons/save_money.png" alt = "Монета"/> R188896705302 <img src = "/style/icons/flag_russia.png" alt = "Рубль"/><br />
<img src = "/style/icons/save_money.png" alt = "Монета"/> U270902535661 <img src = "/style/icons/flag_ukraine.png" alt = "Гривна"/><br />
<img src = "/style/icons/save_money.png" alt = "Монета"/> Z403302640368 <img src = "/style/icons/flag_usa.png" alt = "Доллар"/><br />
</div>
<div class = 'comm'>
<form action="?step=1" method="post">
<button class = 'flat blue md'>Далее</button>
</form>
</div>
<?php
break;
case '1':
$set['title'] = 'Соглашение';
include_once 'inc/head.php';
?>
<div class = "comm1" style="text-align: center;">
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 1"/>
<img src = "/style/icons/bullet_green.png" alt = "Шаг 2"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 3"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 4"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 5"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 6"/>
</div>
<div class = "comm2" style="text-align: center;">
<b>Мастер установки DCMS Special</b>
</div>
<div class = 'comm'>
1) Поскольку данная программа распространяется бесплатно, то никакие претензии в сторону автора не принимаются. Также этот пункт относится к случаям взломов, спама и т.д.<br />
2) Все вопросы об установке и настройке движка направлять только на форум официального сайта.<br />
3) Пользователь обязуется сохранять все упоминания об авторе, сайте и названии движка в коде и на страницах движка, за исключением изображений.<br />
4) При упоминании о движке на сторонних форумах необходимо ссылаться на адрес сайта (<a href="http://sevfo.com">http://sevfo.com</a>).<br />
5) Запрещается использование пользовательских функций движка, а также отдельного кода движка в целях продажи.<br />
6) В случае нарушения одного или нескольких пунктов данного соглашения автор имеет право обратиться к хозяину сервера (хостинга) с просьбой об удалении всех файлов движка, установленных пользователем. Если данная просьба будет проигнорирована, будут использоваться другие методы (ибо их немалое количество).<br /><br />
<form action = "?step=2" method = "post">
<a href="?" class = 'flat blue md'>Назад</a>
<button class = 'flat blue md'>Далее</button>
</form>
</div>
<?php
break;
case '2':
$set['title'] = 'Проверка платформы';
include_once 'inc/head.php';
?>
<div class = "comm1" style="text-align: center;">
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 1"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 2"/>
<img src = "/style/icons/bullet_green.png" alt = "Шаг 3"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 4"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 5"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 6"/>
</div>
<div class = "comm2" style="text-align: center;">
<b>Мастер установки DCMS Special</b>
</div>
<div class = 'comm'>
<form method = 'post' action='?step=2'>
<button name = 'refresh' class = 'flat blue md'>Обновить</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 />
<form action="?step=3" method="post">
<a href="?step=1" class = 'flat blue md'>Назад</a>
<?php
if (isset($err)) {
echo "<button class = 'flat blue md'>Пропустить шаг</button>";
} else {
echo "<button class = 'flat blue md'>Далее</button>";
}
?>
</form>
</div>
<?php
break;
case '3':
$set['title'] = 'Проверка CHMOD';
require_once 'inc/head.php';
?>
<div class = "comm1" style="text-align: center;">
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 1"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 2"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 3"/>
<img src = "/style/icons/bullet_green.png" alt = "Шаг 4"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 5"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 6"/>
</div>
<div class = "comm2" style="text-align: center;">
<b>Мастер установки DCMS Special</b>
</div>
<div class = 'comm'>
<?php
if (isset($_GET['chmod_ok'])) {
@chmod(H . 'install/', 0777);
@chmod(H . 'sys/avatar/', 0777);
@chmod(H . 'sys/ini/', 0777);
@chmod(H . 'sys/classes/', 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/obmen/files/', 0777);
@chmod(H . 'sys/obmen/screens/', 0777);
@chmod(H . 'sys/inc/', 0777);
@chmod(H . 'sys/wall/', 0777);
@chmod(H . 'sys/files/', 0777);
@chmod(H . 'sys/files/screens/', 0777);
@chmod(H . 'sys/txt/', 0777);
@chmod(H . 'sys/js/', 0777);
@chmod(H . 'sys/fnc/', 0777);
@chmod(H . 'sys/news/', 0777);
@chmod(H . 'sys/update/', 0777);
@chmod(H . 'sys/tmp/', 0777);
@chmod(H . 'style/themes/', 0777);
msg('Права успешно получены!');
}
?>
<form method = 'POST' action = '?step=3&chmod_ok'>
<a href="?step=3" class = 'flat blue md'>Обновить</a>
<button class = 'flat blue md'>Получить права!</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='err'>$value</div>n";
}
} else {
echo "<div class='err'>$err</div>n";
}
}
?>
<br />
<form action="?step=4" method="post">
<a href="?step=2" class = 'flat blue md'>Назад</a>
<?php
if (isset($err)) {
echo "<button class = 'flat blue md'>Пропустить шаг</button>";
} else {
echo "<button class = 'flat blue md'>Далее</button>";
}
?>
</form>
</div>
<?php
break;
case '4':
$set['title'] = 'Параметры MySQL';
require_once 'inc/head.php';
?>
<div class = "comm1" style="text-align: center;">
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 1"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 2"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 3"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 4"/>
<img src = "/style/icons/bullet_green.png" alt = "Шаг 5"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 6"/>
</div>
<div class = "comm2" style="text-align: center;">
<b>Мастер установки DCMS Special</b>
</div>
<form class="comm" method = 'POST' action = '?step=4'>
<a href="?step=3" class = 'flat blue md'>Назад</a>
<button class = 'flat blue md'>Обновить</button>
</form>
<?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'] . ') содержатся таблицы с идентичными названиями. Очистите или выберите другую базу данных.';
} 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 = 'msg'>
Подключение к базе данных успешно выполнено
</div>
<?php
if (isset($msg)) {
foreach ($msg as $key => $value) {
echo "<div class = 'msg'>$value</div>";
}
}
if (isset($err)) {
foreach ($err as $key => $value) {
echo "<div class = 'err'>$value</div>";
}
}
?>
<form class="comm" action="?step=5" method="post">
<?php
if (isset($err)) {
echo "<button class = 'flat blue md'>Пропустить шаг</button>";
} else {
echo "<button class = 'flat blue md'>Далее</button>";
}
?>
</form>
<?php
include_once 'inc/foot.php';
exit();
} else {
if (isset($err)) {
echo "<div class = 'razd'>";
foreach ($err as $key => $value) {
echo "<div class = 'err'>$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 = 'comm' action = '?step=4&<?= $passgen ?>'>
<b>Хост</b> <br />
<input required = 'required' name = 'host' value = '<?= $out_mysql_host ?>' type = 'text' /><br />
<b>Пользователь</b> <br />
<input required = 'required' name = 'user' value = '<?= $out_mysql_user ?>' type = 'text' /><br />
<b>Пароль</b> <br />
<input required = 'required' name = 'pass' value = '<?= $out_mysql_pass ?>' type = 'text' /><br />
<b>Имя базы</b> <br />
<input required = 'required' name = 'db' value = '<?= $out_mysql_db_name ?>' type = 'text' /><br />
<?php
if (isset($db_not_null)) {
echo "<label><input type = 'checkbox' checked = 'checked' name = 'rename' value = '1' /> Переименовать существующие таблицы<br /></label>";
}
?>
<br />
<button class = 'flat blue md'>Далее</button>
</form>
<?php
}
break;
case '5':
$set['title'] = 'Регистрация Администратора';
include_once 'inc/head.php';
?>
<div class = "comm1" style="text-align: center;">
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 1"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 2"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 3"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 4"/>
<img src = "/style/icons/bullet_blue.png" alt = "Шаг 5"/>
<img src = "/style/icons/bullet_green.png" alt = "Шаг 6"/>
</div>
<div class = "comm2" style="text-align: center;">
<b>Мастер установки DCMS Special</b>
</div>
<form class="comm" method = 'post' action='?step=5'>
<button name = 'refresh' class = 'flat blue md'>Обновить</button>
</form>
<?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', '" . crypt::hash($_POST['password']) . "', $time, $time, $time, '$sex', '4', '15', '500')");
$user = mysql_fetch_assoc(mysql_query("SELECT * FROM `user` WHERE `nick` = '$nick' AND `pass` = '" . crypt::hash($_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 = 'msg'>Регистрация администратора прошла успешно</div>";
if (isset($msg)) {
foreach ($msg as $key => $value) {
echo "<div class = 'msg'>$value</div>";
}
}
?>
<form action="?step=6" method="post">
<a href="?step=2" class = 'flat blue md'>Назад</a>
<?php
if (isset($err)) {
echo "<button class = 'flat blue md'>Пропустить шаг</button>";
} else {
echo "<button class = 'flat blue md'>Завершить</button>";
}
?>
</form>
<div class = 'comm'>
* после установки обязательно удалите папку /install/
</div>
<?php
} else {
if (isset($err)) {
foreach ($err as $key => $value) {
echo "<div class = 'err'>$value</div>";
}
}
echo "<form action = '?step=5&$passgen' class = 'comm' method = 'post'>n";
echo "<b>Логин (3-16 символов)</b><br />";
echo "<input type = 'text' class = 'input-txt' aria-required = 'true' aria-invalid = 'false' required = 'required' name = 'nick'" . ((isset($nick)) ? " value = '" . $nick . "'" : " value = 'Admin'") . " maxlength = '16' /><br />";
echo "<b>Пароль (6-16 символов)</b><br />";
echo "<input type = 'password'" . ((isset($password)) ? " value = '" . $password . "'" : null) . " name = 'password' aria-required = 'true' aria-invalid = 'false' required = 'required' maxlength = '16' /><br />";
echo "* использование простого пароля облегчает жизнь хакерам<br />";
echo "<b>Подтверждение пароля</b><br />";
echo "<input type = 'password'" . ((isset($password)) ? " value = '" . $password . "'" : null) . " name = 'password_retry' aria-required = 'true' aria-invalid = 'false' required = 'required' maxlength='16' /><br />n";
echo "<b>Ваш пол:</b><br />n";
echo "<select name='sex'>n";
echo "<option value='1'" . ((isset($sex) && $sex === 1) ? " selected='selected'" : null) . ">Мужской</option>n";
echo "<option value='0'" . ((isset($sex) && $sex === 0) ? " selected='selected'" : null) . ">Женский</option>n";
echo "</select><br />n";
echo "* Все поля обязательны к заполнению<br />n";
echo "<button class = 'flat blue md' name='reg'>Регистрация</button>";
echo "</form>";
}
break;
case '6':
if (isset($_SESSION['mysql_ok']) && $_SESSION['mysql_ok'] == true) {
header("Location: ?step=5" . SID);
}
break;
}
require_once 'inc/foot.php';