| Current Path : /var/www/element/data/www/greenpr.ru/bitrix/modules/main/admin/ |
| Current File : /var/www/element/data/www/greenpr.ru/bitrix/modules/main/admin/site_checker.php |
<?
##############################################
# Bitrix Site Manager #
# Copyright (c) 2002-2007 Bitrix #
# http://www.bitrixsoft.com #
# mailto:admin@bitrixsoft.com #
##############################################
@set_time_limit(10000);
ini_set("track_errors", "1");
//ignore_user_abort(true);
$message = null;
error_reporting(E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR|E_PARSE);
////////////////////////////////////////////////////////////////////////
////////// PARAMS //////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
$SYSTEM_min_avail_memory = 12; // Min & recomended memory in Mb
$SYSTEM_rec_avail_memory = 32;
$SYSTEM_min_avail_disk = 20; // Min disk size in Mb
$SYSTEM_min_avail_disk_tmp = 5; // Min tmp disk size in Mb
$PHP_vercheck_min = "4.3.9";
$PHP_vercheck_max = "";
$Apache_vercheck_min = "1.3.0";
$Apache_vercheck_max = "";
$IIS_vercheck_min = "5.0.0";
$IIS_vercheck_max = "";
$MySql_vercheck_min = "4.1.11";
$MySql_vercheck_max = "";
$Oracle_vercheck_min = "10.0";
$Oracle_vercheck_max = "";
$MSSQL_vercheck_min = "9.0";
$MSSQL_vercheck_max = "";
////////////////////////////////////////////////////////////////////////
////////// END PARAMS //////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/prolog.php");
define("HELP_FILE", "utilities/site_checker.php");
if(!$USER->CanDoOperation('view_other_settings'))
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
IncludeModuleLangFile(__FILE__);
@set_time_limit(10000);
ini_set("max_execution_time", "172800");
////////////////////////////////////////////////////////////////////////
////////// FUNCTIONS ///////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
if (!function_exists("ob_get_clean"))
{
function ob_get_clean()
{
$ob_contents = ob_get_contents();
ob_end_clean();
return $ob_contents;
}
}
function GetPHPSetting($val)
{
return ((ini_get($val) == "1") ? "ON" : "OFF");
}
function ShowResult($strRes, $strType = "OK")
{
if (strlen($strRes)>0)
{
if (strtoupper($strType) == "ERROR" || strtoupper($strType) == "E")
echo "<span style=\"color:red;\"><b>".$strRes."</b></span>";
elseif (strtoupper($strType) == "NOTE" || strtoupper($strType) == "N")
echo "<b>".$strRes."</b>";
else
echo "<span style=\"color:green;\"><b>".$strRes."</b></span>";
}
}
function CheckVersionMinimax($strCurver, $strMinver, $strMaxver)
{
$curver = explode(".", $strCurver); for ($i = 0; $i < 3; $i++) $curver[$i] = IntVal($curver[$i]);
$minver = explode(".", $strMinver); for ($i = 0; $i < 3; $i++) $minver[$i] = IntVal($minver[$i]);
$maxver = explode(".", $strMaxver); for ($i = 0; $i < 3; $i++) $maxver[$i] = IntVal($maxver[$i]);
if (($minver[0]>0 || $minver[1]>0 || $minver[2]>0)
&&
($curver[0]<$minver[0]
|| (($curver[0]==$minver[0]) && ($curver[1]<$minver[1]))
|| (($curver[0]==$minver[0]) && ($curver[1]==$minver[1]) && ($curver[2]<$minver[2]))
))
return false;
elseif (($maxver[0]>0 || $maxver[1]>0 || $maxver[2]>0)
&&
($curver[0]>$maxver[0]
|| (($curver[0]==$maxver[0]) && ($curver[1]>$maxver[1]))
|| (($curver[0]==$maxver[0]) && ($curver[1]==$maxver[1]) && ($curver[2]>=$maxver[2]))
))
return false;
else
return true;
}
function CheckGetModuleInfo($path)
{
include_once($path);
$arr = explode("/", $path);
$i = array_search("modules", $arr);
$class_name = $arr[$i+1];
return CModule::CreateModuleObject($class_name);
}
function CheckFiles()
{
if(!function_exists(RecursDiskAccessCheck))
{
function RecursDiskAccessCheck($start_dir, &$arError, $arFilter = array())
{
$iMaxDirs = 19;
if (count($arError)>$iMaxDirs)
return false;
for ($i = 0; $i < count($arFilter); $i++)
{
if (strlen($arFilter[$i])<=strlen($start_dir)
&& substr($start_dir, 0, strlen($arFilter[$i]))==$arFilter[$i])
{
return True;
}
}
$bIsWrite = (is_writeable($start_dir) ? "Y" : "N");
$bIsRead = (is_readable($start_dir) ? "Y" : "N");
if ($bIsWrite!="Y" || $bIsRead!="Y")
{
$arError[] = array($start_dir."/".$file, "Y", $bIsWrite, $bIsRead);
if (count($arError)>$iMaxDirs)
return false;
}
if ($handle = @opendir($start_dir))
{
while (($file = readdir($handle)) !== false)
{
if ($file == "." || $file == "..") continue;
if (is_dir($start_dir."/".$file))
{
RecursDiskAccessCheck($start_dir."/".$file, $arError, $arFilter);
if (count($arError)>$iMaxDirs)
return false;
}
else
{
$bIsWrite = (is_writeable($start_dir."/".$file) ? "Y" : "N");
$bIsRead = (is_readable($start_dir."/".$file) ? "Y" : "N");
if ($bIsWrite!="Y" || $bIsRead!="Y")
{
$arError[] = array($start_dir."/".$file, "N", $bIsWrite, $bIsRead);
if (count($arError)>$iMaxDirs)
return false;
}
}
}
@closedir($handle);
}
return True;
}
}
?><table cellpadding="0" cellspacing="0" border="0" width="100%" class="<?echo ($send_tiket!="Y")?"internal":"list-table"?>">
<tr class="<?echo ($send_tiket!="Y")?"heading":"head"?>">
<td align="center"><b><?=GetMessage("SC_PARAM")?></b></td>
<td align="center"><b><?=GetMessage("SC_VALUE")?></b></td>
</tr>
<tr>
<td valign="top"><?=GetMessage("SC_DISK_BITRIX")?> <i><?=$_SERVER["DOCUMENT_ROOT"]."/bitrix"?></i></td>
<td valign="top"><?
$arError = array();
$bResCheckAccess = RecursDiskAccessCheck($_SERVER["DOCUMENT_ROOT"]."/bitrix", $arError, array($_SERVER["DOCUMENT_ROOT"]."/upload"));
if (count($arError) > 0)
{
for ($i = 0; $i < count($arError); $i++)
{
echo ($arError[$i][1]=="Y") ? GetMessage("SC_CATALOG")." " : GetMessage("SC_FILE")." ";
echo substr($arError[$i][0], strlen($_SERVER["DOCUMENT_ROOT"]));
if ($arError[$i][2]!="Y")
ShowResult(" ".GetMessage("SC_CAN_NOT_WRITE"), "E");
if ($arError[$i][2]!="Y" && $arError[$i][3]!="Y")
echo " ".GetMessage("SC_AND");
if ($arError[$i][3]!="Y")
ShowResult(" ".GetMessage("SC_CAN_NOT_READ"), "E");
echo "<br>";
}
if (!$bResCheckAccess)
{
echo "<br>";
ShowResult(str_replace("#NUM#", count($arError), GetMessage("SC_DISK_MORE_20")), "E");
}
}
else
ShowResult(GetMessage("SC_DISK_AVAIL_READ_WRITE"), "O");
?></td>
</tr>
<tr>
<td valign="top"><?=GetMessage("SC_DISK_UPLOAD")?> <i><?=$_SERVER["DOCUMENT_ROOT"]."/upload"?></i></td>
<td valign="top"><?
$arError = array();
$bResCheckAccess = RecursDiskAccessCheck($_SERVER["DOCUMENT_ROOT"]."/upload", $arError, array($_SERVER["DOCUMENT_ROOT"]."/upload"));
if (count($arError) > 0)
{
for ($i = 0; $i < count($arError); $i++)
{
echo ($arError[$i][1]=="Y") ? GetMessage("SC_CATALOG")." " : GetMessage("SC_FILE")." ";
echo substr($arError[$i][0], strlen($_SERVER["DOCUMENT_ROOT"]));
if ($arError[$i][2]!="Y")
ShowResult(" ".GetMessage("SC_CAN_NOT_WRITE"), "E");
if ($arError[$i][2]!="Y" && $arError[$i][3]!="Y")
echo " ".GetMessage("SC_AND");
if ($arError[$i][3]!="Y")
ShowResult(" ".GetMessage("SC_CAN_NOT_READ"), "E");
echo "<br>";
}
if (!$bResCheckAccess)
{
echo "<br>";
ShowResult(str_replace("#NUM#", count($arError), GetMessage("SC_DISK_MORE_20")), "E");
}
}
else
ShowResult(GetMessage("SC_DISK_AVAIL_READ_WRITE1"), "O");
?></td>
</tr>
<tr>
<td valign="top"><?=GetMessage("SC_DISK_PUBLIC")?> <i><?=$_SERVER["DOCUMENT_ROOT"]?></i></td>
<td valign="top"><?
$arError = array();
$bResCheckAccess = RecursDiskAccessCheck($_SERVER["DOCUMENT_ROOT"]."/bitrix", $arError, array($_SERVER["DOCUMENT_ROOT"]."/upload"));
if (count($arError) > 0)
{
for ($i = 0; $i < count($arError); $i++)
{
echo ($arError[$i][1]=="Y") ? GetMessage("SC_CATALOG")." " : GetMessage("SC_FILE")." ";
echo substr($arError[$i][0], strlen($_SERVER["DOCUMENT_ROOT"]));
if ($arError[$i][2]!="Y")
ShowResult(" ".GetMessage("SC_CAN_NOT_WRITE"), "E");
if ($arError[$i][2]!="Y" && $arError[$i][3]!="Y")
echo " ".GetMessage("SC_AND");
if ($arError[$i][3]!="Y")
ShowResult(" ".GetMessage("SC_CAN_NOT_READ"), "E");
echo "<br>";
}
if (!$bResCheckAccess)
{
echo "<br>";
ShowResult(str_replace("#NUM#", count($arError), GetMessage("SC_DISK_MORE_20")), "E");
}
}
else
ShowResult(GetMessage("SC_DISK_AVAIL_READ_WRITE2"), "O");
?></td>
</tr>
</table>
<?
}
$aTabs = array(
array("DIV" => "edit1", "TAB" => GetMessage("SC_TAB_1"), "ICON" => "site_check", "TITLE" => GetMessage("SC_SUBTITLE_REQUIED")),
array("DIV" => "edit2", "TAB" => GetMessage("SC_TAB_2"), "ICON" => "site_check", "TITLE" => GetMessage("SC_SUBTITLE_DISK")),
array("DIV" => "edit3", "TAB" => GetMessage("SC_TAB_3"), "ICON" => "site_check", "TITLE" => GetMessage("SC_SUBTITLE_RECOMMEND")),
array("DIV" => "edit4", "TAB" => GetMessage("SC_TAB_4"), "ICON" => "site_check", "TITLE" => GetMessage("SC_SUBTITLE_SITE_MODULES")),
array("DIV" => "edit5", "TAB" => GetMessage("SC_TAB_5"), "ICON" => "site_check", "TITLE" => GetMessage("SC_TIK_TITLE")),
);
$tabControl = new CAdminTabControl("tabControl", $aTabs);
////////////////////////////////////////////////////////////////////////
////////// END FUNCTIONS ///////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
$APPLICATION->SetTitle(GetMessage("SC_TITLE"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
?>
<?
if ($send_tiket=="Y")
ob_start();
echo BeginNote();
echo GetMessage("SC_NOTES1");
echo EndNote();
?>
<?
if($send_tiket!="Y")
{
$tabControl->Begin();
$tabControl->BeginNextTab();
}
else
echo "<table cellspacing='0' cellpadding='5' border='0' width='100%'>";
?>
<tr>
<td colspan="2"><?echo ($send_tiket=="Y")?"<p>":"";?><?=GetMessage("SC_SUBTITLE_REQUIED_DESC")?><?echo ($send_tiket=="Y")?"</p>":"";?></td>
</tr>
<tr>
<td colspan="2">
<table cellpadding="0" cellspacing="0" border="0" width="100%" class="<?echo ($send_tiket!="Y")?"internal":"list-table"?>">
<tr class="<?echo ($send_tiket!="Y")?"heading":"head"?>">
<td align="center"><b><?=GetMessage("SC_PARAM")?></b></td>
<td align="center"><b><?=GetMessage("SC_REQUIED")?></b></td>
<td align="center"><b><?=GetMessage("SC_CURRENT")?></b></td>
</tr>
<?
$strSERVER_SOFTWARE = $_SERVER["SERVER_SOFTWARE"];
if (strlen($strSERVER_SOFTWARE)<=0)
$strSERVER_SOFTWARE = $_SERVER["SERVER_SIGNATURE"];
$strWebServer = "";
$strWebServerVersion = "";
$strSERVER_SOFTWARE = Trim($strSERVER_SOFTWARE);
if (preg_match("#^([a-zA-Z-]+).*?([\d]+\.[\d]+(\.[\d]+)?)#i", $strSERVER_SOFTWARE, $arSERVER_SOFTWARE))
{
$strWebServer = $arSERVER_SOFTWARE[1];
$strWebServerVersion = $arSERVER_SOFTWARE[2];
$vercheck_min = "";
$vercheck_max = "";
if (strtoupper($strWebServer)=="APACHE")
{
$vercheck_min = $Apache_vercheck_min;
$vercheck_max = $Apache_vercheck_max;
}
elseif (strtoupper($strWebServer)=="MICROSOFT-IIS")
{
$vercheck_min = $IIS_vercheck_min;
$vercheck_max = $IIS_vercheck_max;
}
}
?>
<tr>
<td valign="top"><?=str_replace("#SERVER#", ((strlen($strWebServer)>0) ? $strWebServer : GetMessage("SC_UNKNOWN")), GetMessage("SC_SERVER_VERS"))?></td>
<td valign="top"><?
if (strlen($vercheck_min)>0)
echo str_replace("#VER#", $vercheck_min, GetMessage("SC_VER_VILKA1"));
if (strlen($vercheck_min)>0 && strlen($vercheck_max)>0)
echo GetMessage("SC_VER_VILKA2");
if (strlen($vercheck_max)>0)
echo str_replace("#VER#", $vercheck_max, GetMessage("SC_VER_VILKA3"));
?></td>
<td valign="top"><?
if (strlen($strWebServerVersion)>0)
ShowResult($strWebServerVersion, ((CheckVersionMinimax($strWebServerVersion, $vercheck_min, $vercheck_max)) ? "O" : "E"));
else
ShowResult(GetMessage("SC_UNKNOWN1"), "E");
?></td>
</tr>
<?
if (strtolower($DB->type)=="oracle")
{
$vercheck_min = $Oracle_vercheck_min;
$vercheck_max = $Oracle_vercheck_max;
}
elseif (strtolower($DB->type)=="mssql")
{
$vercheck_min = $MSSQL_vercheck_min;
$vercheck_max = $MSSQL_vercheck_max;
}
else
{
$vercheck_min = $MySql_vercheck_min;
$vercheck_max = $MySql_vercheck_max;
}
?>
<tr>
<td valign="top"><?=str_replace("#DB#", $DB->type, GetMessage("SC_DB_VERS"))?></td>
<td valign="top"><?
if (strlen($vercheck_min)>0)
echo str_replace("#VER#", $vercheck_min, GetMessage("SC_VER_VILKA1"));
if (strlen($vercheck_min)>0 && strlen($vercheck_max)>0)
echo GetMessage("SC_VER_VILKA2");
if (strlen($vercheck_max)>0)
echo str_replace("#VER#", $vercheck_max, GetMessage("SC_VER_VILKA3"));
?> </td>
<td valign="top"><?
if ($version = $DB->GetVersion())
{
if (preg_match("#^([\d]+\.[\d]+(\.[\d]+)?)#i", $version, $arVers))
ShowResult($arVers[1], ((CheckVersionMinimax($arVers[1], $vercheck_min, $vercheck_max)) ? "O" : "E"));
else
ShowResult(GetMessage("SC_UNKNOWN1"), "E");
}
else
ShowResult(GetMessage("SC_ERR_QUERY_VERS"), "E");
?></td>
</tr>
<tr>
<td valign="top"><?=GetMessage("SC_PHP_VERS")?></td>
<td valign="top"><?
if (strlen($PHP_vercheck_min)>0)
echo str_replace("#VER#", $PHP_vercheck_min, GetMessage("SC_VER_VILKA1"));
if (strlen($PHP_vercheck_min)>0 && strlen($PHP_vercheck_max)>0)
echo GetMessage("SC_VER_VILKA2");
if (strlen($PHP_vercheck_max)>0)
echo str_replace("#VER#", $PHP_vercheck_max, GetMessage("SC_VER_VILKA3"));
?> </td>
<td valign="top"><?ShowResult(phpversion(), (!CheckVersionMinimax(phpversion(), $PHP_vercheck_min, $PHP_vercheck_max) ? "E" : "O"))?></td>
</tr>
<tr>
<td colspan="3"><b><?=GetMessage("SC_PHP_SETTINGS")?></b></td>
</tr>
<tr>
<td valign="top"> - safe mode</td>
<td valign="top"><?=GetMessage("SC_TURN_OFF")?></td>
<td valign="top"><?=((GetPHPSetting("safe_mode")=="ON") ? ShowResult(GetMessage("SC_TURN_ON"), "E") : ShowResult(GetMessage("SC_TURN_OFF"), "O"))?></td>
</tr>
<tr>
<td valign="top"> - <?=GetMessage("SC_SESS_PATH")?></td>
<td valign="top"><?=GetMessage("SC_SETTED")?></td>
<td valign="top"><?
$sp = session_save_path();
// $sp = ini_get('session.save_path');
if (strlen($sp)>0)
{
ShowResult($sp, "O");
echo " ";
if (file_exists($sp))
{
if (is_writable($sp))
ShowResult(GetMessage("SC_CAN_WRITE"), "O");
else
ShowResult(GetMessage("SC_CAN_NOT_WRITE"), "E");
}
else
ShowResult(GetMessage("SC_NOT_EXISTS"), "E");
}
else
ShowResult(GetMessage("SC_NOT_SETTED"), "E");
?></td>
</tr>
<tr>
<td colspan="3"><b><?=GetMessage("SC_REQUIED_PHP_MODS")?></b></td>
</tr>
<tr>
<td valign="top"> - <a title="<?=GetMessage("SC_EXTINSION_VIEW")?>" href="http://www.php.net/manual/en/ref.xml.php" target="_blank"><?=GetMessage("SC_MOD_XML")?></a></td>
<td valign="top"><?=GetMessage("SC_SETTED")?></td>
<td valign="top"><?=((extension_loaded('xml') && function_exists("xml_parser_create")) ? ShowResult(GetMessage("SC_SETTED"), "O") : ShowResult(GetMessage("SC_NOT_SETTED"), "E"))?></td>
</tr>
<?if (strtolower($DB->type)=="oracle"):?>
<tr>
<td valign="top"> - <a title="<?=GetMessage("SC_EXTINSION_VIEW")?>" href="http://www.php.net/manual/en/ref.oci8.php" target="_blank"><?=GetMessage("SC_MOD_ORACLE")?></a></td>
<td valign="top"><?=GetMessage("SC_SETTED")?></td>
<td valign="top"><?=(function_exists("OCILogon") ? ShowResult(GetMessage("SC_SETTED"), "O") : ShowResult(GetMessage("SC_NOT_SETTED"), "E"))?></td>
</tr>
<?elseif (strtolower($DB->type)=="mysql"):?>
<tr>
<td valign="top"> - <a title="<?=GetMessage("SC_EXTINSION_VIEW")?>" href="http://www.php.net/manual/en/ref.mysql.php" target="_blank"><?=GetMessage("SC_MOD_MYSQL")?></a></td>
<td valign="top"><?=GetMessage("SC_SETTED")?></td>
<td valign="top"><?=(function_exists("mysql_connect") ? ShowResult(GetMessage("SC_SETTED"), "O") : ShowResult(GetMessage("SC_NOT_SETTED"), "E"))?></td>
</tr>
<?endif;?>
<tr>
<td valign="top"> - <a title="<?=GetMessage("SC_EXTINSION_VIEW")?>" href="http://www.php.net/manual/en/ref.regex.php" target="_blank"><?=GetMessage("SC_MOD_POSIX_REG")?></a></td>
<td valign="top"><?=GetMessage("SC_SETTED")?></td>
<td valign="top"><?=(function_exists("eregi") ? ShowResult(GetMessage("SC_SETTED"), "O") : ShowResult(GetMessage("SC_NOT_SETTED"), "E"))?></td>
</tr>
<tr>
<td valign="top"> - <a title="<?=GetMessage("SC_EXTINSION_VIEW")?>" href="http://www.php.net/manual/en/ref.pcre.php" target="_blank"><?=GetMessage("SC_MOD_PERL_REG")?></a></td>
<td valign="top"><?=GetMessage("SC_SETTED")?></td>
<td valign="top"><?=(function_exists("preg_match") ? ShowResult(GetMessage("SC_SETTED"), "O") : ShowResult(GetMessage("SC_NOT_SETTED"), "E"))?></td>
</tr>
<tr>
<td valign="top"> - <a title="<?=GetMessage("SC_EXTINSION_VIEW")?>" href="http://ru.php.net/manual/en/function.imagettftext.php" target="_blank">FreeType library</a></td>
<td valign="top"><?=GetMessage("SC_SETTED")?></td>
<td valign="top"><?=(function_exists("imagettftext") ? ShowResult(GetMessage("SC_SETTED"), "O") : ShowResult(GetMessage("SC_NOT_SETTED"), "E"))?></td>
</tr>
</table>
</td>
</tr>
<?flush();
if($send_tiket!="Y")
{
$tabControl->BeginNextTab();?>
<tr>
<td colspan="2"><?echo GetMessage("SC_SUBTITLE_DISK_DESC");?></td>
</tr>
<tr>
<td colspan="2"><?if($check_files=="Y" && check_bitrix_sessid())
CheckFiles();
else{
echo CAdminMessage::ShowMessage(Array("MESSAGE"=>GetMessage("SC_CHECK_FILES_ATTENTION"), "TYPE"=>"ERROR","DETAILS"=>GetMessage("SC_CHECK_FILES_WARNING")));
?><a href="<?echo $APPLICATION->GetCurPageParam("check_files=Y&tabControl_active_tab=edit2&".bitrix_sessid_get(), array("check_files", "tabControl_active_tab", "sessid"));?>" title="<?=GetMessage("SC_CHECK_FILES_TITLE")?>"><?=GetMessage("SC_CHECK_FILES")?></a>
<?}?></td>
</tr>
<?
$tabControl->BeginNextTab();
}
?>
<tr>
<td colspan="2"><?echo ($send_tiket=="Y")?"<p>":"";?><?=GetMessage("SC_SUBTITLE_RECOMMEND_DESC")?><?echo ($send_tiket=="Y")?"</p>":"";?></td>
</tr>
<tr>
<td colspan="2">
<table cellpadding="0" cellspacing="0" border="0" width="100%" class="<?echo ($send_tiket!="Y")?"internal":"list-table"?>">
<tr class="<?echo ($send_tiket!="Y")?"heading":"head"?>">
<td align="center"><b><?=GetMessage("SC_PARAM")?></b></td>
<td align="center"><b><?=GetMessage("SC_RECOMMEND")?></b></td>
<td align="center"><b><?=GetMessage("SC_CURRENT")?></b></td>
</tr>
<?
$Update_server_url = COption::GetOptionString("main", "update_site", "www.bitrixsoft.com");
$Update_server_port = 80;
?>
<tr>
<td valign="top"><?=GetMessage("SC_UPDATE_ACCESS")?> <i><?=$Update_server_url?></i></td>
<td valign="top"><?=GetMessage("SC_HAVE")?></td>
<td valign="top"><?
$FP = @fsockopen($Update_server_url, IntVal($Update_server_port), $errno, $errstr, 120);
if ($FP)
{
$strRequest = "POST /bitrix/updates/bit_sysserver.php HTTP/1.0\r\n";
$strRequest.= "User-Agent: BitrixSMUpdater\r\n";
$strRequest.= "Accept: */*\r\n";
$strRequest.= "Host: $Update_server_url\r\n";
$strRequest.= "Accept-Language: en\r\n";
$strRequest.= "Content-type: application/x-www-form-urlencoded\r\n";
$strRequest.= "Content-length: 0\r\n\r\n";
$strRequest.= "\r\n";
fputs($FP, $strRequest);
while (($line = fgets($FP, 4096)) && $line!="\r\n");
$content = "";
while ($line = fread($FP, 4096))
$content .= $line;
fclose($FP);
if (strlen($content)<=0)
ShowResult(GetMessage("SC_UPDATE_EMPTY"), "E");
else
ShowResult(GetMessage("SC_UPDATE_SUCCESS"), "O");
}
else
ShowResult(GetMessage("SC_UPDATE_ERROR").": [".$errno."] ".$errstr, "E");
?></td>
</tr>
<tr>
<td valign="top"><?=GetMessage("SC_AVAIL_DISK_SPACE")?></td>
<td valign="top"><?
if (IntVal($SYSTEM_min_avail_disk)>0)
echo str_replace("#SIZE#", $SYSTEM_min_avail_disk, GetMessage("SC_AVAIL_DISK_SPACE_SIZE"));
?> </td>
<td valign="top"><?
$real_avail_disk = @disk_free_space($_SERVER["DOCUMENT_ROOT"]);
$real_avail_disk = $real_avail_disk * 1.0 / 1000000.0;
ShowResult(Round($real_avail_disk, 1)." Mb", (($real_avail_disk>$SYSTEM_min_avail_disk) ? "O" : "E" ));
?></td>
</tr>
<?
$tmp_folder = ini_get("upload_tmp_dir");
if (strlen($tmp_folder)>0 && file_exists($tmp_folder))
{
?>
<tr>
<td valign="top"><?=GetMessage("SC_AVAIL_DISK_SPACE_TMP")?> <i><?=$tmp_folder?></i></td>
<td valign="top"><?
if (IntVal($SYSTEM_min_avail_disk_tmp)>0)
echo str_replace("#SIZE#", $SYSTEM_min_avail_disk_tmp, GetMessage("SC_AVAIL_DISK_SPACE_SIZE"));
?> </td>
<td valign="top"><?
$real_avail_disk = @disk_free_space($tmp_folder);
$real_avail_disk = $real_avail_disk * 1.0 / 1000000.0;
ShowResult(Round($real_avail_disk, 1)." Mb", (($real_avail_disk>$SYSTEM_min_avail_disk_tmp) ? "O" : "E" ));
?></td>
</tr>
<?
}
?>
<tr>
<td colspan="3"><b><?=GetMessage("SC_RECOM_PHP_SETTINGS")?></b></td>
</tr>
<tr>
<td valign="top"> - <?=GetMessage("SC_AVAIL_MEMORY")?></td>
<td valign="top"><?
if (IntVal($SYSTEM_min_avail_memory)>0)
echo str_replace("#SIZE#", $SYSTEM_min_avail_memory, GetMessage("SC_AVAIL_MEMORY_MIN"));
if (IntVal($SYSTEM_min_avail_memory)>0 && IntVal($SYSTEM_rec_avail_memory)>0)
echo ", ";
if (IntVal($SYSTEM_rec_avail_memory)>0)
echo str_replace("#SIZE#", $SYSTEM_rec_avail_memory, GetMessage("SC_AVAIL_MEMORY_REC"));
?></td>
<td valign="top"><?
$memory_limit = ini_get('memory_limit');
if (!$memory_limit || strlen($memory_limit)<=0)
$memory_limit = get_cfg_var('memory_limit');
$memory_limit = IntVal(Trim($memory_limit));
echo (($memory_limit < $SYSTEM_min_avail_memory) ? ShowResult($memory_limit." Mb", "E") : ShowResult($memory_limit." Mb", "O") );
?></td>
</tr>
<tr>
<td valign="top"> - <?=GetMessage("SC_ALLOW_UPLOAD")?> (file_uploads)</td>
<td valign="top"><?=GetMessage("SC_TURN_ON1")?></td>
<td valign="top"><?
if (GetPHPSetting("file_uploads")=="ON")
{
ShowResult(GetMessage("SC_TURN_ON1"), "O");
echo ", ";
$sp = ini_get("upload_tmp_dir");
if (strlen($sp)>0)
{
echo GetMessage("SC_TEMP_FOLDER")." <b>".$sp."</b> ";
if (file_exists($sp))
{
if (is_writable($sp))
ShowResult(GetMessage("SC_CAN_WRITE1"), "O");
else
ShowResult(GetMessage("SC_CAN_NOT_WRITE1"), "E");
}
else
ShowResult(GetMessage("SC_NOT_EXISTS"), "E");
}
else
ShowResult(GetMessage("SC_NO_TEMP_FOLDER"), "E");
}
else
ShowResult(GetMessage("SC_TURN_OFF1"), "E");
?></td>
</tr>
<tr>
<td valign="top"> - <?=GetMessage("SC_SHOW_ERRORS")?> (display_errors)</td>
<td valign="top"><?=GetMessage("SC_TURN_ON1")?></td>
<td valign="top"><?= ((GetPHPSetting("display_errors")=="ON") ? ShowResult(GetMessage("SC_TURN_ON1"), "O") : ShowResult(GetMessage("SC_TURN_OFF1"), "E"))?></td>
</tr>
<tr>
<td colspan="3"><b><?=GetMessage("SC_RECOM_PHP_MODULES")?></b></td>
</tr>
<tr>
<td valign="top"> - <a title="<?=GetMessage("SC_EXTINSION_VIEW")?>" href="http://www.php.net/manual/en/ref.zlib.php" target="_blank">Zlib Compression</a></td>
<td valign="top"><?=GetMessage("SC_SETTED")?></td>
<td valign="top"><?= ((extension_loaded('zlib') && function_exists("gzcompress")) ? ShowResult(GetMessage("SC_SETTED"), "O") : ShowResult(GetMessage("SC_NOT_SETTED"), "E") )?></td>
</tr>
<tr>
<td valign="top"> - <a title="<?=GetMessage("SC_EXTINSION_VIEW")?>" href="http://www.php.net/manual/en/ref.image.php" target="_blank"><?=GetMessage("SC_MOD_GD")?></a></td>
<td valign="top"><?=GetMessage("SC_SETTED")?></td>
<td valign="top"><?= (function_exists("imagecreate") ? ShowResult(GetMessage("SC_SETTED"), "O") : ShowResult(GetMessage("SC_NOT_SETTED"), "E"))?></td>
</tr>
</table></td>
</tr>
<?
flush();
if($send_tiket!="Y")
$tabControl->BeginNextTab();
?>
<tr>
<td colspan="2"><?echo ($send_tiket=="Y")?"<p>":"";?><?=GetMessage("SC_SUBTITLE_SITE_MODULES_DESC")?><?echo ($send_tiket=="Y")?"</p>":"";?></td>
</tr>
<tr>
<td colspan="2">
<table cellpadding="0" cellspacing="0" border="0" width="100%" class="<?echo ($send_tiket!="Y")?"internal":"list-table"?>">
<tr class="<?echo ($send_tiket!="Y")?"heading":"head"?>">
<td><b><?=GetMessage("SC_SITE_MODULE")?></b></td>
<td><b><?=GetMessage("SC_SETTED")?></b></td>
<td><b><?=GetMessage("SC_SITE_MOD_VERS")?></b></td>
</tr>
<?
if ($handle = @opendir($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules"))
{
while (false !== ($dir = readdir($handle)))
{
if (is_dir($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$dir)
&& $dir!="." && $dir!="..")
{
$strModuleID = $dir;
$strModuleName = "";
$strModuleVers = "";
$strModuleInst = "";
$strModuleErrr = "";
if ($dir=="main")
{
$strModuleName = "Main";
$strModuleVers = SM_VERSION;
$strModuleInst = "Y";
}
else
{
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$strModuleID."/install/index.php"))
{
$info = CheckGetModuleInfo($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/".$strModuleID."/install/index.php");
$strModuleName = $info->MODULE_NAME;
if ($info->MODULE_ID != $strModuleID)
$strModuleErrr .= GetMessage("SC_ERROR_MOD_DESCR").". ";
elseif (!isset($info->MODULE_VERSION) || strlen($info->MODULE_VERSION)<=0)
$strModuleErrr .= GetMessage("SC_ERROR_MOD_VERS").". ";
else
$strModuleVers = $info->MODULE_VERSION;
if ($info->IsInstalled())
$strModuleInst = "Y";
else
$strModuleInst = "N";
}
else
$strModuleErrr .= GetMessage("SC_ERROR_MOD_NOT").". ";
}
?>
<tr>
<td valign="top"><?= $strModuleName ?> (<?=$strModuleID?>)</td>
<td valign="top"><?
if ($strModuleInst=="Y")
echo GetMessage("SC_INSTALLED");
elseif ($strModuleInst=="N")
echo GetMessage("SC_NOT_INSTALLED");
else
echo " ";
?></td>
<td valign="top"><?
if (strlen($strModuleErrr)>0)
ShowResult($strModuleErrr, "E");
if (strlen($strModuleVers)>0)
ShowResult($strModuleVers, "N");
?></td>
</tr>
<?
}
}
closedir($handle);
}
?>
</table></td>
</tr>
<?flush();?>
<?
if ($send_tiket=="Y")
{
echo "</table>";
$strMailCheckerPage =
"<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">".
"<link href=\"http://mysql.smn/bitrix/themes/.default/adminstyles.css\" rel=\"stylesheet\" type=\"text/css\">".
"<title>".GetMessage("SC_TITLE")."</title>".
"</head><body>".
ob_get_contents().
"</body></html>";
ob_end_flush();
}
if($send_tiket!="Y")
$tabControl->BeginNextTab();
if(!isset($strTiketError))
$strTiketError = "";
if ($send_tiket=="Y")
{
if (strlen($tiket_email)<=0)
{
$strTiketError .= GetMessage("SC_TIK_NO_EMAIL").". ";
$aMsg[] = array("id"=>"tiket_email", "text"=>GetMessage("SC_TIK_NO_EMAIL"));
}
elseif (!check_email($tiket_email))
{
$strTiketError .= GetMessage("SC_TIK_EMAIL_ERR").". ";
$aMsg[] = array("id"=>"tiket_email", "text"=>GetMessage("SC_TIK_EMAIL_ERR"));
}
if (strlen($tiket_text)<=0)
{
$strTiketError .= GetMessage("SC_TIK_NO_DESCR").". ";
$aMsg[] = array("id"=>"tiket_text", "text"=>GetMessage("SC_TIK_NO_DESCR"));
}
if (strlen($strTiketError)<=0)
{
// E-Mail address
if (defined("THIS_SITE_SUPPORT_EMAIL") && strlen(THIS_SITE_SUPPORT_EMAIL)>0)
$strMailEMailTo = THIS_SITE_SUPPORT_EMAIL;
else
{
if ($lang=="ru")
$strMailEMailTo = "support@bitrixsoft.ru";
else
$strMailEMailTo = "support@bitrixsoft.com";
}
if (defined("THIS_SITE_SUPPORT_CHARSET") && strlen(THIS_SITE_SUPPORT_CHARSET)>0)
$sCharset = THIS_SITE_SUPPORT_CHARSET;
else
{
if(defined('BX_UTF'))
$sCharset = "UTF-8";
elseif($lang=="ru")
$sCharset = "windows-1251";
else
$sCharset = "iso-8859-1";
}
// Subject
$strMailSubject = "";
if (false && strlen($tiket_number)>0)
{
$tiket_number = preg_replace("/[\D]+/i", "", $tiket_number);
if ($lang=="ru")
$strMailSubject .= "[TID#".$tiket_number."] www.bitrixsoft.ru: ".GetMessage("SC_RUS_L");
else
$strMailSubject .= "[TID#".$tiket_number."] www.bitrixsoft.com: Changes in request";
}
else
{
if ($lang=="ru")
$strMailSubject = GetMessage("SC_RUS_L1")." ".$_SERVER["SERVER_NAME"];
else
$strMailSubject = "Request from ".$_SERVER["SERVER_NAME"];
}
// Body
$sMimeBoundary = '==Multipart_Boundary_X'.md5(time()).'X';
$strMailHeader =
"From: $tiket_email\n".
"Reply-To: $tiket_email\n".
"X-Priority: 3 (Normal)\n".
"Content-Transfer-Encoding: 8bit\n".
"Content-Type: multipart/mixed;\n boundary=\"".$sMimeBoundary."\"\n";
"MIME-Version: 1.0";
$strMailText = "";
// Body text
$strMailText .= "--".$sMimeBoundary."\n";
$strMailText .= "Content-Type: text/plain; charset=".$sCharset."\nContent-Transfer-Encoding: 8bit\n\n";
$strMailText .= rtrim($tiket_text);
if (strlen($_REQUEST["last_error_query"])>0)
$strMailText .= "\n\nLast query error:\n".$_REQUEST["last_error_query"];
$strMailText .= "\n\nLicense key: ".(LICENSE_KEY == "DEMO"? "DEMO" : md5("BITRIX".LICENSE_KEY."LICENCE"));
$strMailText .= "\n\nVersion: ".(defined("DEMO") ? "DEMO" : (defined("ENCODE") ? "ENCODE" : "FULL"));
$strMailText .= "\n\n\$_SERVER array content:\n<code>".print_r($_SERVER, True);
$strMailText .= "</code>\n\n\$_ENV array content:\n<code>".print_r($_ENV, True);
$strMailText .= "</code>\n\nCurrent time: ".date("Y-m-d H:i:s");
$strMailText .= "\n";
// Body attachment 1
if ($tiket_phpinfo=="Y")
{
ob_start();
phpinfo();
$PHPinfo = ob_get_clean();
$PHPinfo = chunk_split(base64_encode($PHPinfo));
$strMailText .= "--".$sMimeBoundary."\n";
$strMailText .= "Content-Type: text/html;\n name=\"phpinfo.html\"\n";
$strMailText .= "Content-Transfer-Encoding: base64\n";
$strMailText .= "Content-Disposition: attachment;\n filename=\"phpinfo.html\"\n\n";
$strMailText .= $PHPinfo;
}
// Body attachment 2
$strMailCheckerPage = chunk_split(base64_encode($strMailCheckerPage));
$strMailText .= "--".$sMimeBoundary."\n";
$strMailText .= "Content-Type: text/html;\n name=\"data.html\"\n";
$strMailText .= "Content-Transfer-Encoding: base64\n";
$strMailText .= "Content-Disposition: attachment;\n filename=\"data.html\"\n\n";
$strMailText .= $strMailCheckerPage;
$strMailText .= "--".$sMimeBoundary."--\n";
// Mail
$php_errormsg = "";
if (bxmail($strMailEMailTo, $strMailSubject, $strMailText, $strMailHeader, COption::GetOptionString("main", "mail_additional_parameters", "")))
{
LocalRedirect("/bitrix/admin/site_checker.php?lang=".LANGUAGE_ID."&ticket_sent=Y&tabControl_active_tab=edit5&tiket_email=".$tiket_email);
}
else
{
$strTiketError .= GetMessage("SC_TIK_SEND_ERROR");
if (strlen($php_errormsg)>0)
$strTiketError .= ": ".$php_errormsg;
$strTiketError .= ". ";
}
}
LocalRedirect("/bitrix/admin/site_checker.php?lang=".LANGUAGE_ID."&tabControl_active_tab=edit5&strTiketError=".urlencode($strTiketError)."&ticket_sent=N&tiket_text=".urlencode($tiket_text)."&tiket_email=".urlencode($tiket_email));
}
?>
<tr><td colspan="2"><?
if(isset($ticket_sent))
{
if(!empty($aMsg))
{
$e = new CAdminException($aMsg);
$APPLICATION->ThrowException($e);
if($e = $APPLICATION->GetException())
{
$message = new CAdminMessage(GetMessage("SC_ERROR"), $e);
if($message)
echo $message->Show();
}
}
if(strlen($strTiketError)>0 && !$message)
CAdminMessage::ShowMessage($strTiketError);
elseif(!$message)
CAdminMessage::ShowNote(str_replace("#EMAIL#", $tiket_email, GetMessage("SC_TIK_SEND_SUCCESS")));
}
?></td>
</tr>
<form method="POST" action="site_checker.php" name="fticket">
<input type="hidden" name="tabControl_active_tab" value="edit5">
<?if(false):?>
<tr>
<td valign="top"><?=GetMessage("SC_TIK_NUMBER")?> <sup>1</sup></td>
<td valign="top"><input type="text" name="tiket_number" value="<?= htmlspecialchars($tiket_number)?>" size="10"></td>
</tr>
<?endif?>
<tr>
<td valign="top"><span class="required">*</span><?=GetMessage("SC_TIK_EMAIL")?><sup>2</sup></td>
<td valign="top"><?
if (strlen($tiket_email)<=0)
$tiket_email = COption::GetOptionString("main", "email_from", "admin@".$SERVER_NAME);?>
<input type="text" name="tiket_email" value="<?= htmlspecialchars($tiket_email)?>" size="30"></td>
</tr>
<tr>
<td valign="top"><span class="required">*</span><?=GetMessage("SC_TIK_DESCR")?><br>
<small><?=GetMessage("SC_TIK_DESCR_DESCR")?></small></td>
<td valign="top"><textarea name="tiket_text" rows="3" cols="40"><?= htmlspecialchars($tiket_text)?></textarea></td>
</tr>
<tr>
<td valign="top"><label for="tiket_phpinfo"><?=GetMessage("SC_TIK_ADD_PHPINFO")?></label></td>
<td valign="top"><input type="checkbox" id="tiket_phpinfo" name="tiket_phpinfo" value="Y" checked></td>
</tr>
<?if (strlen($_REQUEST["last_error_query"])>0):?>
<tr>
<td valign="top"><?=GetMessage("SC_TIK_LAST_ERROR")?></td>
<td valign="top"><?=GetMessage("SC_TIK_LAST_ERROR_ADD")?>
<input type="hidden" name="last_error_query" value="<?= htmlspecialchars($_REQUEST["last_error_query"])?>"></td>
</tr>
<?endif;?>
<tr>
<td colspan="2" align="center"><input type="hidden" name="send_tiket" value="Y">
<input type="submit" value="<?=GetMessage("SC_TIK_SEND_MESS")?>"></td>
</tr>
</form>
<tr>
<td colspan="2">
<?echo BeginNote();?>
<?if(false):?> <sup>1</sup> <?=GetMessage("SC_TIK_HELP1")?><br><?endif?>
<sup>2</sup> <?=GetMessage("SC_TIK_HELP2")?>
<?echo EndNote();?>
</td>
</tr>
<?
//$tabControl->Buttons();
$tabControl -> End();
$tabControl->ShowWarnings("fticket", $message);
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");?>