<?php
/**
* Run file.
*
* @package Turtle
* @access public
* @desc Run file.
* @copyright Marcin Sznyra (c) 2005 <marcin@marcinsznyra.info>
* @author Marcin Sznyra <marcin@marcinsznyra.info>
* @version $Id: _file.class.php,v 1.0 2005/12/29 11:39:23 MarcinSznyra Exp $;
* @since Version 1.0
*/
class ObfRunMe
{
var $_i = 0;
function ObfRunMe( )
{
error_reporting( E_ALL );
include( realpath( dirname( __FILE__ ) ).'/_obfuscator.class.php' );
include( realpath( dirname( __FILE__ ) ).'/_file.class.php' );
$this -> _Obfuscator = Obfuscator::instance( );
$_FILE = new File( );
$_FILE -> open( realpath( dirname( __FILE__ ) ).'/config.dat' );
$_CONFIG = unserialize( $_FILE -> read( ) );
$_FILE -> close( );
$this -> _Obfuscator -> _CONFIG = $_CONFIG;
set_time_limit( 3600 * $_CONFIG['time'] );
$this -> _source =& $_CONFIG['source'];
$this -> _destin =& $_CONFIG['target'];
if( isset( $_CONFIG['smarty'] ) && $_CONFIG['smarty'] == true )
{
$this -> _Obfuscator -> _NOCHANGE[] = 'smarty';
$this -> _Obfuscator -> _NOCHANGE[] = 'append';
$this -> _Obfuscator -> _NOCHANGE[] = 'append_by_ref';
$this -> _Obfuscator -> _NOCHANGE[] = 'assign';
$this -> _Obfuscator -> _NOCHANGE[] = 'assign_by_ref';
$this -> _Obfuscator -> _NOCHANGE[] = 'lear_all_assign';
$this -> _Obfuscator -> _NOCHANGE[] = 'clear_all_cache';
$this -> _Obfuscator -> _NOCHANGE[] = 'clear_assign';
$this -> _Obfuscator -> _NOCHANGE[] = 'clear_cache';
$this -> _Obfuscator -> _NOCHANGE[] = 'clear_compiled_tpl';
$this -> _Obfuscator -> _NOCHANGE[] = 'clear_config';
$this -> _Obfuscator -> _NOCHANGE[] = 'config_load';
$this -> _Obfuscator -> _NOCHANGE[] = 'display';
$this -> _Obfuscator -> _NOCHANGE[] = 'fetch';
$this -> _Obfuscator -> _NOCHANGE[] = 'get_config_vars';
$this -> _Obfuscator -> _NOCHANGE[] = 'get_registered_object';
$this -> _Obfuscator -> _NOCHANGE[] = 'get_template_vars';
$this -> _Obfuscator -> _NOCHANGE[] = 'is_cached';
$this -> _Obfuscator -> _NOCHANGE[] = 'load_filter';
$this -> _Obfuscator -> _NOCHANGE[] = 'register_block';
$this -> _Obfuscator -> _NOCHANGE[] = 'register_compiler_function';
$this -> _Obfuscator -> _NOCHANGE[] = 'register_function';
$this -> _Obfuscator -> _NOCHANGE[] = 'register_modifier';
$this -> _Obfuscator -> _NOCHANGE[] = 'register_object';
$this -> _Obfuscator -> _NOCHANGE[] = 'register_outputfilter';
$this -> _Obfuscator -> _NOCHANGE[] = 'register_postfilter';
$this -> _Obfuscator -> _NOCHANGE[] = 'register_prefilter';
$this -> _Obfuscator -> _NOCHANGE[] = 'register_resource';
$this -> _Obfuscator -> _NOCHANGE[] = 'trigger_error';
$this -> _Obfuscator -> _NOCHANGE[] = 'template_exists';
$this -> _Obfuscator -> _NOCHANGE[] = 'unregister_block';
$this -> _Obfuscator -> _NOCHANGE[] = 'unregister_compiler_function';
$this -> _Obfuscator -> _NOCHANGE[] = 'unregister_function';
$this -> _Obfuscator -> _NOCHANGE[] = 'unregister_modifier';
$this -> _Obfuscator -> _NOCHANGE[] = 'unregister_object';
$this -> _Obfuscator -> _NOCHANGE[] = 'unregister_outputfilter';
$this -> _Obfuscator -> _NOCHANGE[] = 'unregister_postfilter';
$this -> _Obfuscator -> _NOCHANGE[] = 'unregister_prefilter';
$this -> _Obfuscator -> _NOCHANGE[] = 'unregister_resource';
$this -> _Obfuscator -> _NOCHANGE[] = 'capture';
$this -> _Obfuscator -> _NOCHANGE[] = 'config_load';
$this -> _Obfuscator -> _NOCHANGE[] = 'foreach';
$this -> _Obfuscator -> _NOCHANGE[] = 'foreachelse';
$this -> _Obfuscator -> _NOCHANGE[] = 'include';
$this -> _Obfuscator -> _NOCHANGE[] = 'include_php';
$this -> _Obfuscator -> _NOCHANGE[] = 'insert';
$this -> _Obfuscator -> _NOCHANGE[] = 'if';
$this -> _Obfuscator -> _NOCHANGE[] = 'elseif';
$this -> _Obfuscator -> _NOCHANGE[] = 'else';
$this -> _Obfuscator -> _NOCHANGE[] = 'ldelim';
$this -> _Obfuscator -> _NOCHANGE[] = 'rdelim';
$this -> _Obfuscator -> _NOCHANGE[] = 'literal';
$this -> _Obfuscator -> _NOCHANGE[] = 'php';
$this -> _Obfuscator -> _NOCHANGE[] = 'section';
$this -> _Obfuscator -> _NOCHANGE[] = 'sectionelse';
$this -> _Obfuscator -> _NOCHANGE[] = 'strip';
$this -> _Obfuscator -> _NOCHANGE[] = 'assign';
$this -> _Obfuscator -> _NOCHANGE[] = 'counter';
$this -> _Obfuscator -> _NOCHANGE[] = 'cycle';
$this -> _Obfuscator -> _NOCHANGE[] = 'debug';
$this -> _Obfuscator -> _NOCHANGE[] = 'eval';
$this -> _Obfuscator -> _NOCHANGE[] = 'fetch';
$this -> _Obfuscator -> _NOCHANGE[] = 'html_checkboxes';
$this -> _Obfuscator -> _NOCHANGE[] = 'html_image';
$this -> _Obfuscator -> _NOCHANGE[] = 'html_options';
$this -> _Obfuscator -> _NOCHANGE[] = 'html_radios';
$this -> _Obfuscator -> _NOCHANGE[] = 'html_select_date';
$this -> _Obfuscator -> _NOCHANGE[] = 'html_select_time';
$this -> _Obfuscator -> _NOCHANGE[] = 'html_table';
$this -> _Obfuscator -> _NOCHANGE[] = 'math';
$this -> _Obfuscator -> _NOCHANGE[] = 'mailto';
$this -> _Obfuscator -> _NOCHANGE[] = 'popup_init';
$this -> _Obfuscator -> _NOCHANGE[] = 'popup';
$this -> _Obfuscator -> _NOCHANGE[] = 'textformat';
}
if( isset( $_CONFIG['nochange'] ) && !empty( $_CONFIG['nochange'] ) )
{
$exp = explode( ',', $_CONFIG['nochange'] );
if( sizeof( $exp ) >= 1 )
{
foreach( $exp as $key => $value )
{
$this -> _Obfuscator -> _NOCHANGE[] = preg_replace( '/\s/', '' , strtolower( $value ) );
}
}
}
}
function run( )
{
$this -> readFiles( $this -> _source , $this -> _destin );
$this -> _Obfuscator -> ObfSaveRandomsFile( );
$this -> _Obfuscator -> ObfSaveFunctionsFile( );
$this -> _Obfuscator -> ObfSaveClassesFile( );
$this -> _Obfuscator -> ObfSaveVariablesFile( );
$this -> procesFiles( $this -> _source , $this -> _destin );
echo '<script>this.window.location.href(\'finish.php\')</script>';
}
function readFiles( $_dir , $_dest )
{
$_files = $this -> _getDirectory( $_dir );
if( is_array( $_files ) )
{
foreach( $_files AS $value )
{
if( is_dir( $_dir.'/'.$value ) )
{
$this -> readFiles( $_dir.'/'.$value , $_dest.'/'.$value );
} else if( eregi( '.php', $value ) && file_exists( $_dir.'/'.$value) ) {
$this -> runObfuscatorSearch( $_dir.'/'.$value , $_dest.'/'.$value );
}
}
}
}
function procesFiles( $_dir , $_dest )
{
$this -> _i++;
$_files = $this -> _getDirectory( $_dir );
if( is_array( $_files ) )
{
foreach( $_files AS $value )
{
if( is_dir( $_dir.'/'.$value ) )
{
if( $this -> _i == 1 ) { echo '<b>'.$value.'</b>';$this -> _Obfuscator -> ObfSetDir( $value ); }
$this -> makeDir( $_dest.'/'.$value );
$this -> procesFiles( $_dir.'/'.$value , $_dest.'/'.$value );
} else if( eregi( '.php', $value ) && file_exists( $_dir.'/'.$value) ) {
$this -> runObfuscatorReplace( $_dir.'/'.$value , $_dest.'/'.$value );
} else {
copy( $_dir.'/'.$value , $_dest.'/'.$value );
}
}
}
$this -> _i--;
}
function runObfuscatorSearch( $_addr = null , $_dest )
{
echo "Process File :: ".realpath( $_addr )." <BR>\n";
$this -> _Obfuscator -> ObfSetSource( $_addr );
$this -> _Obfuscator -> ObfSetDestination( $_dest );
$this -> _Obfuscator -> ObfSearch( );
}
function runObfuscatorReplace( $_addr = null , $_dest )
{
$this -> _Obfuscator -> ObfSetSource( $_addr );
$this -> _Obfuscator -> ObfSetDestination( $_dest );
$this -> _Obfuscator -> ObfReplace( );
echo "Creates File :: ".realpath( $_dest )." <BR>\n";
}
function makeDir( $_addr )
{
if( !is_dir( $_addr ) )
{
mkdir ( $_addr , 0777 );
}
}
function _getDirectory( $directory )
{
$array = null;
$dir = $directory;
if ( is_dir( $dir ) )
{
if ($dh = opendir( $dir ) )
{
while ( ( $file = readdir( $dh ) ) !== false)
{
if( $file != '.' && $file != '..' )
{
$array[] = $file;
}
}
closedir($dh);
}
}
return $array;
}
}
$obj = new ObfRunMe( );
$obj -> run( );
?>
|