View file index.php

File size: 14.39Kb
<?php
include 'config.php';
include 'head.php';
echo '<!-- start boby -->'."\n";
?>
<h2>Время сервера - <?php echo date("H:i:s || d.m.Y"); ?></h2>
<br>
<?php
switch($_GET['act']) {
default:
?>
<h3>Сетевая информация</h3>
<p>
<b>Информация о пользователе:</b><small><small>
<?php
echo  $_SERVER['HTTP_USER_AGENT'];          //краткая инфа
?></small></small>
<br>
<b>Хост сайта:</b><small><small>
<?php
echo $_SERVER['HTTP_HOST'];                //хост сайта
?></small></small>
<br>
<b>Соединение:</b><small><small>
<?php
echo $_SERVER['HTTP_CONNECTION'];          //скорость соединения
?></small></small>
<br>
<b>Язык интерфейса пользователя:</b><small><small>
<?php
echo $_SERVER['HTTP_ACCEPT_LANGUAGE'];     //язык интерфейса
?></small></small>
<br>
<b>Порт пользователя:</b><small><small>
<?php
echo $_SERVER['REMOTE_PORT'];              //port
?></small></small>
<br>
<b>IP пользователя:</b><small><small>
<?php
echo $_SERVER['REMOTE_ADDR'];              //ip
?></small></small>
<br>
<b>Краткая директория вызываемого файла:</b><small><small>
<?php
echo $_SERVER['SCRIPT_NAME'];              //директория нахождения файла
?></small></small>
<br>
<b>Администратор сервера:</b><small><small>
<?php
echo $_SERVER['SERVER_ADMIN'];             //администратор сервера
?></small></small>
<br>
<b>Порт сервера:</b><small><small>
<?php
echo $_SERVER['SERVER_PORT'];              //port сервера
?></small></small>
<br>
<b>Протокол сервера:</b><small><small>
<?php
echo $_SERVER['SERVER_PROTOCOL'];          //протокол сервера
?></small></small>
<br>
<b>Описание софта на сервере:</b><small><small>
<?php
echo $_SERVER['SERVER_SOFTWARE'];          //характеристики сервера (описание системы)
?></small></small>
<br>
<b>Gateway interface:</b><small><small>
<?php
echo $_SERVER['GATEWAY_INTERFACE'];        //gateway interface
?></small></small>
<br>
<b>Версия PHP на сервере:</b><small><small>
<?php
echo PHP_VERSION;               //какая версия PHP стоит на сервере
?></small></small>
<br>
<b>PHP OS:</b><small><small>
<?php
echo PHP_OS;
?></small></small>
</p>


<?php
break;
case 'about':
?>
<h3>Справка</h3>
<p>
<b>Скрипт разработал:</b> <a href="http://wap_mas.vkontakte.ru/" title="Роман Гринько ВКонтакте!">Роман Гринько aka KOT</a><br>
<b>ICQ:</b> 405-623-516<br>
<b>E-Mail:</b> <a href="mailto:[email protected]">[email protected]</a><br>
</p>
<?php
break;
case 'test':
?>
<h3>Тестирование сервера</h3>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr bgcolor="#909090">
  <td><b>URL</b></td>
  <td><b>Описание</b></td>
</tr>
  <tr valign="top" bgcolor="#e1d8d8">
    <td>
      <a href="https://subdomain.localhost/ssl.php">https://subdomain.localhost/ssl.php</a>
    </td>
    <td>
      <font size="-1">Проверка SSL            </font>
    </td>
  </tr>
  <tr valign="top" bgcolor="#f0e7e7">
    <td>
      <a href="http://subdomain.localhost/">http://subdomain.localhost/</a>
    </td>
    <td>
      <font size="-1">Проверка "не-Интернет" доменов второго уровня, а также SSI            </font>
    </td>
  </tr>
  <tr valign="top" bgcolor="#e1d8d8">
    <td>
      <a href="http://test1.ru/">http://test1.ru/</a>
    </td>
    <td>
      <font size="-1">Проверка "Интернет"-доменов второго уровня: test1.ru<br>(вначале отключите прокси-сервер!)            </font>
    </td>
  </tr>
  <tr valign="top" bgcolor="#f0e7e7">
    <td>
      <a href="http://subdomain.test1.ru/">http://subdomain.test1.ru/</a>
    </td>
    <td>
      <font size="-1">Проверка "Интернет"-доменов третьего уровня            </font>
    </td>
  </tr>
  <tr valign="top" bgcolor="#e1d8d8">
    <td>
      <a href="http://localhost/Tests/phpnotice/index.php">http://localhost/Tests/phpnotice/index.php</a>
    </td>
    <td>
      <font size="-1">Проверка перехвата PHP Notice в Денвере            </font>
    </td>
  </tr>
  <tr valign="top" bgcolor="#f0e7e7">
    <td>
      <a href="http://localhost/Tests/PHP5/index.php5">http://localhost/Tests/PHP5/index.php5</a>
    </td>
    <td>
      <font size="-1">PHP5 information            </font>
    </td>
  </tr>
  <tr valign="top" bgcolor="#e1d8d8">
    <td>
      <a href="http://localhost/Tools/phpMyAdmin">http://localhost/Tools/phpMyAdmin</a>
    </td>
    <td>
      <font size="-1">Проверка MySQL и phpMyAdmin            </font>
    </td>
  </tr>
  <tr valign="top" bgcolor="#f0e7e7">
    <td>
      <a href="http://custom-host:8648">http://custom-host:8648</a>
    </td>
    <td>
      <font size="-1">Проверка хоста с другим IP-адресом и портом (127.0.0.2:8648)              <br /><i style="color: red">В Windows XP SP2 имеется ошибка, из-за которой данный хост может не работать. Официальную "заплатку" от Microsoft качайте <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=17d997d2-5034-4bbb-b74d-ad8430a1f7c8&amp;displaylang=en">здесь</a>.</i>
            </font>
    </td>
  </tr>
  <tr valign="top" bgcolor="#e1d8d8">
    <td>
      <a href="http://localhost/Tests/sendmail/index.php">http://localhost/Tests/sendmail/index.php</a>
    </td>
    <td>
      <font size="-1">Проверка отладочной заглушки для sendmail            </font>
    </td>
  </tr>
</table>
<?php
break;

case 'mail':
if($_GET['str']=='send')  {


@extract($_SERVER, EXTR_SKIP); @extract($_POST, EXTR_SKIP); @extract($_GET, EXTR_SKIP);
if(!@$to) $to="[email protected]";
if(!@$subject) $subject="Congratulations!";
if(!@$body) $body="Hello!\nToday is ".date("Y-m-d").".\nThis is the test\nmail body.\n\nIf you see this, sendmail stub seems to be OK.";
?>

<form action="<?=$_SERVER["REQUEST_URI"]?>" method=POST>
<?if (empty($_GET['noform'])) {?>
	<h2>Послать тестовое письмо:</h2>
	<table  cellpadding=5 cellspacing=2>
	<tr valign=top>
		<td>To:</td>
		<td><input type=text name=to value="<?=@HtmlSpecialChars($to)?>"></td>
	</tr>
	<tr valign=top>
		<td>Subject:</td>
		<td><input type=text name=subject value="<?=@HtmlSpecialChars($subject)?>"></td>
	</tr>
	<tr valign=top>
		<td>Текст:</td>
		<td><textarea name=body cols=50 rows=4><?=@HtmlSpecialChars($body)?></textarea></td>
	</tr>
	<tr valign=top>
		<td colspan=2>
			<input type=submit name=doSendSendmail value="Послать через mail() (sendmail)">
			<input type=submit name=doSendSmtp value="Послать через fsockopen() (SMTP)">
			<input type=submit name=doDel value="Очистить отладочную директорию">
		</td>
	</tr>
	</table>
<?} else {?>
	<input type=submit name=doDel value="Очистить отладочную директорию">
<?}?>
</form>

<?
$dir = "/tmp/!sendmail";

if (@$doDel) {
	if ($d = @opendir($dir)) {
		while (false !== ($e = readdir($d))) {
			if ($e[0] == ".") continue;
			unlink("$dir/$e");
		}
	}
	//echo "<h3>Письма удалены.</h3>";
}

if (@$doSendSendmail) {
	echo "<h2>Посылаем письмо через mail()...</h2>\n";
	if (mail($to,$subject,$body,"From: \"PHP mail()\" <[email protected]>")) {
		echo "OK, функция mail() сработала корректно.<br>\n";
	} else {
		echo "При вызове mail() произошла ошибка.<br>\n";
	}
}

if (@$doSendSmtp) {
	function waitAnswer($f) {
		fread($f, 128);
	}
	echo "<h2>Посылаем письмо...</h2>\n";
	$f = fsockopen('localhost', 25, $errno, $errstr, 3);
	if ($f) {
		fwrite($f, "HELO localhost\r\n");
		waitAnswer($f);
		fwrite($f, "RCPT TO: [email protected]\r\n");
		waitAnswer($f);
		fwrite($f, "DATA\r\n");
		waitAnswer($f);
		fwrite($f, "From: test <[email protected]>\r\n");
		fwrite($f, "To: test <[email protected]>\r\n");
		fwrite($f, "Subject: Testing mail\r\n");
		fwrite($f, "\r\n");
		fwrite($f, "This is a test mail sent via fsockopen().\r\n");
		fwrite($f, "Today is " . date("r") . ".\r\n");
		fwrite($f, ".\r\n");
		waitAnswer($f);
		fwrite($f, "QUIT\r\n");
		waitAnswer($f);
	}
	if ($f && fclose($f)) {
		echo "OK, письмо отправлено успешно.<br>\n";
		sleep(1); // wait for mail is arrived
	} else {
		echo "При соединении с сервером произошла ошибка.<br>\n";
	}
}

}
elseif($_GET['str']=='open') {
$dir = "/tmp/!sendmail";
$d = @opendir($dir);
if ($d) {
	echo "<h2>Отосланные письма в директории <tt>$dir</tt></h2>\n";
	echo "<p>Каждое письмо хранится в отдельном файле с расширением .eml. Это очень удобно, т.к. позволяет открыть такой файл в Outlook и просмотреть, как письмо выглядит с учетом всех перекодировок и преобразований.</p>";
	$list = array();
	while (false !== ($e = readdir($d))) {
		if ($e[0] == ".") continue;
		$list[] = "$dir/$e";
	}
	rsort($list);

	if ($list) {
		foreach ($list as $fname) {
			$f = @fopen($fname, "r"); if (!$f) continue;
			echo "<h3>Файл <tt>$fname</tt>:</h3>\n";
			echo "<pre>\n";
			echo HtmlSpecialChars(fread($f,filesize($fname)));
			echo "</pre>\n";
			echo "<hr>";
		}
	} else {
		echo "Директория пуста.";
	}
}
}
break;

case 'sitelist':
echo '<h3>Список зарегистрированных сайтов</h3>';

$file = file('/usr/local/apache/conf/vhosts.conf');
foreach ($file as $line) {
  if (preg_match('/^[^#]* <VirtualHost \s+ [^:>]+ (?::(\d+))?/six', $line, $p)) {
    $port = @$p[1];
  }
  if (preg_match('/^[^#]* ServerName \s+ "?([^"]*)"?/six', $line, $p)){
    if ($port == 443) continue;
    $dom = preg_replace('/^www\./si', '', $p[1]);
    $dom .= $port && $port != 80? ":$port" : "";
    $domains[$dom] = join(".", array_reverse(preg_split('/\./', $dom)));
  }
}
asort($domains);

$prev = false;
foreach ($domains as $dom=>$parts) {
  if (!$prev || !preg_match('/'.preg_quote($prev, '/').'$/si', $dom)) {
    echo "<a href=\"http://{$dom}\"><b>{$dom}</b></a></br>";
    $prev = $dom;
  } else {
    print "<dd><a href=\"http://{$dom}\">{$dom}</a><br /></dd>";
  }
}
break;

case 'admuser':
echo '<h3>Заведение новых БД и пользователей MySQL</h3>';
?>
<?php
@extract($_SERVER, EXTR_SKIP); @extract($_POST, EXTR_SKIP); @extract($_GET, EXTR_SKIP);
if (@$doGo) {
  do {
    if (!@mysql_connect("localhost", "root", $rootpass)) {
      $eBadRootPass = mysql_error();
      break;
    }
    //SetCookie("mysqlpass", $rootpass, time()+3600*24*365*5);

    if ($db=="" || !preg_match('/^[a-z0-9_]+$/i',$db)) {
      $eBadDb = 1; break;
    }
    if ($login=="" || !preg_match('/^[a-z0-9_]+$/i',$login)) {
      $eBadUser = 1; break;
    }
    if ($password!=$password1) {
      $eBadPass = 1; break;
    }
    
    // Create database.
    if (!@mysql_query("CREATE DATABASE `$db`")) {
      $eDBExists = 1; break;
    }
    mysql_select_db("mysql");

    // Search for user.
    $r = @mysql_query("select * from user where user='$login'");
    if (@mysql_num_rows($r)) {
      $eUserExists=1; break;
    }

    // Insert user entry.
    $sql = "
      INSERT INTO user (Host,        User,     Password,              File_priv) 
      VALUES           ('localhost', '$login', PASSWORD('$password'), 'Y'      )
    ";
    if (!mysql_query($sql)) {
      $eSqlError = mysql_error(); break;
    }

    // Insert DB entry.
    $sql = "
      INSERT INTO db (
        Host, Db, User, 
        Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv 
      ) VALUES (
        'localhost', '$db', '$login',
        'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'
      )
    ";
    if (!mysql_query($sql)) {
      $eSqlError = mysql_error(); break;
    }

    // Reload MySQL.
    mysql_query("FLUSH PRIVILEGES");

    $eOK = 1;
  } while(0);
}
if (!isSet($rootpass)) $rootpass=@$mysqlpass;
?>

<?if(@$eOK) {?>
  <h4><font color="green">База данных и новый пользователь заведены.</font></h4>
<?}?>

<form name=Form action="index.php?act=admuser&" method="POST">

<table width=70% cellpadding=5 cellspacing=2>
<tr valign=top>
  <td colspan=2>
    <font size=-1>
    <p>Большинство хостинг-провайдеров при регистрации в MySQL выдают 
    пользователям доступ к персональной базе данных. При этом 
    сообщается также логин и пароль доступа. Логин чаще всего совпадает 
    с именем базы данных. Настоящий скрипт поможет вам создать
    пользователя на локальной машине и назначить ему такие же параметры, какие
    выдал вам хостинг-провайдер. Это сильно поможет при отладке Web-приложений.
    </p>
  </td>
</tr>
<tr bgcolor=EEEEEE valign=top>
  <td><nobr>Пароль администратора MySQL:</td>
  <td>
    <input type=password size=30 name=rootpass value="<?=@HtmlSpecialChars($rootpass)?>">
    <?if(@$eBadRootPass) {?>
      <br><font color=red size=2>Ошибка: <?=$eBadRootPass?>.
    <?}?>
  </td>
</tr>
<tr bgcolor=EEEEEE valign=top>
  <td>Имя базы данных:</td>
  <td>
    <input type=text size=30 name=db value="<?=@HtmlSpecialChars($db)?>">
    <?if(@$eBadDb) {?>
      <br><font color=red size=2>Ошибка: недопустимое имя базы данных.</font>
    <?}?>
    <?if(@$eDBExists) {?>
      <br><font color=red size=2>Ошибка: такая база данных уже есть.</font>
    <?}?>
  </td>
</tr>
<tr bgcolor=E5E5E5 valign=top>
  <td>Логин пользователя:</td>
  <td>
    <input type=text size=30 name=login value="<?=@HtmlSpecialChars($login)?>" onChange="chg=true;" onFocus="chg=true;">
    <?if(@$eBadUser) {?>
      <br><font color=red size=2>Ошибка: недопустимое имя пользователя.</font>
    <?}?>
    <?if(@$eSqlError) {?>
      <br><font color=red size=2>Ошибка SQL: <?=$eSqlError?>.</font>
    <?}?>
    <?if(@$eUserExists) {?>
      <br><font color=red size=2>Ошибка: такой пользователь уже есть.</font>
    <?}?>
  </td>
</tr>
<tr bgcolor=EEEEEE valign=top>
  <td>Пароль:</td>
  <td><input type=password size=30 name=password value="<?=@HtmlSpecialChars($password)?>"></td>
</tr>
<tr bgcolor=E5E5E5 valign=top>
  <td>...еще раз:</td>
  <td>
    <input type=password size=30 name=password1 value="<?=@HtmlSpecialChars($password1)?>">
    <?if(@$eBadPass) {?>
      <br><font color=red size=2>Ошибка: пароли не совпадают.
    <?}?>
  </td>
</tr>
<tr bgcolor=FFFFFF valign=top>
  <td>&nbsp;</td>
  <td><input type=submit name=doGo value="Создать БД и пользователя"></td>
</tr>
<tr valign=top>
  <td colspan=2>
    <font size=-1>
    <p><b>Примечание</b>: пароль администратора MySQL по умолчанию пустой.
    </p>
  </td>
</tr>
</table>
</form>


<script language=JavaScript>
<!--
var chg=document.Form.login.value!=document.Form.db.value;
function Sync() {
  var form=document.Form;
  if(!chg) {
    form.login.value=form.db.value;
    setTimeout("Sync()",100);
  }
}
Sync();
//-->
</script>
<?php
break;



}
?>
<?php
echo '<!-- end boby -->'."\n";
include 'foot.php';
?>