header("Content-type: text/html; charset=cp1251");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Expires: 0");
header("Pragma: public");
ob_implicit_flush(true);
set_time_limit(1800);
$strAction = $_REQUEST["action"];
if ($strAction!="LOAD" && $strAction!="UNPACK" && $strAction!="LOG")
$strAction = "LIST";
if ($strAction=="LOAD" && (!isset($_REQUEST["url"]) || strlen($_REQUEST["url"])<=0))
$strAction = "LIST";
if ($strAction=="UNPACK" && (!isset($_REQUEST["filename"]) || strlen($_REQUEST["filename"])<=0))
$strAction = "LIST";
$lang = "en";
$this_script_name = basename(__FILE__);
$MESS = array();
if ($lang=="ru")
{
$MESS["LOADER_LICENSE_KEY"] = "лицензионный ключ";
$MESS["LOADER_TITLE"] = "Загрузка продукта \"1С-Битрикс: Управление сайтом 6.5\"";
$MESS["LOADER_SUBTITLE1"] = "Загрузка продукта";
$MESS["LOADER_SUBTITLE2"] = "1С-Битрикс: Управление сайтом 6.5";
$MESS["LOADER_MENU_LIST"] = "Выбор дистрибутива";
$MESS["LOADER_MENU_LOAD"] = "Загрузка дистрибутива с сервера";
$MESS["LOADER_MENU_UNPACK"] = "Распаковка дистрибутива";
$MESS["LOADER_TECHSUPPORT"] = "При возникновении проблем
с установкой продукта
"1С-Битрикс: Управление сайтом"
обращайтесь в систему техподдержки
компании "Битрикс"";
$MESS["LOADER_TITLE_LIST"] = "Выбор дистрибутива";
$MESS["LOADER_TITLE_LOAD"] = "Загрузка дистрибутива на сайт";
$MESS["LOADER_TITLE_UNPACK"] = "Распаковка дистрибутива";
$MESS["LOADER_TITLE_LOG"] = "Отчет по загрузке";
$MESS["LOADER_SAFE_MODE_ERR"] = "Внимание! PHP на вашем сайте работает в Safe Mode. Установка продукта в автоматическом режиме невозможна. Пожалуйста, обратитесь в службу технической поддержки для получения дополнительной информации.";
$MESS["LOADER_NO_PERMS_ERR"] = "Внимание! PHP не имеет прав на запись в корневую папку #DIR# вашего сайта. Загрузка продукта может оказаться невозможной. Пожалуйста, установите необходимые права на корневую папку вашего сайта или обратитесь к администраторам вашего хостинга.";
$MESS["LOADER_EXISTS_ERR"] = "Внимание! На сайте найдена распакованая копия продукта \"1С-Битрикс: Управление сайтом\". Вы должны удалить эту копию до загрузки и установки новой копии. В противном случае загрузчик и / или инсталлятор продукта могут работать некорректно.";
$MESS["LOADER_IS_DISTR"] = "На сайте найдены загруженые дистрибутивы. Нажмите на название любого из дистрибутивов для его распаковки:";
$MESS["LOADER_OVERWRITE"] = "Внимание! Существующие на сайте файлы могут быть перезаписаны файлами из дистрибутива.";
$MESS["LOADER_IS_DISTR_PART"] = "На сайте найдены недогруженные дистрибутивы. Нажмите на название любого из недогруженных дистрибутивов для полной загрузки:";
$MESS["LOADER_NEW_LOAD_TITLE"] = "Загрузить с сайта http://www.1c-bitrix.ru новый дистрибутив";
$MESS["LOADER_NEW_ED"] = "редакция дистрибутива";
$MESS["LOADER_NEW_AUTO"] = "автоматически запустить распаковку после загрузки";
$MESS["LOADER_NEW_STEPS"] = "загружать по шагам с шагом";
$MESS["LOADER_NEW_STEPS0"] = "неограниченно долгим";
$MESS["LOADER_NEW_STEPS30"] = "не более 30 секунд";
$MESS["LOADER_NEW_STEPS60"] = "не более 60 секунд";
$MESS["LOADER_NEW_STEPS120"] = "не более 120 секунд";
$MESS["LOADER_NEW_STEPS180"] = "не более 180 секунд";
$MESS["LOADER_NEW_STEPS240"] = "не более 240 секунд";
$MESS["LOADER_NEW_LOAD"] = "Загрузить";
$MESS["LOADER_DESCR"] = "Этот скрипт предназначен для загрузки дистрибутива в исходных кодах \"1С-Битрикс: Управление сайтом\" с сайта www.1c-bitrix.ru непосредственно на ваш сайт, а так же для распаковки дистрибутива на вашем сайте.
Загрузите этот скрипт в корневую папку вашего сайта и откройте его в браузере (введите в адресной строке браузера http://<ваш сайт>/".$this_script_name.").";
$MESS["LOADER_BACK_2LIST"] = "Вернуться в список дистрибутивов";
$MESS["LOADER_LOG_ERRORS"] = "Произошли следующие ошибки:";
$MESS["LOADER_NO_LOG"] = "Log-файл не найден";
$MESS["LOADER_BOTTOM_NOTE1"] = "Внимание! По окончании установки продукта обязательно удалите скрипт /".$this_script_name." с вашего сайта. Доступ постороннего человека к этому скрипту может повлечь за собой нарушение работы вашего сайта.";
$MESS["LOADER_BOTTOM_NOTE2"] = "Внимание! Этот скрипт является beta-версией загрузчика. Если вам не удалось загрузить продукт с помощью этого скрипта, то вы можете скачать любой из стандартных дистрибутивов на сайте www.1c-bitrix.ru. Пожалуйста, сообщайте о проблемах, связанных с этим скриптом, по адресу support@1c-bitrix.ru";
$MESS["LOADER_KB"] = "кб";
$MESS["LOADER_LOAD_QUERY_SERVER"] = "Запрашиваю сервер...";
$MESS["LOADER_LOAD_QUERY_DISTR"] = "Запрашиваю дистрибутив #DISTR#";
$MESS["LOADER_LOAD_CONN2HOST"] = "Открываю соединение к #HOST#...";
$MESS["LOADER_LOAD_NO_CONN2HOST"] = "Не могу соединиться с #HOST#:";
$MESS["LOADER_LOAD_QUERY_FILE"] = "Запрашиваю файл...";
$MESS["LOADER_LOAD_WAIT"] = "Ожидаю ответ...";
$MESS["LOADER_LOAD_SERVER_ANSWER"] = "Ошибка загрузки. Сервер ответил: #ANS#";
$MESS["LOADER_LOAD_SERVER_ANSWER1"] = "Ошибка загрузки. У вас нет прав на доступ к этому дистрибутиву. Сервер ответил: #ANS#";
$MESS["LOADER_LOAD_NEED_RELOAD"] = "Докачка дистрибутива невозможна. Начинаю качать заново.";
$MESS["LOADER_LOAD_NO_WRITE2FILE"] = "Не могу открыть файл #FILE# на запись";
$MESS["LOADER_LOAD_LOAD_DISTR"] = "Загружаю дистрибутив #DISTR#";
$MESS["LOADER_LOAD_ERR_SIZE"] = "Ошибка размера файла";
$MESS["LOADER_LOAD_ERR_RENAME"] = "Не могу переименовать файл #FILE1# в файл #FILE2#";
$MESS["LOADER_LOAD_CANT_OPEN_WRITE"] = "Не могу открыть файл #FILE# на запись";
$MESS["LOADER_LOAD_CANT_OPEN_READ"] = "Не могу открыть файл #FILE# на чтение";
$MESS["LOADER_LOAD_LOADING"] = "Загружаю файл... дождитесь окончания загрузки...";
$MESS["LOADER_LOAD_FILE_SAVED"] = "Файл сохранен: #FILE# [#SIZE# байт]";
$MESS["LOADER_UNPACK_ACTION"] = "Распаковываю дистрибутив... дождитесь окончания распаковки...";
$MESS["LOADER_UNPACK_UNKNOWN"] = "Неизвестная ошибка. Повторите процесс еще раз или обратитесь в службу технической поддержки";
$MESS["LOADER_UNPACK_SUCCESS"] = "Дистрибутив успешно распакован";
$MESS["LOADER_UNPACK_ERRORS"] = "Дистрибутив распакован с ошибками";
$MESS_ED = array(
"bsm_6_business_src.tar.gz" => "Бизнес",
"bsm_6_expert_src.tar.gz" => "Эксперт",
"bsm_6_small_business_src.tar.gz" => "Малый бизнес",
"bsm_6_start_src.tar.gz" => "Старт",
"bsm_6_standard_src.tar.gz" => "Стандарт",
);
}
else
{
$MESS["LOADER_LICENSE_KEY"] = "Your license key";
$MESS["LOADER_TITLE"] = "Loading Bitrix Site Manager 6.5";
$MESS["LOADER_SUBTITLE1"] = "Loading";
$MESS["LOADER_SUBTITLE2"] = "Bitrix Site Manager 6.5";
$MESS["LOADER_MENU_LIST"] = "Select package";
$MESS["LOADER_MENU_LOAD"] = "Download installation package from server";
$MESS["LOADER_MENU_UNPACK"] = "Unpack installation package";
$MESS["LOADER_TECHSUPPORT"] = "If you experience problems installing
Bitrix Site Manager
please go to the
Bitrix technical support service";
$MESS["LOADER_TITLE_LIST"] = "Select installation package";
$MESS["LOADER_TITLE_LOAD"] = "Uploading installation package to the site";
$MESS["LOADER_TITLE_UNPACK"] = "Unpack installation package";
$MESS["LOADER_TITLE_LOG"] = "Upload report";
$MESS["LOADER_SAFE_MODE_ERR"] = "Attention! Your PHP functions in Safe Mode. The Setup cannot proceed in automatic mode. Please consult the technical support service for additional instructions.";
$MESS["LOADER_NO_PERMS_ERR"] = "Attention! PHP has not enough permissions to write to the root directory #DIR# of your site. Loading is likely to fail. Please set the required access permissions to the root directory of your site or consult administrators of your hosting service.";
$MESS["LOADER_EXISTS_ERR"] = "Attention! Setup has found the deployed copy of Bitrix Site Manager on your site. You must remove this copy before you proceed with uploading and installing a new copy. Otherwise, loader and/or installer will encounter problems.";
$MESS["LOADER_IS_DISTR"] = "Uploaded installation packages found on the site. Click the name of any package to start installation:";
$MESS["LOADER_OVERWRITE"] = "Attention! Files currently present on your site will possibly be overwritten with files from the package.";
$MESS["LOADER_IS_DISTR_PART"] = "Incompletely uploaded installation packages found on the site. Click the name of any package to finish loading:";
$MESS["LOADER_NEW_LOAD_TITLE"] = "Download new installation package from http://www.bitrixsoft.com";
$MESS["LOADER_NEW_ED"] = "package edition";
$MESS["LOADER_NEW_AUTO"] = "automatically start unpacking after loading";
$MESS["LOADER_NEW_STEPS"] = "load gradually with interval:";
$MESS["LOADER_NEW_STEPS0"] = "unlimited";
$MESS["LOADER_NEW_STEPS30"] = "less than 30 seconds";
$MESS["LOADER_NEW_STEPS60"] = "less than 60 seconds";
$MESS["LOADER_NEW_STEPS120"] = "less than 120 seconds";
$MESS["LOADER_NEW_STEPS180"] = "less than 180 seconds";
$MESS["LOADER_NEW_STEPS240"] = "less than 240 seconds";
$MESS["LOADER_NEW_LOAD"] = "Download";
$MESS["LOADER_DESCR"] = "This script will download the installation package of the Bitrix Site Manager from www.bitrixsoft.com directly to your site and unpack it.
Upload the script to the root directory of your site and open it in browser (type http://<your site>/".$this_script_name." in your browser).";
$MESS["LOADER_BACK_2LIST"] = "Back to packages list";
$MESS["LOADER_LOG_ERRORS"] = "The following errors occured:";
$MESS["LOADER_NO_LOG"] = "Log file not found";
$MESS["LOADER_BOTTOM_NOTE1"] = "Attention! After you have finished installing, please be sure to delete the script /".$this_script_name." from your site. Otherwise, unauthorized persons may access this script and damage your site.";
$MESS["LOADER_BOTTOM_NOTE2"] = "Attention! This script is the loader beta version. If you fail to upload the software using the script, you can download any standard installation package from www.bitrixsoft.com. Please report problems and errors detected while using the script to support@bitrixsoft.com";
$MESS["LOADER_KB"] = "kb";
$MESS["LOADER_LOAD_QUERY_SERVER"] = "Connecting server...";
$MESS["LOADER_LOAD_QUERY_DISTR"] = "Requesting package #DISTR#";
$MESS["LOADER_LOAD_CONN2HOST"] = "Establishing connection to #HOST#...";
$MESS["LOADER_LOAD_NO_CONN2HOST"] = "Cannot connect to #HOST#:";
$MESS["LOADER_LOAD_QUERY_FILE"] = "Requesting file...";
$MESS["LOADER_LOAD_WAIT"] = "Waiting for response...";
$MESS["LOADER_LOAD_SERVER_ANSWER"] = "Error while downloading. Server reply was: #ANS#";
$MESS["LOADER_LOAD_SERVER_ANSWER1"] = "Error while downloading. Your can not download this package. Server reply was: #ANS#";
$MESS["LOADER_LOAD_NEED_RELOAD"] = "Cannot resume download. Starting new download.";
$MESS["LOADER_LOAD_NO_WRITE2FILE"] = "Cannot open file #FILE# for writing";
$MESS["LOADER_LOAD_LOAD_DISTR"] = "Downloading package #DISTR#";
$MESS["LOADER_LOAD_ERR_SIZE"] = "File size error";
$MESS["LOADER_LOAD_ERR_RENAME"] = "Cannot rename file #FILE1# to #FILE2#";
$MESS["LOADER_LOAD_CANT_OPEN_WRITE"] = "Cannot open file #FILE# for writing";
$MESS["LOADER_LOAD_CANT_OPEN_READ"] = "Cannot open file #FILE# for reading";
$MESS["LOADER_LOAD_LOADING"] = "Download in progress. Please wait...";
$MESS["LOADER_LOAD_FILE_SAVED"] = "File saved: #FILE# [#SIZE# bytes]";
$MESS["LOADER_UNPACK_ACTION"] = "Unpacking the package. Please wait...";
$MESS["LOADER_UNPACK_UNKNOWN"] = "Unknown error occured. Please try again or consult the technical support service";
$MESS["LOADER_UNPACK_SUCCESS"] = "The installation package successfully unpacked";
$MESS["LOADER_UNPACK_ERRORS"] = "Errors occured while unpacking the installation package";
$MESS_ED = array(
"bsm_6_enterprise_src.tar.gz" => "Enterprise",
"bsm_6_professional_src.tar.gz" => "Professional",
"bsm_6_smb_src.tar.gz" => "Small Business",
"bsm_6_std_src.tar.gz" => "Standard",
"bsm_6_str_src.tar.gz" => "Start",
);
}
function LoaderGetMessage($name)
{
global $MESS;
return $MESS[$name];
}
umask(0);
if (!defined("BX_DIR_PERMISSIONS"))
define("BX_DIR_PERMISSIONS", 0755);
if (!defined("BX_FILE_PERMISSIONS"))
define("BX_FILE_PERMISSIONS", 0644);
?>
= LoaderGetMessage("LOADER_TITLE") ?>
|
= LoaderGetMessage("LOADER_SUBTITLE1") ?> "= LoaderGetMessage("LOADER_SUBTITLE2") ?>" |
" width="100%" style="height: 43px;">= LoaderGetMessage("LOADER_MENU_LIST") ?> |
|
|
" width="100%" style="height: 43px;">= LoaderGetMessage("LOADER_MENU_LOAD") ?> |
|
|
" width="100%" style="height: 43px;">= LoaderGetMessage("LOADER_MENU_UNPACK") ?> |
|
|
= LoaderGetMessage("LOADER_TECHSUPPORT") ?>
|
|
if ($strAction=="LIST")
echo LoaderGetMessage("LOADER_TITLE_LIST");
elseif ($strAction=="LOAD")
echo LoaderGetMessage("LOADER_TITLE_LOAD");
elseif ($strAction=="UNPACK")
echo LoaderGetMessage("LOADER_TITLE_UNPACK");
elseif ($strAction=="LOG")
echo LoaderGetMessage("LOADER_TITLE_LOG");
?>
if ($strAction=="LIST")
{
/*************************************************/
if (ini_get("safe_mode") == "1")
{
echo LoaderGetMessage("LOADER_SAFE_MODE_ERR");
?>
}
if (!is_writable($_SERVER["DOCUMENT_ROOT"]))
{
echo str_replace("#DIR#", $_SERVER["DOCUMENT_ROOT"], LoaderGetMessage("LOADER_NO_PERMS_ERR"));
?>
}
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/bitrix")
&& is_dir($_SERVER["DOCUMENT_ROOT"]."/bitrix"))
{
echo LoaderGetMessage("LOADER_EXISTS_ERR");
?>
}
$arLocalDistribs = array();
$arLocalDistribs_tmp = array();
$handle = @opendir($_SERVER["DOCUMENT_ROOT"]);
if ($handle)
{
while (false !== ($ffile = readdir($handle)))
{
if (is_file($_SERVER["DOCUMENT_ROOT"]."/".$ffile))
{
if (strtolower(substr($ffile, -7))==".tar.gz")
{
$arLocalDistribs[] = $ffile;
}
elseif (strtolower(substr($ffile, -11))==".tar.gz.tmp")
{
$arLocalDistribs_tmp[] = $ffile;
}
}
}
closedir($handle);
}
if (count($arLocalDistribs)>0)
{
echo LoaderGetMessage("LOADER_IS_DISTR")
?>
for ($i = 0; $i < count($arLocalDistribs); $i++)
{
?>= $arLocalDistribs[$i] ?>
}
?>
= LoaderGetMessage("LOADER_OVERWRITE") ?>
}
if (count($arLocalDistribs_tmp)>0)
{
echo LoaderGetMessage("LOADER_IS_DISTR_PART")
?>
for ($i = 0; $i < count($arLocalDistribs_tmp); $i++)
{
?>= $arLocalDistribs_tmp[$i] ?>
}
?>
}
?>
= LoaderGetMessage("LOADER_DESCR") ?>
/*************************************************/
}
elseif ($strAction=="LOAD" || $strAction=="UNPACK")
{
/*************************************************/
?>
<<= LoaderGetMessage("LOADER_BACK_2LIST") ?>
/*************************************************/
}
elseif ($strAction=="LOG")
{
/*************************************************/
?>
<<= LoaderGetMessage("LOADER_BACK_2LIST") ?>
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/".$this_script_name.".log")
&& ($ft = fopen($_SERVER["DOCUMENT_ROOT"]."/".$this_script_name.".log", "rb")))
{
?> = LoaderGetMessage("LOADER_LOG_ERRORS") ?>
while (!feof($ft))
{
$buffer = fgets($ft, 4096);
echo $buffer." ";
}
fclose($ft);
}
else
{
echo LoaderGetMessage("LOADER_NO_LOG");
}
/*************************************************/
}
?>
= LoaderGetMessage("LOADER_BOTTOM_NOTE1") ?>
= LoaderGetMessage("LOADER_BOTTOM_NOTE2") ?>
|
|
if ($strAction=="LOAD" || $strAction=="UNPACK")
{
function SetCurrentStatus($text)
{
$text = preg_replace("/[\s\n\r]+/", " ", $text);
echo "\n";
flush();
}
function SetCurrentProgress($val, $strRequestedSize = 0, $ShowSize = True)
{
$val = IntVal($val);
if ($val>0)
{
$iProc = $val/$strRequestedSize*100;
if ($ShowSize)
$rVal = sprintf("%01.1f", Round($val/1000.0, 1))." ".LoaderGetMessage("LOADER_KB");
else
$rVal = $val;
echo "\n";
}
else
{
echo "\n";
}
flush();
}
function getmicrotime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
}
if ($strAction=="LOAD")
{
/*********************************************************************/
if ($lang=="ru")
$strRequestedUrl = "http://www.1c-bitrix.ru/private/download/".$_REQUEST["url"];
else
$strRequestedUrl = "http://www.bitrixsoft.com/private/download/".$_REQUEST["url"];
$strRequestedSize = 10000000.0;
$iTimeOut = IntVal($_REQUEST["iTimeOut"]);
$proxyaddr = "";
$proxyport = "";
$strUserAgent = "BitrixSiteLoader";
$strFilename = $_SERVER["DOCUMENT_ROOT"]."/".basename($strRequestedUrl);
function LoadFile($strRequestedUrl, $strFilename, $iTimeOut = 0)
{
global $proxyaddr, $proxyport, $strUserAgent, $strRequestedSize;
$iTimeOut = IntVal($iTimeOut);
if ($iTimeOut>0)
$start_time = getmicrotime();
$strRealUrl = $strRequestedUrl;
$iStartSize = 0;
$iRealSize = 0;
$bCanContinueDownload = False;
// ИНИЦИАЛИЗИРУЕМ, ЕСЛИ ДОКАЧКА
$strRealUrl_tmp = "";
$iRealSize_tmp = 0;
if (file_exists($strFilename.".tmp") && file_exists($strFilename.".log"))
{
$fh = fopen($strFilename.".log", "rb");
$file_contents_tmp = fread($fh, filesize($strFilename.".log"));
fclose($fh);
list($strRealUrl_tmp, $iRealSize_tmp) = split("\n", $file_contents_tmp);
$strRealUrl_tmp = Trim($strRealUrl_tmp);
$iRealSize_tmp = IntVal(Trim($iRealSize_tmp));
}
if ($iRealSize_tmp<=0 || strlen($strRealUrl_tmp)<=0)
{
$strRealUrl_tmp = "";
$iRealSize_tmp = 0;
if (file_exists($strFilename.".tmp"))
@unlink($strFilename.".tmp");
if (file_exists($strFilename.".log"))
@unlink($strFilename.".log");
}
else
{
$strRealUrl = $strRealUrl_tmp;
$iRealSize = $iRealSize_tmp;
$iStartSize = filesize($strFilename.".tmp");
}
// КОНЕЦ: ИНИЦИАЛИЗИРУЕМ, ЕСЛИ ДОКАЧКА
SetCurrentStatus(LoaderGetMessage("LOADER_LOAD_QUERY_SERVER"));
// ИЩЕМ ФАЙЛ И ЗАПРАШИВАЕМ ИНФО
do
{
SetCurrentStatus(str_replace("#DISTR#", $strRealUrl, LoaderGetMessage("LOADER_LOAD_QUERY_DISTR")));
$lasturl = $strRealUrl;
$redirection = "";
$parsedurl = parse_url($strRealUrl);
$useproxy = (($proxyaddr != "") && ($proxyport != ""));
if (!$useproxy)
{
$host = $parsedurl["host"];
$port = $parsedurl["port"];
$hostname = $host;
}
else
{
$host = $proxyaddr;
$port = $proxyport;
$hostname = $parsedurl["host"];
}
$port = $port ? $port : "80";
SetCurrentStatus(str_replace("#HOST#", $host, LoaderGetMessage("LOADER_LOAD_CONN2HOST")));
$sockethandle = @fsockopen($host, $port, $error_id, $error_msg, 30);
if (!$sockethandle)
{
SetCurrentStatus(str_replace("#HOST#", $host, LoaderGetMessage("LOADER_LOAD_NO_CONN2HOST"))." [".$error_id."] ".$error_msg);
return false;
}
else
{
if (!$parsedurl["path"])
$parsedurl["path"] = "/";
SetCurrentStatus(LoaderGetMessage("LOADER_LOAD_QUERY_FILE"));
$request = "";
if (!$useproxy)
{
$request .= "HEAD ".$parsedurl["path"].($parsedurl["query"] ? '?'.$parsedurl["query"] : '')." HTTP/1.0\r\n";
$request .= "Host: $hostname\r\n";
}
else
{
$request .= "HEAD ".$strRealUrl." HTTP/1.0\r\n";
$request .= "Host: $hostname\r\n";
}
if ($strUserAgent != "")
$request .= "User-Agent: $strUserAgent\r\n";
$request .= "\r\n";
fwrite($sockethandle, $request);
$result = "";
SetCurrentStatus(LoaderGetMessage("LOADER_LOAD_WAIT"));
$replyheader = "";
while (($result = fgets($sockethandle, 4096)) && $result!="\r\n")
{
$replyheader .= $result;
}
fclose($sockethandle);
$ar_replyheader = split("\r\n", $replyheader);
$replyproto = "";
$replyversion = "";
$replycode = 0;
$replymsg = "";
if (ereg("([A-Z]{4})/([0-9.]{3}) ([0-9]{3})", $ar_replyheader[0], $regs))
{
$replyproto = $regs[1];
$replyversion = $regs[2];
$replycode = IntVal($regs[3]);
$replymsg = substr($ar_replyheader[0], strpos($ar_replyheader[0], $replycode) + strlen($replycode) + 1, strlen($ar_replyheader[0]) - strpos($ar_replyheader[0], $replycode) + 1);
}
if ($replycode!=200 && $replycode!=302)
{
if ($replycode==403)
SetCurrentStatus(str_replace("#ANS#", $replycode." - ".$replymsg, LoaderGetMessage("LOADER_LOAD_SERVER_ANSWER1")));
else
SetCurrentStatus(str_replace("#ANS#", $replycode." - ".$replymsg, LoaderGetMessage("LOADER_LOAD_SERVER_ANSWER")));
return false;
}
$strLocationUrl = "";
$iNewRealSize = 0;
$strAcceptRanges = "";
for ($i = 1; $i < count($ar_replyheader); $i++)
{
if (strpos($ar_replyheader[$i], "Location") !== false)
$strLocationUrl = trim(substr($ar_replyheader[$i], strpos($ar_replyheader[$i], ":") + 1, strlen($ar_replyheader[$i]) - strpos($ar_replyheader[$i], ":") + 1));
elseif (strpos($ar_replyheader[$i], "Content-Length") !== false)
$iNewRealSize = IntVal(Trim(substr($ar_replyheader[$i], strpos($ar_replyheader[$i], ":") + 1, strlen($ar_replyheader[$i]) - strpos($ar_replyheader[$i], ":") + 1)));
elseif (strpos($ar_replyheader[$i], "Accept-Ranges") !== false)
$strAcceptRanges = Trim(substr($ar_replyheader[$i], strpos($ar_replyheader[$i], ":") + 1, strlen($ar_replyheader[$i]) - strpos($ar_replyheader[$i], ":") + 1));
}
if (strlen($strLocationUrl)>0)
{
$redirection = $strLocationUrl;
$redirected = true;
if ((strpos($redirection, "http://")===false))
$strRealUrl = dirname($lasturl)."/".$redirection;
else
$strRealUrl = $redirection;
}
if (strlen($strLocationUrl)<=0)
break;
}
}
while (true);
// КОНЕЦ: ИЩЕМ ФАЙЛ И ЗАПРАШИВАЕМ ИНФО
$bCanContinueDownload = ($strAcceptRanges == "bytes");
// ЕСЛИ НЕЛЬЗЯ ДОКАЧИВАТЬ
if (!$bCanContinueDownload
|| $iNewRealSize != $iRealSize)
{
SetCurrentStatus(LoaderGetMessage("LOADER_LOAD_NEED_RELOAD"));
$iStartSize = 0;
}
// КОНЕЦ: ЕСЛИ НЕЛЬЗЯ ДОКАЧИВАТЬ
// ЕСЛИ МОЖНО ДОКАЧИВАТЬ
if ($bCanContinueDownload)
{
$fh = fopen($strFilename.".log", "wb");
if (!$fh)
{
SetCurrentStatus(str_replace("#FILE#", $strFilename.".log", LoaderGetMessage("LOADER_LOAD_NO_WRITE2FILE")));
return false;
}
fwrite($fh, $strRealUrl."\n");
fwrite($fh, $iNewRealSize."\n");
fclose($fh);
}
// КОНЕЦ: ЕСЛИ МОЖНО ДОКАЧИВАТЬ
SetCurrentStatus(str_replace("#DISTR#", $strRealUrl, LoaderGetMessage("LOADER_LOAD_LOAD_DISTR")));
$strRequestedSize = $iNewRealSize;
// КАЧАЕМ ФАЙЛ
$parsedurl = parse_url($strRealUrl);
$useproxy = (($proxyaddr != "") && ($proxyport != ""));
if (!$useproxy)
{
$host = $parsedurl["host"];
$port = $parsedurl["port"];
$hostname = $host;
}
else
{
$host = $proxyaddr;
$port = $proxyport;
$hostname = $parsedurl["host"];
}
$port = $port ? $port : "80";
SetCurrentStatus(str_replace("#HOST#", $host, LoaderGetMessage("LOADER_LOAD_CONN2HOST")));
$sockethandle = @fsockopen($host, $port, $error_id, $error_msg, 30);
if (!$sockethandle)
{
SetCurrentStatus(str_replace("#HOST#", $host, LoaderGetMessage("LOADER_LOAD_NO_CONN2HOST"))." [".$error_id."] ".$error_msg);
return false;
}
else
{
if (!$parsedurl["path"])
$parsedurl["path"] = "/";
SetCurrentStatus(LoaderGetMessage("LOADER_LOAD_QUERY_FILE"));
$request = "";
if (!$useproxy)
{
$request .= "GET ".$parsedurl["path"].($parsedurl["query"] ? '?'.$parsedurl["query"] : '')." HTTP/1.0\r\n";
$request .= "Host: $hostname\r\n";
}
else
{
$request .= "GET ".$strRealUrl." HTTP/1.0\r\n";
$request .= "Host: $hostname\r\n";
}
if ($strUserAgent != "")
$request .= "User-Agent: $strUserAgent\r\n";
if ($bCanContinueDownload && $iStartSize>0)
$request .= "Range: bytes=".$iStartSize."-\r\n";
$request .= "\r\n";
fwrite($sockethandle, $request);
$result = "";
SetCurrentStatus(LoaderGetMessage("LOADER_LOAD_WAIT"));
$replyheader = "";
while (($result = fgets($sockethandle, 4096)) && $result!="\r\n")
$replyheader .= $result;
$ar_replyheader = split("\r\n", $replyheader);
$replyproto = "";
$replyversion = "";
$replycode = 0;
$replymsg = "";
if (ereg("([A-Z]{4})/([0-9.]{3}) ([0-9]{3})", $ar_replyheader[0], $regs))
{
$replyproto = $regs[1];
$replyversion = $regs[2];
$replycode = IntVal($regs[3]);
$replymsg = substr($ar_replyheader[0], strpos($ar_replyheader[0], $replycode) + strlen($replycode) + 1, strlen($ar_replyheader[0]) - strpos($ar_replyheader[0], $replycode) + 1);
}
if ($replycode!=200 && $replycode!=302 && $replycode!=206)
{
SetCurrentStatus(str_replace("#ANS#", $replycode." - ".$replymsg, LoaderGetMessage("LOADER_LOAD_SERVER_ANSWER")));
return false;
}
$strContentRange = "";
$iContentLength = 0;
$strAcceptRanges = "";
for ($i = 1; $i < count($ar_replyheader); $i++)
{
if (strpos($ar_replyheader[$i], "Content-Range") !== false)
$strContentRange = trim(substr($ar_replyheader[$i], strpos($ar_replyheader[$i], ":") + 1, strlen($ar_replyheader[$i]) - strpos($ar_replyheader[$i], ":") + 1));
elseif (strpos($ar_replyheader[$i], "Content-Length") !== false)
$iContentLength = IntVal(Trim(substr($ar_replyheader[$i], strpos($ar_replyheader[$i], ":") + 1, strlen($ar_replyheader[$i]) - strpos($ar_replyheader[$i], ":") + 1)));
elseif (strpos($ar_replyheader[$i], "Accept-Ranges") !== false)
$strAcceptRanges = Trim(substr($ar_replyheader[$i], strpos($ar_replyheader[$i], ":") + 1, strlen($ar_replyheader[$i]) - strpos($ar_replyheader[$i], ":") + 1));
}
$bReloadFile = True;
if (strlen($strContentRange)>0)
{
if (eregi(" *bytes +([0-9]*) *- *([0-9]*) */ *([0-9]*)", $strContentRange, $regs))
{
$iStartBytes_tmp = IntVal($regs[1]);
$iEndBytes_tmp = IntVal($regs[2]);
$iSizeBytes_tmp = IntVal($regs[3]);
if ($iStartBytes_tmp==$iStartSize
&& $iEndBytes_tmp==($iNewRealSize-1)
&& $iSizeBytes_tmp==$iNewRealSize)
{
$bReloadFile = False;
}
}
}
if ($bReloadFile)
$iStartSize = 0;
if (($iContentLength+$iStartSize)!=$iNewRealSize)
{
SetCurrentStatus(LoaderGetMessage("LOADER_LOAD_ERR_SIZE"));
return false;
}
if (!$bReloadFile)
{
@unlink($strFilename.".tmp1");
if (!@rename($strFilename.".tmp", $strFilename.".tmp1"))
{
SetCurrentStatus(str_replace("#FILE2#", $strFilename.".tmp1", str_replace("#FILE1#", $strFilename.".tmp", LoaderGetMessage("LOADER_LOAD_ERR_RENAME"))));
return false;
}
}
$fh = fopen($strFilename.".tmp", "wb");
if (!$fh)
{
SetCurrentStatus(str_replace("#FILE#", $strFilename.".tmp", LoaderGetMessage("LOADER_LOAD_CANT_OPEN_WRITE")));
return false;
}
if (!$bReloadFile)
{
$fh1 = fopen($strFilename.".tmp1", "rb");
if (!$fh1)
{
SetCurrentStatus(str_replace("#FILE#", $strFilename.".tmp1", LoaderGetMessage("LOADER_LOAD_CANT_OPEN_READ")));
return false;
}
do
{
$data = fread($fh1, 8192);
if (strlen($data) == 0)
break;
fwrite($fh, $data);
}
while (true);
fclose($fh1);
@unlink($strFilename.".tmp1");
}
$iCntr = 0;
$bFinished = True;
$downloadsize = $iStartSize;
SetCurrentStatus(LoaderGetMessage("LOADER_LOAD_LOADING"));
while (!feof($sockethandle))
{
if ($iTimeOut>0 && (getmicrotime()-$start_time)>$iTimeOut)
{
$bFinished = False;
break;
}
//if ($iCntr % 10 == 0)
// sleep(1);
if ($iCntr % 20 == 0)
SetCurrentProgress($downloadsize, $strRequestedSize);
$result = fread($sockethandle, 40960);
$downloadsize += strlen($result);
if ($result=="")
break;
$iCntr++;
fwrite($fh, $result);
}
SetCurrentProgress(0);
fclose($fh);
fclose($sockethandle);
if ($bFinished)
{
@unlink($strFilename);
if (!@rename($strFilename.".tmp", $strFilename))
{
SetCurrentStatus(str_replace("#FILE2#", $strFilename, str_replace("#FILE1#", $strFilename.".tmp", LoaderGetMessage("LOADER_LOAD_ERR_RENAME"))));
return false;
}
@unlink($strFilename.".tmp");
}
else
{
return 2;
}
SetCurrentStatus(str_replace("#SIZE#", $downloadsize, str_replace("#FILE#", $strFilename, LoaderGetMessage("LOADER_LOAD_FILE_SAVED"))));
@unlink($strFilename.".log");
return 1;
}
// КОНЕЦ: КАЧАЕМ ФАЙЛ
}
$vLoadRes = LoadFile($strRequestedUrl."?lp=".md5($_REQUEST["LICENSE_KEY"]), $strFilename, $iTimeOut);
if ($vLoadRes==1)
{
if ($_REQUEST["action_next"]=="UNPACK")
{
echo "\n";
flush();
}
}
elseif ($vLoadRes==2)
{
echo "\n";
flush();
}
/*********************************************************************/
}
elseif ($strAction=="UNPACK")
{
/*********************************************************************/
$iNumDistrFiles = 15000;
class CArchiver
{
var $_strArchiveName = "";
var $_bCompress = false;
var $_strSeparator = " ";
var $_dFile = 0;
var $_arErrors = array();
var $iArchSize = 0;
var $iCurPos = 0;
var $bFinish = false;
function CArchiver($strArchiveName, $bCompress = false)
{
$this->_bCompress = false;
if (!$bCompress)
{
if (@file_exists($strArchiveName))
{
if ($fp = @fopen($strArchiveName, "rb"))
{
$data = fread($fp, 2);
fclose($fp);
if ($data == "\37\213")
{
$this->_bCompress = True;
}
}
}
else
{
if (substr($strArchiveName, -2) == 'gz')
{
$this->_bCompress = True;
}
}
}
else
{
$this->_bCompress = True;
}
$this->_strArchiveName = $strArchiveName;
$this->_arErrors = array();
}
function extractFiles($strPath, $vFileList = false)
{
$this->_arErrors = array();
$v_result = true;
$v_list_detail = array();
$strExtrType = "complete";
$arFileList = 0;
if ($vFileList!==false)
{
$arFileList = &$this->_parseFileParams($vFileList);
$strExtrType = "partial";
}
if ($v_result = $this->_openRead())
{
$v_result = $this->_extractList($strPath, $v_list_detail, $strExtrType, $arFileList, '');
$this->_close();
}
return $v_result;
}
function &GetErrors()
{
return $this->_arErrors;
}
function _extractList($p_path, &$p_list_detail, $p_mode, $p_file_list, $p_remove_path)
{
global $iNumDistrFiles;
$v_result = true;
$v_nb = 0;
$v_extract_all = true;
$v_listing = false;
$p_path = str_replace("\\", "/", $p_path);
if ($p_path == ''
|| (substr($p_path, 0, 1) != '/'
&& substr($p_path, 0, 3) != "../"
&& !strpos($p_path, ':')))
{
$p_path = "./".$p_path;
}
$p_remove_path = str_replace("\\", "/", $p_remove_path);
if (($p_remove_path != '') && (substr($p_remove_path, -1) != '/'))
$p_remove_path .= '/';
$p_remove_path_size = strlen($p_remove_path);
switch ($p_mode)
{
case "complete" :
$v_extract_all = TRUE;
$v_listing = FALSE;
break;
case "partial" :
$v_extract_all = FALSE;
$v_listing = FALSE;
break;
case "list" :
$v_extract_all = FALSE;
$v_listing = TRUE;
break;
default :
$this->_arErrors[] = array("ERR_PARAM", "Invalid extract mode (".$p_mode.")");
return false;
}
clearstatcache();
$tm=time();
while (strlen($v_binary_data = $this->_readBlock()) != 0)
{
$v_extract_file = FALSE;
$v_extraction_stopped = 0;
if (!$this->_readHeader($v_binary_data, $v_header))
return false;
if ($v_header['filename'] == '')
continue;
// ----- Look for long filename
/* if ($v_header['typeflag'] == 'L')
{
if (!$this->_readLongHeader($v_header))
return false;
}
*/
if ((!$v_extract_all) && (is_array($p_file_list)))
{
// ----- By default no unzip if the file is not found
$v_extract_file = false;
for ($i = 0; $i < count($p_file_list); $i++)
{
// ----- Look if it is a directory
if (substr($p_file_list[$i], -1) == '/')
{
// ----- Look if the directory is in the filename path
if ((strlen($v_header['filename']) > strlen($p_file_list[$i]))
&& (substr($v_header['filename'], 0, strlen($p_file_list[$i])) == $p_file_list[$i]))
{
$v_extract_file = TRUE;
break;
}
}
elseif ($p_file_list[$i] == $v_header['filename'])
{
// ----- It is a file, so compare the file names
$v_extract_file = TRUE;
break;
}
}
}
else
{
$v_extract_file = TRUE;
}
// ----- Look if this file need to be extracted
if (($v_extract_file) && (!$v_listing))
{
if (($p_remove_path != '')
&& (substr($v_header['filename'], 0, $p_remove_path_size) == $p_remove_path))
{
$v_header['filename'] = substr($v_header['filename'], $p_remove_path_size);
}
if (($p_path != './') && ($p_path != '/'))
{
while (substr($p_path, -1) == '/')
$p_path = substr($p_path, 0, strlen($p_path)-1);
if (substr($v_header['filename'], 0, 1) == '/')
$v_header['filename'] = $p_path.$v_header['filename'];
else
$v_header['filename'] = $p_path.'/'.$v_header['filename'];
}
if (file_exists($v_header['filename']))
{
if ((@is_dir($v_header['filename'])) && ($v_header['typeflag'] == ''))
{
$this->_arErrors[] = array("DIR_EXISTS", "File '".$v_header['filename']."' already exists as a directory");
return false;
}
if ((is_file($v_header['filename'])) && ($v_header['typeflag'] == "5"))
{
$this->_arErrors[] = array("FILE_EXISTS", "Directory '".$v_header['filename']."' already exists as a file");
return false;
}
if (!is_writeable($v_header['filename']))
{
$this->_arErrors[] = array("FILE_PERMS", "File '".$v_header['filename']."' already exists and is write protected");
return false;
}
}
elseif (($v_result = $this->_dirCheck(($v_header['typeflag'] == "5" ? $v_header['filename'] : dirname($v_header['filename'])))) != 1)
{
$this->_arErrors[] = array("NO_DIR", "Unable to create path for '".$v_header['filename']."'");
return false;
}
if ($v_extract_file)
{
if ($v_header['typeflag'] == "5")
{
if (!@file_exists($v_header['filename']))
{
if (!@mkdir($v_header['filename'], BX_DIR_PERMISSIONS))
{
$this->_arErrors[] = array("ERR_CREATE_DIR", "Unable to create directory '".$v_header['filename']."'");
return false;
}
}
}
else
{
if (($v_dest_file = @fopen($v_header['filename'], "wb")) == 0)
{
$this->_arErrors[] = array("ERR_CREATE_FILE", "Error while opening '".$v_header['filename']."' in write binary mode");
return false;
}
else
{
$n = floor($v_header['size']/512);
for ($i = 0; $i < $n; $i++)
{
$v_content = $this->_readBlock();
fwrite($v_dest_file, $v_content, 512);
}
if (($v_header['size'] % 512) != 0)
{
$v_content = $this->_readBlock();
fwrite($v_dest_file, $v_content, ($v_header['size'] % 512));
}
@fclose($v_dest_file);
@chmod($v_header['filename'], BX_FILE_PERMISSIONS);
@touch($v_header['filename'], $v_header['mtime']);
}
clearstatcache();
if (filesize($v_header['filename']) != $v_header['size'])
{
$this->_arErrors[] = array("ERR_SIZE_CHECK", "Extracted file '".$v_header['filename']."' have incorrect file size '".filesize($v_filename)."' (".$v_header['size']." expected). Archive may be corrupted");
return false;
}
}
}
else
{
$this->_jumpBlock(ceil(($v_header['size']/512)));
}
}
else
{
$this->_jumpBlock(ceil(($v_header['size']/512)));
}
if ($v_listing || $v_extract_file || $v_extraction_stopped)
{
if (($v_file_dir = dirname($v_header['filename'])) == $v_header['filename'])
$v_file_dir = '';
if ((substr($v_header['filename'], 0, 1) == '/') && ($v_file_dir == ''))
$v_file_dir = '/';
$p_list_detail[$v_nb++] = $v_header;
if ($v_nb % 100 == 0)
SetCurrentProgress($this->iCurPos, $this->iArchSize, False);
}
if ($_REQUEST['by_step'] && (time()-$tm) > 20)
{
SetCurrentProgress($this->iCurPos, $this->iArchSize, False);
return true;
}
}
$this->bFinish = true;
return true;
}
function _readBlock()
{
$v_block = "";
if (is_resource($this->_dFile))
{
if ($_REQUEST['seek'])
{
if ($this->_bCompress)
gzseek($this->_dFile, intval($_REQUEST['seek']));
else
fseek($this->_dFile, intval($_REQUEST['seek']));
$this->iCurPos = IntVal($_REQUEST['seek']);
unset($_REQUEST['seek']);
}
if ($this->_bCompress)
$v_block = @gzread($this->_dFile, 512);
else
$v_block = @fread($this->_dFile, 512);
$this->iCurPos += strlen($v_block);
}
return $v_block;
}
function _readHeader($v_binary_data, &$v_header)
{
if (strlen($v_binary_data)==0)
{
$v_header['filename'] = '';
return true;
}
if (strlen($v_binary_data) != 512)
{
$v_header['filename'] = '';
$this->_arErrors[] = array("INV_BLOCK_SIZE", "Invalid block size : ".strlen($v_binary_data)."");
return false;
}
$v_checksum = 0;
for ($i = 0; $i < 148; $i++)
$v_checksum+=ord(substr($v_binary_data, $i, 1));
for ($i = 148; $i < 156; $i++)
$v_checksum += ord(' ');
for ($i = 156; $i < 512; $i++)
$v_checksum+=ord(substr($v_binary_data, $i, 1));
$v_data = unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor/a155prefix/a12temp", $v_binary_data);
$v_header['checksum'] = OctDec(trim($v_data['checksum']));
if ($v_header['checksum'] != $v_checksum)
{
$v_header['filename'] = '';
if (($v_checksum == 256) && ($v_header['checksum'] == 0))
return true;
$this->_arErrors[] = array("INV_BLOCK_CHECK", "Invalid checksum for file '".$v_data['filename']."' : ".$v_checksum." calculated, ".$v_header['checksum']." expected");
return false;
}
// ----- Extract the properties
$v_header['filename'] = trim($v_data['prefix']."/".$v_data['filename']);
$v_header['mode'] = OctDec(trim($v_data['mode']));
$v_header['uid'] = OctDec(trim($v_data['uid']));
$v_header['gid'] = OctDec(trim($v_data['gid']));
$v_header['size'] = OctDec(trim($v_data['size']));
$v_header['mtime'] = OctDec(trim($v_data['mtime']));
if (($v_header['typeflag'] = $v_data['typeflag']) == "5")
$v_header['size'] = 0;
return true;
}
/* function _readLongHeader(&$v_header)
{
$v_filename = '';
$n = floor($v_header['size']/512);
for ($i = 0; $i < $n; $i++)
{
$v_content = $this->_readBlock();
$v_filename .= $v_content;
}
if (($v_header['size'] % 512) != 0)
{
$v_content = $this->_readBlock();
$v_filename .= $v_content;
}
$v_binary_data = $this->_readBlock();
if (!$this->_readHeader($v_binary_data, $v_header))
return false;
$v_header['filename'] = $v_filename;
return true;
}
*/
function _jumpBlock($p_len = false)
{
if (is_resource($this->_dFile))
{
if ($p_len === false)
$p_len = 1;
if ($this->_bCompress)
@gzseek($this->_dFile, @gztell($this->_dFile)+($p_len*512));
else
@fseek($this->_dFile, @ftell($this->_dFile)+($p_len*512));
}
return true;
}
function &_parseFileParams(&$vFileList)
{
if (isset($vFileList) && is_array($vFileList))
return $vFileList;
elseif (isset($vFileList) && strlen($vFileList)>0)
return explode($this->_strSeparator, $vFileList);
else
return array();
}
function _openRead()
{
if ($this->_bCompress)
{
$this->_dFile = @gzopen($this->_strArchiveName, "rb");
$this->iArchSize = filesize($this->_strArchiveName) * 3;
}
else
{
$this->_dFile = @fopen($this->_strArchiveName, "rb");
$this->iArchSize = filesize($this->_strArchiveName);
}
if (!$this->_dFile)
{
$this->_arErrors[] = array("ERR_OPEN", "Unable to open '".$this->_strArchiveName."' in read mode");
return false;
}
return true;
}
function _close()
{
if (is_resource($this->_dFile))
{
if ($this->_bCompress)
@gzclose($this->_dFile);
else
@fclose($this->_dFile);
$this->_dFile = 0;
}
return true;
}
function _dirCheck($p_dir)
{
if ((@is_dir($p_dir)) || ($p_dir == ''))
return true;
$p_parent_dir = dirname($p_dir);
if (($p_parent_dir != $p_dir) &&
($p_parent_dir != '') &&
(!$this->_dirCheck($p_parent_dir)))
return false;
if (!@mkdir($p_dir, BX_DIR_PERMISSIONS))
{
$this->_arErrors[] = array("CANT_CREATE_PATH", "Unable to create directory '".$p_dir."'");
return false;
}
return true;
}
}
SetCurrentStatus(LoaderGetMessage("LOADER_UNPACK_ACTION"));
$oArchiver = new CArchiver($_SERVER["DOCUMENT_ROOT"]."/".$_REQUEST["filename"], true);
$tres = $oArchiver->extractFiles($_SERVER["DOCUMENT_ROOT"]);
SetCurrentProgress($iNumDistrFiles, $iNumDistrFiles, False);
if ($tres)
{
if (!$oArchiver->bFinish)
echo "\n";
else // finish
{
$strInstFile = "index.php";
if (!file_exists($_SERVER["DOCUMENT_ROOT"]."/".$strInstFile))
{
SetCurrentStatus(LoaderGetMessage("LOADER_UNPACK_UNKNOWN"));
}
else
{
SetCurrentStatus(LoaderGetMessage("LOADER_UNPACK_SUCCESS"));
echo "";
flush();
}
}
}
else
{
SetCurrentStatus(LoaderGetMessage("LOADER_UNPACK_ERRORS"));
$arErrors = &$oArchiver->GetErrors();
if (count($arErrors)>0)
{
if ($ft = fopen($_SERVER["DOCUMENT_ROOT"]."/".$this_script_name.".log", "wb"))
{
foreach ($arErrors as $value)
fwrite($ft, "[".$value[0]."] ".$value[1]."\n");
fclose($ft);
echo "";
flush();
}
}
}
/*********************************************************************/
}
?>