Вход Регистрация
Файл: upload/include/library/phpfox/diff/md5.class.php
Строк: 86
<?php
/**
 * [PHPFOX_HEADER]
 */

defined('PHPFOX') or exit('NO DICE!');

/**
 * Exports all the files used by the product and creates an MD5 identification for the 
 * file. This is mainly used to idenify if a script has been modified in comparison
 * to the default script provided by us.
 * 
 * @copyright        [PHPFOX_COPYRIGHT]
 * @author            Raymond Benc
 * @package         Phpfox
 * @version         $Id: md5.class.php 1666 2010-07-07 08:17:00Z Raymond_Benc $
 */
class Phpfox_Diff_Md5
{
    
/**
     * Class constructor
     *
     */
    
public function __construct()
    {    

    }
    
    
/**
     * Checks if there are any modified files in the product.
     *
     */
    
public function verify()
    {
        
$aVals Phpfox::getLib('xml.parser')->parse(PHPFOX_DIR_XML 'md5_sum' PHPFOX_XML_SUFFIX);
        foreach (
$aVals['file'] as $aVal)
        {            
            
$aFile file(PHPFOX_DIR $aVal['value']);
            
$sSource '';
            foreach (
$aFile as $sLine)
            {
                
$sCheckLine trim($sLine);
                
                if (
$sCheckLine == ''
                    
|| $sCheckLine == '/**'
                    
|| $sCheckLine == '*'
                    
|| $sCheckLine == '*/'
                    
|| substr($sCheckLine01) == '*'
                    
|| substr($sCheckLine02) == '//'
                
)
                {
                    continue;
                }        
                
                
$sSource .= $sLine;
            }            
            
            if (
$aVal['hash'] != md5($sSource))
            {
                echo 
$aVal['hash'] . " -> " md5($sSource) ." -> " $aVal['value'] . "n";
            }
        }
    }
    
    
/**
     * Creates an XML export of all the files in the product and includes an MD5 hash
     * that identifies each of the files content
     *
     * @return string XML output
     */
    
public function export()
    {
        
$oXmlBuilder Phpfox::getLib('xml.builder');
        
$oXmlBuilder->addGroup('files', array('version' => PhpFox::getId()));
        
        
$aFiles $this->_getFiles(rtrim(PHPFOX_DIRPHPFOX_DS));    
        
sort($aFiles);    
        foreach (
$aFiles as $sFile)
        {
            if (
preg_match("/.svn/i"$sFile)
                || 
preg_match("/tiny_mce/i"$sFile)
                || 
preg_match("/fckeditor/i"$sFile)
                || 
preg_match("/file/cache/i"$sFile)
                || 
preg_match("/jscript/jquery/i"$sFile)
                || 
preg_match("/include/hook/i"$sFile)                
                || 
preg_match("/file\cache/i"$sFile)
                || 
preg_match("/file\static/i"$sFile)
                || 
preg_match("/jscript\jquery/i"$sFile)
                || 
preg_match("/include\plugin/i"$sFile)                
                
                || (
substr($sFile, -4) != '.php' && substr($sFile, -5) != '.html' && substr($sFile, -4) != '.css' && substr($sFile, -3) != '.js')
            )
            {
                continue;
            }    
            
            
$aFile file($sFile);
            
$sSource '';
            foreach (
$aFile as $sLine)
            {
                
$sCheckLine trim($sLine);
                
                if (
$sCheckLine == ''
                    
|| $sCheckLine == '/**'
                    
|| $sCheckLine == '*'
                    
|| $sCheckLine == '*/'
                    
|| substr($sCheckLine01) == '*'
                    
|| substr($sCheckLine02) == '//'
                
)
                {
                    continue;
                }        
                
                
$sSource .= $sLine;
            }            
        
            
$oXmlBuilder->addTag('file'str_replace('\', '/', str_replace(PHPFOX_DIR, '', $sFile)), array(
                    '
hash' => md5($sSource)
                )
            );
        }
        
        $oXmlBuilder->closeGroup();
        
        return $oXmlBuilder->output();
    }
    
    /**
     * Gets all the files found in the root directory of the script or 
     * based on the 1st arg..
     *
     * @param string $sFrom Folder to get all the files from
     * @return array An ARRAY of all the files found in a specific folder
     */
    private function _getFiles($sFrom = '
.')
    {
        if (!is_dir($sFrom))
        {
            return false;
        }
       
        $aFiles = array();
        $aDirs = array( $sFrom);
        while(null !== ($sDir = array_pop( $aDirs)))
        {
            if( $hDir = opendir($sDir))
            {
                while(false !== ($sFile = readdir($hDir)))
                {
                    if( $sFile == '
.' || $sFile == '..')
                    {
                        continue;
                    }                    
                        
                    $sPath = $sDir . PHPFOX_DS . $sFile;                 
                    
                    if(is_dir($sPath))
                    {
                        $aDirs[] = $sPath;
                    }
                    else
                    {
                        $aFiles[] = $sPath;
                    }
                }
                closedir($hDir);
            }
        }
        return $aFiles;
    }    
}

?>
Онлайн: 0
Реклама