- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/backup.php
- Класс: CDirRealScan
- Вызов: CDirRealScan::ProcessFile
function ProcessFile($f)
{
global $tar;
while(haveTime())
{
$f = str_replace('\', '/', $f);
if (preg_match('#/bitrix/(php_interface/dbconn.php|.settings.php)$#', $f, $regs))
{
if (!$arInfo = $tar->getFileInfo($f))
return false;
if ($regs[1] == '.settings.php')
{
if (!is_array($ar = include($f)))
{
$this->err[] = 'Can't parse file: '.$f;
return false;
}
if (is_array($ar['connections']['value']))
{
foreach($ar['connections']['value'] as $k => $arTmp)
{
$ar['connections']['value'][$k]['login'] = '******';
$ar['connections']['value'][$k]['password'] = '******';
$ar['connections']['value'][$k]['database'] = '******';
}
}
$strFile = "<"."?phpnreturn ".var_export($ar, true).";n";
}
else // dbconn.php
{
if (false === $arFile = file($f))
{
$this->err[] = 'Can't read file: '.$f;
return false;
}
$strFile = '';
foreach($arFile as $line)
{
if (preg_match("#^[ t]*".'$'."(DB(Login|Password|Name))#",$line,$regs))
$strFile .= '$'.$regs[1].' = "******";'."n";
else
$strFile .= str_replace("rn","n",$line);
}
}
$arInfo['size'] = strlen($strFile);
if (!$tar->writeHeader($arInfo))
return false;
$i = 0;
while($i < $arInfo['size'])
{
if (!$tar->writeBlock(pack("a512", substr($strFile, $i, 512))))
return false;
$i += 512;
}
return true;
}
if ($tar->addFile($f) === false)
return false; // error
if ($tar->ReadBlockCurrent == 0)
return true; // finished
}
return 'BREAK';
}