Файл: install.php
Строк: 351
<?
//ob_start();
include('sys/connect.php');
$mode = htmlspecialchars($_GET['mode']);
echo'<link rel="stylesheet" href="/style/new/style.css" type="text/css" />
<div class="head"><title>Установка TerrinCMS</title>
<a href="/"><img src="/style/new/logo.gif" alt="Мобильный портал"></a></div>';
function split_sql($sql) {
$sql = trim($sql);
$sql = preg_replace("|n#[^n]*n|", "n", $sql);
$buffer = array();
$ret = array();
$in_string = false;
for ($i = 0; $i < strlen($sql) - 1; $i++) {
if ($sql[$i] == ";" && !$in_string) {
$ret[] = substr($sql, 0, $i);
$sql = substr($sql, $i + 1);
$i = 0;
}
if ($in_string && ($sql[$i] == $in_string) && $buffer[1] != "\") {
$in_string = false;
} elseif (!$in_string && ($sql[$i] == '"' || $sql[$i] == "'") && (!isset ($buffer[0]) || $buffer[0] != "\")) {
$in_string = $sql[$i];
}
if (isset ($buffer[1])) {
$buffer[0] = $buffer[1];
}
$buffer[1] = $sql[$i];
}
if (!empty ($sql)) {
$ret[] = $sql;
}
return ($ret);
}
// ----------------------------------------------------------------------------//
function parsePHPModules() {
ob_start();
phpinfo(INFO_MODULES);
$s = ob_get_contents();
ob_end_clean();
$s = strip_tags($s, '<h2><th><td>');
$s = preg_replace('/<th[^>]*>([^<]+)</th>/', "<info>\1</info>", $s);
$s = preg_replace('/<td[^>]*>([^<]+)</td>/', "<info>\1</info>", $s);
$vTmp = preg_split('/(<h2[^>]*>[^<]+</h2>)/', $s, -1, PREG_SPLIT_DELIM_CAPTURE);
$vModules = array();
for ($i = 1;$i < count($vTmp);$i++) {
if (preg_match('/<h2[^>]*>([^<]+)</h2>/', $vTmp[$i], $vMat)) {
$vName = trim($vMat[1]);
$vTmp2 = explode("n", $vTmp[$i + 1]);
foreach ($vTmp2 AS $vOne) {
$vPat = '<info>([^<]+)</info>';
$vPat3 = "/$vPats*$vPats*$vPat/";
$vPat2 = "/$vPats*$vPat/";
if (preg_match($vPat3, $vOne, $vMat)) {
$vModules[$vName][trim($vMat[1])] = array(trim($vMat[2]), trim($vMat[3]));
} elseif (preg_match($vPat2, $vOne, $vMat)) {
$vModules[$vName][trim($vMat[1])] = trim($vMat[2]);
}
}
}
}
return $vModules;
}
function getModuleSetting($pModuleName, $pSetting) {
$vModules = parsePHPModules();
if (!empty($vModules[$pModuleName][$pSetting])) {
return $vModules[$pModuleName][$pSetting];
}
}
switch ($mode):
case 'index':
echo'<div class="title">Добро пожаловать!</div>';
echo'<div class="menu">Представляем вашему вниманию уникальную cms - Terrin CMS
Данная разработка позволит вам без особого труда создать сайт любой сложности,
который уже будет иметь форум,голосования,загруз-центр,чат и многие другие возможности.
Скачивая и устанавливая Terrin CMS вы уже создаете готовый WAP сайт.Остается произвести настройку сайта под себя
и звать целевых посетителей.
Terrin CMS - использует базу данных с расширением PDO, что позволяет не тратить много времени на генерацию страницы.
Так же гарантируется своевременная поддержка и безвозмездная помощь в создании сайта.
Наша система абсолютно бесплатна, и единственное требование - это наличие копирайта автора. </div>';
echo'<div class="menu_2"> <a href="?mode=1">Начать установку!</a> </div>';
break;
case '1':
$arrfile = array('sys/connect.php','obmen/ava','obmen/files','obmen/files_img','obmen/forum','obmen/gallery','sys/global_config.php');
$error_setting = 0;
echo'<div class="title">Системные требование!</div>';
echo'<div class="menu">';
echo '<b>Рекомендуемая версия PHP - 5.4.0</b><br /><br />';
if (version_compare(PHP_VERSION, '5.2.1') > 0) {
echo '<img src="/images/plus.png" alt="image" /> Версия PHP 5.2.1 и выше: <b><span style="color:#00cc00">ОК</span></b> (Версия ' . phpversion() . ')<br />';
} else {
echo '<img src="/images/minus.png" alt="image" /> Версия PHP 5.2.1 и выше: <b><span style="color:#ff0000">Ошибка</span></b> (Версия ' . phpversion() . ')<br />';
$error_critical = 1;
}
if (extension_loaded('pdo_mysql')) {
if (getModuleSetting('pdo_mysql', 'Client API version') != "") {
$pdoversion = strtok(getModuleSetting('pdo_mysql', 'Client API version'), '-');
} elseif (getModuleSetting('pdo_mysql', 'PDO Driver for MySQL, client library version') != "") {
$pdoversion = getModuleSetting('pdo_mysql', 'PDO Driver for MySQL, client library version');
} else {
$pdoversion = 'Не определено';
}
echo '<img src="/images/plus.png" alt="image" /> Расширение PDO-MySQL: <b><span style="color:#00cc00">ОК</span></b> (Версия ' . $pdoversion . ')<br />';
} else {
echo '<img src="/images/minus.png" alt="image" /> Расширение PDO-MySQL: <b><span style="color:#ff0000">Ошибка</span></b> (Расширение не загружено)<br />';
$error_critical = 1;
}
if (!ini_get('safe_mode')) {
echo '<img src="/images/plus.png" alt="image" /> Safe Mode: <b><span style="color:#00cc00">ОК</span></b> (Выключено)<br />';
} else {
echo '<img src="/images/minus.png" alt="image" /> Safe Mode: <b><span style="color:#ffa500">Предупреждение</span></b> (Включено)<br />';
$error_setting++;
}
if (!ini_get('magic_quotes_runtime')) {
echo '<img src="/images/plus.png" alt="image" /> Magic Quotes Runtime: <b><span style="color:#00cc00">ОК</span></b> (Выключено)<br />';
} else {
echo '<img src="/images/minus.png" alt="image" /> Magic Quotes Runtime: <b><span style="color:#ffa500">Предупреждение</span></b> (Включено)<br />';
$error_setting++;
}
if (!ini_get('session.auto_start')) {
echo '<img src="/images/plus.png" alt="image" /> Session auto start: <b><span style="color:#00cc00">ОК</span></b> (Выключено)<br />';
} else {
echo '<img src="/images/minus.png" alt="image" /> Session auto start: <b><span style="color:#ffa500">Предупреждение</span></b> (Включено)<br />';
$error_setting++;
}
if (!ini_get('register_globals')) {
echo '<img src="/images/plus.png" alt="image" /> Register Globals: <b><span style="color:#00cc00">ОК</span></b> (Выключено)<br />';
} else {
echo '<img src="/images/minus.png" alt="image" /> Register Globals: <b><span style="color:#ffa500">Предупреждение</span></b> (Включено)<br />';
$error_setting++;
}
if (ini_get('file_uploads')) {
echo '<img src="/images/plus.png" alt="image" /> Загрузка файлов: <b><span style="color:#00cc00">ОК</span></b> (Включено)<br />';
} else {
echo '<img src="/images/minus.png" alt="image" /> Загрузка файлов: <b><span style="color:#ffa500">Предупреждение</span></b> (Выключено)<br />';
$error_setting++;
}
$chmod_errors = 0;
$not_found_errors = 0;
foreach ($arrfile as $file) {
$realfile = ''.$file;
if (!file_exists($realfile)) {
$file_status = '<span style="color:#ff0000">Не найден!</span>';
$not_found_errors = 1;
} elseif (is_writable($realfile)) {
$file_status = '<span style="color:#00cc00">ОК</span>';
} else {
@chmod($realfile, 0777);
if (is_writable($realfile)) {
$file_status = '<span style="color:#00cc00">ОК</span>';
} else {
@chmod($realfile, 0755);
if (is_writable($realfile)) {
$file_status = '<span style="color:#00cc00">Разрешено</span>';
} else {
$file_status = '<span style="color:#ff0000">Запрещено</span>';
$chmod_errors = 1;
}
}
}
$chmod_value = @decoct(@fileperms($realfile)) % 1000;
echo '<img src="/images/plus.png" alt="image" /> '.$file . ' <b> - ' . $file_status . '</b> (chmod ' . $chmod_value . ')<br />';
}
echo '<br />Если какой-то пункт выделен красным, необходимо зайти по фтп и выставить CHMOD разрешающую запись<br />';
echo 'Некоторые настройки являются рекомендуемыми для полной совместимости, однако скрипт способен работать даже если рекомендуемые настройки не совпадают с текущими.';
echo'</div>';
echo'<div class="menu_2">';
if (empty($error_critical) && empty($not_found_errors) && empty($chmod_errors)) {
echo '<b><span style="color:#00cc00">Вы можете продолжить установку движка!</span></b>';
if (empty($error_setting)) {
echo 'Все модули и библиотеки присутствуют, настройки корректны, необходимые файлы и папки доступны для записи<br /><br />';
} else {
echo '<b><span style="color:#ffa500">У вас имеются предупреждения!</span></b> (Всего: ' . $error_setting . ')<br />';
echo 'Данные предупреждения не являются критическими, но тем не менее для полноценной, стабильной и безопасной работы движка желательно их устранить<br />';
echo 'Вы можете продолжить установку скрипта, но нет никаких гарантий, что движок будет работать стабильно';
}
echo '<b><a href="?mode=2">ПРИСТУПИТЬ К УСТАНОВКЕ</a></b>';
} else {
echo '<b><span style="color:#ff0000">Имеются критические ошибки!</span></b><br />';
echo 'Вы не сможете приступить к установке, пока не устраните все ошибки<br /><br />';
echo 'Если ваша версия PHP удовлетворяет требованиям работы движка, тогда скорее всего у вас не подключено расширение PDO-MySQL<br />';
echo 'Это расширение уже встроено в PHP, его нужно только включить, обратитесть в поддержку вашего хостинга';
}
echo'</div>';
break;
case '2':
echo'<div class="title">Соединение с БД!</div>';
echo'<div class="menu">';
echo 'Данные подключения к БД будут записаны в файл includes/connect.php, после записи файлу будут автоматически присвоены права CHMOD 644<br />';
echo 'Если этого не произошло, то вы можете вручную выставить файлу права запрещающие запись в него<hr>';
echo '<div class="form">';
echo '<form method="post" action="?mode=3">';
echo 'Сервер MySQL:<br />';
echo '<input name="dbhost" value="localhost" /><br />';
echo 'Порт MySQL:<br />';
echo '<input name="dbport" value="3306" /><br />';
echo 'Имя базы данных:<br />';
echo '<input name="dbname" /><br />';
echo 'Имя пользователя:<br />';
echo '<input name="dbuser" /><br />';
echo 'Пароль:<br />';
echo '<input name="dbpass" type="password" /><br /><br />';
echo '<input value="Продолжить" type="submit" /></form></div><br />';
echo 'База данных и пользователь должны быть созданы в панеле управления вашего сайта!';
echo'</div>';
break;
case '3':
echo'<div class="title">Импорт таблиц!</div>';
echo'<div class="menu">';
if (!empty($_POST['dbhost']) && !empty($_POST['dbport']) && !empty($_POST['dbname']) && !empty($_POST['dbuser'])) {
$dbhost = htmlspecialchars(trim($_POST['dbhost']));
$dbport = htmlspecialchars(trim($_POST['dbport']));
$dbname = htmlspecialchars(trim($_POST['dbname']));
$dbuser = htmlspecialchars(trim($_POST['dbuser']));
$dbpass = htmlspecialchars(trim($_POST['dbpass']));
try {
$db = new PDO('mysql:host=' . $dbhost . ';port=' . $dbport . ';dbname=' . $dbname, $dbuser, $dbpass);
$db -> setAttribute(PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
$db -> setAttribute(PDO :: ATTR_DEFAULT_FETCH_MODE, PDO :: FETCH_ASSOC);
$db -> exec('SET CHARACTER SET utf8');
$db -> exec('SET NAMES utf8');
echo '<b><span style="color:#00cc00">Соединение с базой данных произведено успешно!</span></b><br /><br />';
$dbconfig = "<?php
define ('DBHOST', '$dbhost');
define ('DBPORT', '$dbport');
define ('DBNAME', '$dbname');
define ('DBUSER', '$dbuser');
define ('DBPASS', '$dbpass');
?>";
file_put_contents('sys/connect.php', $dbconfig);
@chmod('sys/connect.php', 0664);
echo'</div>';
echo'<div class="menu_2">';
// ------------------------------------------//
try {
$query = file_get_contents('tables.sql');
$pieces = split_sql($query);
$numtables = 0;
for ($i = 0; $i < count($pieces); $i++) {
$pieces[$i] = trim($pieces[$i]);
if (!empty ($pieces[$i]) && $pieces[$i] != "#") {
$db -> query($pieces[$i]);
$numtables++;
}
}
echo '<b><span style="color:#00cc00">Таблицы успешно импортированы</span></b><br />';
echo 'Всего загружено таблиц: ' . $numtables . '<br /><br />';
}
catch (PDOException $e) {
$errortables = 1;
echo '<b><span style="color:#ff0000">Ошибка! Не удалось импортировать таблицы в БД!</span></b><br />';
echo 'Код ошибки: ' . $e -> getMessage() . '<br /><br />';
}
// ------------------------------------------//
try {
$query = file_get_contents('data.sql');
$pieces = split_sql($query);
$numtables = 0;
for ($i = 0; $i < count($pieces); $i++) {
$pieces[$i] = trim($pieces[$i]);
if (!empty ($pieces[$i]) && $pieces[$i] != "#") {
$db -> query($pieces[$i]);
$numtables++;
}
}
echo '<b><span style="color:#00cc00">Данные успешно импортированы</span></b><br />';
echo 'Всего загружено данных: ' . $numtables . '<br /><br />';
}
catch (PDOException $e) {
$errortables = 1;
echo '<b><span style="color:#ff0000">Ошибка! Не удалось загрузить данные в БД!</span></b><br />';
echo 'Код ошибки: ' . $e -> getMessage() . '';
}
// ------------------------------------------//
}
catch (PDOException $e) {
$errorconnect = 1;
echo '<b><span style="color:#ff0000">Ошибка! Невозможно соединиться с базой данных, проверьте правильность данных!</span></b><br /><br />';
}
if (empty($errorconnect) && empty($errortables)) {
echo 'Если на этой странице вы не видите никаких ошибок значит все таблицы были успешно импортированы<br /><br />';
echo 'Не обновляйте страницу, переходите сразу к следующему шагу установки RotorCMS<br /><br />';
echo ' <b><a href="?mode=4">ПРОДОЛЖИТЬ УСТАНОВКУ</a></b><br /><br />';
}
} else {
echo '<b>Ошибка! Вы не ввели важные данные!</b>';
}
echo'</div>';
break;
case '4':
echo'<div class="title">Настройка системы!</div>';
echo'<div class="error">Не забудте вручную залить таблицы от викторины (vopros.sql)</div>';
echo'<div class="menu">';
if ($_SERVER['HTTP_HOST']) {
$servername = htmlspecialchars($_SERVER['HTTP_HOST']);
} else {
$servername = htmlspecialchars($_SERVER['SERVER_NAME']);
}
echo '<div class="form">';
echo '<form method="post" action="?mode=5">';
echo 'Логин (max20):<br />';
echo '<input name="login" maxlength="20" /><br />';
echo 'Пароль(max36):<br />';
echo '<input name="password" type="password" maxlength="36" /><br />';
echo 'Повторите пароль:<br />';
echo '<input name="password2" type="password" maxlength="36" /><br />';
echo 'Адрес e-mail:<br />';
echo '<input name="mail" maxlength="100" /><br />';
echo 'Адрес сайта:<br />';
echo '<input name="site" value="' . $servername . '" maxlength="100" /><br />';
echo '<input value="Пуск" type="submit" /></form></div>';
echo'</div>';
break;
case '5':
function utf_lower($str) {
if (function_exists('mb_strtolower')) return mb_strtolower($str, 'utf-8');
$arraytolower = array('А' => 'а', 'Б' => 'б', 'В' => 'в', 'Г' => 'г', 'Д' => 'д', 'Е' => 'е', 'Ё' => 'ё', 'Ж' => 'ж', 'З' => 'з', 'И' => 'и', 'Й' => 'й', 'К' => 'к', 'Л' => 'л', 'М' => 'м', 'Н' => 'н', 'О' => 'о', 'П' => 'п', 'Р' => 'р', 'С' => 'с', 'Т' => 'т', 'У' => 'у', 'Ф' => 'ф', 'Х' => 'х', 'Ц' => 'ц', 'Ч' => 'ч', 'Ш' => 'ш', 'Щ' => 'щ', 'Ь' => 'ь', 'Ъ' => 'ъ', 'Ы' => 'ы', 'Э' => 'э', 'Ю' => 'ю', 'Я' => 'я',
'A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'I' => 'i', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z');
return strtr($str, $arraytolower);
}
echo'<div class="title">Настройка системы!</div>';
echo'<div class="menu">';
$login = htmlspecialchars($_POST['login']);
$password = htmlspecialchars($_POST['password']);
$password2 = htmlspecialchars($_POST['password2']);
$mail = strtolower(htmlspecialchars($_POST['mail']));
$site = utf_lower(htmlspecialchars($_POST['site']));
if (strlen($login) <= 20 && strlen($password) <= 20) {
if (strlen($login) >= 3 && strlen($password) >= 3) {
if (preg_match('|^[a-z0-9-]+$|i', $login)) {
if (preg_match('|^[a-z0-9-]+$|i', $password)) {
if ($password == $password2) {
if (preg_match('#^([a-z0-9_-.])+@([a-z0-9_-.])+(.([a-z0-9])+)+$#', $mail)) {
if (preg_match('#^http://([а-яa-z0-9_-.])+(.([а-яa-z0-9/])+)+$#u', $site)) {
try {
$db = new PDO('mysql:host=' . DBHOST . ';port=' . DBPORT . ';dbname=' . DBNAME, DBUSER, DBPASS);
$db -> setAttribute(PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
$db -> setAttribute(PDO :: ATTR_DEFAULT_FETCH_MODE, PDO :: FETCH_ASSOC);
$db -> exec('SET CHARACTER SET utf8');
$db -> exec('SET NAMES utf8');
}
catch (PDOException $e) {
echo '<b><span style="color:#ff0000">Ошибка! Невозможно соединиться с базой данных!</span></b><br />';
echo 'Код ошибки: ' . $e -> getMessage() . '<br /><br />';
}
#Admin
$db -> query("INSERT INTO `users`(login,pass,email,status,activ,money,bank,exp,activ_email,pol) VALUES ('".$login."','".sha1(md5(md5(sha1($password))))."','".$mail."',101,0,0,0,0,'on',1) ;");
$db -> query("INSERT INTO `users`(login,pass,email,status,activ,money,bank,exp,activ_email,pol) VALUES ('System','".sha1(md5(md5(sha1($password))))."','".$mail."',101,0,0,0,0,'on',1) ;");
$db -> query("INSERT INTO `dating`(`login`,`status`) VALUES ('".$login."','off')");
$db -> query("INSERT INTO `dating`(`login`,`status`) VALUES ('System','off')");
#chat
$db -> query("INSERT INTO `chat`(`id`,`title`,`status`) VALUES (1,'Админ-чат','admin');");
header ('location: ?mode=6');
} else {
echo '<b>Ошибка! Неправильный адрес сайта, необходим формата http://my_site.domen</b><br /><br />';
}
} else {
echo '<b>Ошибка! Неправильный адрес e-mail, необходим формат name@site.domen</b><br /><br />';
}
} else {
echo '<b>Ошибка! Веденные пароли отличаются друг от друга</b><br /><br />';
}
} else {
echo '<b>Ошибка! Недопустимые символы в пароле. Разрешены только знаки латинского алфавита и цифры!</b><br /><br />';
}
} else {
echo '<b>Ошибка! Недопустимые символы в логине. Разрешены только знаки латинского алфавита и цифры!</b><br /><br />';
}
} else {
echo '<b>Ошибка! Слишком короткий логин или пароль (От 3 до 20 символов)</b><br /><br />';
}
} else {
echo '<b>Ошибка! Слишком длинный логин или пароль (От 3 до 20 символов)</b><br /><br />';
}
echo'</div>';
break;
case '6':
echo'<div class="title">Менеджер лицензий!</div>';
echo'<div class="menu">';
try {
$db = new PDO('mysql:host=' . DBHOST . ';port=' . DBPORT . ';dbname=' . DBNAME, DBUSER, DBPASS);
$db -> setAttribute(PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
$db -> setAttribute(PDO :: ATTR_DEFAULT_FETCH_MODE, PDO :: FETCH_ASSOC);
$db -> exec('SET CHARACTER SET utf8');
$db -> exec('SET NAMES utf8');
}
catch (PDOException $e) {
echo '<b><span style="color:#ff0000">Ошибка! Невозможно соединиться с базой данных!</span></b><br />';
echo 'Код ошибки: ' . $e -> getMessage() . '<br /><br />';
}
if ($_SERVER['HTTP_HOST']) {
$servername = htmlspecialchars($_SERVER['HTTP_HOST']);
} else {
$servername = htmlspecialchars($_SERVER['SERVER_NAME']);
}
$file = file_get_contents('http://cms.lorinz.ru/site/'.$servername.'.php');
if($file == !NULL){
$db -> query("UPDATE `setting` SET `check_key`='checked',`key`='12345678' WHERE `id` = 1");
} else {
$db -> query("UPDATE `setting` SET `check_key`='nochecked' WHERE `id` = 1");
}
header ('location: ?mode=index');
unlink('install.php');
unlink('tables.sql');
unlink('data.sql');
echo'</div>';
break;
default:
header ('location: ?mode=index');
endswitch;
echo'<div class="footer"><div style="overflow: hidden"><div style="float: left"> © <a href="http://cms.lorinz.ru"><font color="#FFFFFF">Powered by Terrin </font></a> </div><div align="right">v2.1';
echo'</div></div></div>';
echo'</body></html>';
//ob_flush();
?>