<?php
#######################################################
# раздача ICQ номерков #
# #
# Автор : Неизвестен #
# Автор модификации : Дальше... #
# E-mail : [email protected] #
# ICQ : 362548079 #
# #
# По всем вопросам пишите в ICQ. #
#######################################################
class Install
{
var $files;
var $conffile;
function Install()
{
$this->files=array('../admin.php',
'../admin_prefs.php',
'../admin_users.php',
'../classes.php',
'../index.php',
'../myprefs.php',
'../mysql.php',
'../conf.php',
'dump.php'
);
$this->conffile='../conf.php';
}
function PrintTempl($title,$caption,$center,$step,$result='ok')
{
$steps=4;
echo "<html>
<head>
<title>Раздача ICQ (установка) - $title</title>
<style type=\"text/css\">
<!--
body {
font: 10pt arial tahoma verdana sans-serif;
background-color: #ffffff;
margin: 2px;
text-align: left;
}
table {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 8pt;
}
a.menu {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: underline;
font-size: 10pt;
font-weight: bold;
}
a.menu:hover {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 10pt;
font-weight: bold;
}
.menu {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 10pt;
}
input {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 8pt;
}
textarea {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 8pt;
}
a {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: underline;
font-weight: bold;
font-size: 8pt;
}
a:hover {
color: #dd2200;
font-family: Tahoma,Verdana;
text-decoration: none;
font-weight: bold;
font-size: 8pt;
}
.sel {
color: #333333;
font-family: Tahoma,Verdana;
text-decoration: none;
font-size: 8pt;
width: 150;
}
-->
</style>
</head>
<body><br><br>
<table cellspacing=1 cellpadding=3 border=0 bgcolor=#CCCCCC align=center valign=center>
<tr>
<td bgcolor=#EEEEEE align=center>
<b>Установка скрипта \"Раздача ICQ\". "; if ($step>0) echo "Шаг $step из $steps"; echo "</b>
</td>
</tr>
<tr>
<td bgcolor=#ffffff align=center>
<br><b>$caption</b> <br><br>
$center<br>
</td>
</tr>
<tr>
<td bgcolor=#CCCCFF>
Состояние: $result
</td>
</tr>
</table>
</body></html>
";
}
function EventCycle()
{
if (isset($_REQUEST['sc_submit']))
{
$this->dbform();
}
else
if (isset($_REQUEST['db_submit']))
{
$res=$this->TryConnect($_REQUEST['db_login'],$_REQUEST['db_pass'],$_REQUEST['db_host'],$_REQUEST['db_dbname']);
if (!$res['flag']) $this->dbform($_REQUEST['db_login'],$_REQUEST['db_pass'],$_REQUEST['db_host'],$_REQUEST['db_dbname'],1,$res['result']);
else
{
if ($this->SaveParams($_REQUEST['db_login'],$_REQUEST['db_pass'],$_REQUEST['db_host'],$_REQUEST['db_dbname']))
{
$this->tablesform();
}
else $this->dbform($_REQUEST['db_login'],$_REQUEST['db_pass'],$_REQUEST['db_host'],$_REQUEST['db_dbname'],2,'Проблема с записью в файл '.$this->conffile);
}
}
else
if (isset($_REQUEST['tf_submit_again'])) $this->tablesform();
else
if (isset($_REQUEST['tf_submit_next'])) $this->userform();
else
if (isset($_REQUEST['user_submit']))
{
if (!$_REQUEST['login']||!$_REQUEST['pass']||!$_REQUEST['pass_again']||!eregi('[a-z|A-Z|_]{4,}',$_REQUEST['login']))
{
$result.='<b>Добавление невозможно. Не заданы (либо заданы неправильно) имя или пароль пользователя!</b>';
$this->userform($result,$_REQUEST['login']);
}
else
if ($_REQUEST['pass']!=$_REQUEST['pass_again'])
{
$result.='<b>Добавление невозможно. Пароли не совпадают!</b>';
$this->userform($result,$_REQUEST['login']);
}
else
{
include('../mysql.php');
if ($res=mysql_query("SELECT * FROM icqadminusers WHERE login='".$_REQUEST['login']."'"))
{
if ($arr=mysql_fetch_array($res))
{
$result.='<b>Добавление невозможно. Пользователь с таким именем уже есть в базе!</b>';
$this->userform($result,$_REQUEST['login']);
}
else
{
if (mysql_query("INSERT INTO icqadminusers (`login`,`pass`) VALUES ('".strip_tags($_REQUEST['login'])."','".md5($_REQUEST['pass'])."')"))
{
$this->finalform();
}
else
{
$result.='<b>Не удалось добавить пользователя. Ответ MySQL: '.mysql_error().'</b>';
$this->userform($result,$_REQUEST['login']);
}
}
}
else
{
$result.='<b>Не удалось добавить пользователя. Ответ MySQL: '.mysql_error().'</b>';
$this->userform($result,$_REQUEST['login']);
}
}
}
else $this->SelfCheck();
}
function SelfCheck()
{
$caption='Проверка целостности файлов программы...';
$center="
<table cellspacing=0 cellpadding=3 border=0>
<form method=POST>
<tr>
<td align=center>
Файл
</td>
<td align=center>
Состояние
</td>
</tr>";
$flag=true;
foreach ($this->files as $file)
{
if (file_exists($file))
{
$center.="
<tr>
<td>
$file
</td>
<td align=center>
<font color=green>ок
</td>
</tr>";
}
else
{
$center.="
<tr>
<td>
$file
</td>
<td align=center>
<b><font color=red>отсутствует</font></b>
</td>
</tr>";
$flag=false;
}
}
if ($flag)
{
$result='ok';
$center.="
<tr>
<td colspan=2 align=center>
<input type=submit name=sc_submit value=\"Продолжить »\">
</td>
</tr>";
}
else $result='<b>Продолжение невозможно!</b>';
$center.="
</form>
</table>
";
$this->PrintTempl("Самопроверка",$caption,$center,1,$result);
}
function dbform($name=NULL,$pass=NULL,$host='localhost',$db=NULL,$noconnect=0,$result='ok')
{
$center="
<table cellspacing=0 cellpadding=3 border=0>
<form method=POST>
<tr>
<td>
Логин:
</td>
<td>
<input type=text name=db_login value=\"$name\">
</td>
</tr>
<tr>
<td>
Пароль:
</td>
<td>
<input type=password name=db_pass value=\"$pass\">
</td>
</tr>
<tr>
<td>
Хост:
</td>
<td>
<input type=text name=db_host value=\"$host\">
</td>
</tr>
<tr>
<td>
Имя БД:
</td>
<td>
<input type=text name=db_dbname value=\"$db\">
</td>
</tr>
<tr>
<td colspan=2 align=center>
<input type=submit name=db_submit value=\"Продолжить »\">
</td>
</tr>
</form>
</table>
";
if ($noconnect==1) $caption="<font color=red>Нет связи с сервером MySQL с такими параметрами.<br> Повторите ввода!</font>";
else if ($noconnect==0) $caption="Введите параметры MySQL";
else if ($noconnect==2) $caption="<font color=red>Не удалось сохранить данные в файл ".$this->conffile."<br> Проверьте права на запись в файл!</font>";
$this->PrintTempl("Установка параметров MySQL",$caption,$center,2,$result);
}
function tablesform($result='ok')
{
include_once('../mysql.php');
include_once('dump.php');
$caption='Создание таблиц в базе данных';
$center="
<table cellspacing=0 cellpadding=3 border=0>
<form method=POST>
<tr>
<td align=center>
Таблица
</td>
<td align=center>
Состояние
</td>
</tr>";
if ($res=mysql_query('SHOW TABLES'))
{
while ($arr=mysql_fetch_array($res))
{
$dbtables[]=$arr[0];
}
}
$flag=true;
foreach ($tables as $table)
{
if (@in_array($table['name'],$dbtables)) $flag=false;
}
reset($tables);
foreach ($tables as $table)
{
if (@in_array($table['name'],$dbtables)) // Таблица уже есть в базе
{
$center.="
<tr>
<td>
".$table['name']."
</td>
<td align=center>
<b><font color=red>есть в базе</font></b>
</td>
</tr>";
}
else
{
if (!$flag)
{
$center.="
<tr>
<td>
".$table['name']."
</td>
<td align=center>
<font color=green>нет в базе</font>
</td>
</tr>";
}
else
{
if (mysql_query($table['create']))
{
if ($table['dump']!='')
{
$dumps=explode("\n",$table['dump']);
foreach ($dumps as $dump) mysql_query($dump);
echo mysql_error();
}
$center.="
<tr>
<td>
".$table['name']."
</td>
<td align=center>
<font color=green>создана</font>
</td>
</tr>";
}
else
{
$center.="
<tr>
<td>
".$table['name']."
</td>
<td align=center>
<b><font color=red>не удалось создать</font></b>
</td>
</tr>";
}
}
}
}
if ($flag)
{
$result='ok';
$center.="
<tr>
<td colspan=2 align=center>
<input type=submit name=tf_submit_next value=\"Продолжить »\">
</td>
</tr>";
}
else
{
$result='<b>Продолжение невозможно! Удалите существующие таблицы!</b>';
$center.="
<tr>
<td colspan=2 align=center>
<input type=submit name=tf_submit_again value=\"Повторить »\">
</td>
</tr>";
}
$center.="
</form>
</table>
";
$this->PrintTempl("Создание таблиц",$caption,$center,3,$result);
}
function userform($result='ok',$login="")
{
$caption='Создание певого пользователя';
$center="
<table cellspacing=0 cellpadding=3 border=0>
<form method=POST>
<tr>
<td align=center>
Имя
</td>
<td align=center>
<input type=text name=login value=\"$login\">
</td>
</tr>
<tr>
<td align=center>
Пароль
</td>
<td align=center>
<input type=password name=pass value=\"\">
</td>
</tr>
<tr>
<td align=center>
Подтверждение
</td>
<td align=center>
<input type=password name=pass_again value=\"\">
</td>
</tr>
<tr>
<td align=center colspan=2>
<input type=submit name=user_submit value=\"Продолжить »\">
</td>
</tr>
</form>
</table>
";
$this->PrintTempl("Создание первого пользователя",$caption,$center,4,$result);
}
function finalform()
{
$caption='Установка завершена!';
$center="
Скрипт \"Раздача ICQ\" успешно установлен на Ваш сервер.<br>
Не забудьте удалить папку install с Вашего сервера.<br>
Для перехода в администраторскую часть <a href=\"../admin_prefs.php\">нажмите здесь</a><br><br>
";
$this->PrintTempl("Установка завершена",$caption,$center,-1);
}
function TryConnect($name,$pass,$host,$db)
{
if ($res=@mysql_connect($host,$name,$pass))
{
$result.='cоединение с MySQL установлено<br>';
if (mysql_select_db($db,$res))
{
$result.='соединение с базой данных $db установлено<br>';
return array('flag'=>true,'result'=>$result);
}
else $result.="<b>база данных $db не существует, создайте её</b><br>";
}
else $result.='<b>не удалось установить соединение с MySQL</b>';
return array('flag'=>false,'result'=>$result);
}
function SaveParams($name,$pass,$host,$db)
{
if ($fp=@fopen($this->conffile,'w'))
{
$str="<?php
\$GLOBALS[mysql_user]='$name';
\$GLOBALS[mysql_pass]='$pass';
\$GLOBALS[mysql_host]='$host';
\$GLOBALS[mysql_db]='$db';
?>";
if (fwrite($fp,$str))
{
fclose($fp);
return true;
}
fclose($fp);
}
return false;
}
}
$inst=new Install;
$inst->EventCycle();
?>