<?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&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> </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';
?>