\n \n Standalone file scan - checks for a valid set of E107 files
"; // Sort out other directories @include_once('./../e107_config.php'); if(!isset($ADMIN_DIRECTORY)) { // e107_config.php is either empty, not valid or doesn't exist so use some defaults echo "e107_config.php not found or not configured. Using default directory structure.
"; $ADMIN_DIRECTORY = "e107_admin/"; $FILES_DIRECTORY = "e107_files/"; $IMAGES_DIRECTORY = "e107_images/"; $THEMES_DIRECTORY = "e107_themes/"; $PLUGINS_DIRECTORY = "e107_plugins/"; $HANDLERS_DIRECTORY = "e107_handlers/"; $LANGUAGES_DIRECTORY = "e107_languages/"; $HELP_DIRECTORY = "e107_docs/help/"; $DOWNLOADS_DIRECTORY = "e107_files/downloads/"; } else { echo "Using directory structure from e107_config.php
"; } $imode = 'nuvola_light'; $fi = new file_inspector(TRUE); // Needed to make everything work define("e107_INIT", TRUE); define("e_BASE", $fi->root_web."/"); // No trailing slash stored define("e_IMAGE", e_BASE.$IMAGES_DIRECTORY); define("e_LANGUAGEDIR", e_BASE.$LANGUAGES_DIRECTORY); echo "Image Directory: ".e_IMAGE."
"; if (!realpath(__FILE__)) { echo 'realpath() function disabled by host - E107 will not run without modification

'; } if (!function_exists('ob_end_clean')) { echo "function ob_end_clean() does not exist. Creating temporary function.
"; function ob_end_clean() { return FALSE; } } if (!file_exists('core_image.php')) { echo 'Cannot continue - core_image.php does not exist
'; return; } if (!file_exists(e_LANGUAGEDIR.'English/admin/lan_fileinspector.php')) { echo 'Language file not found - cannot continue
'; return; } // Strip trailing '/' off each directory name $DOCS_DIRECTORY = str_replace('help/', '', $HELP_DIRECTORY); $maindirs = array('admin' => $ADMIN_DIRECTORY, 'files' => $FILES_DIRECTORY, 'images' => $IMAGES_DIRECTORY, 'themes' => $THEMES_DIRECTORY, 'plugins' => $PLUGINS_DIRECTORY, 'handlers' => $HANDLERS_DIRECTORY, 'languages' => $LANGUAGES_DIRECTORY, 'downloads' => $DOWNLOADS_DIRECTORY, 'docs' => $DOCS_DIRECTORY); foreach ($maindirs as $maindirs_key => $maindirs_value) { $coredir[$maindirs_key] = substr($maindirs_value, 0, -1); if (!file_exists(e_BASE.$coredir[$maindirs_key])) { echo "Complete directory missing: ".$coredir[$maindirs_key]."
"; } } require_once('core_image.php'); require_once(e_LANGUAGEDIR.'English/admin/lan_fileinspector.php'); define ("SITENAME", "Current E107 Site"); $fi -> scan_results(); echo ""; return; } // Normal operation here require_once('../class2.php'); if (!getperms('Y')) { header('location:'.e_BASE.'index.php'); exit; } $e_sub_cat = 'fileinspector'; require_once('auth.php'); require_once(e_HANDLER.'form_handler.php'); $rs = new form; $fi = new file_inspector; $DOCS_DIRECTORY = str_replace('help/', '', $HELP_DIRECTORY); $maindirs = array('admin' => $ADMIN_DIRECTORY, 'files' => $FILES_DIRECTORY, 'images' => $IMAGES_DIRECTORY, 'themes' => $THEMES_DIRECTORY, 'plugins' => $PLUGINS_DIRECTORY, 'handlers' => $HANDLERS_DIRECTORY, 'languages' => $LANGUAGES_DIRECTORY, 'downloads' => $DOWNLOADS_DIRECTORY, 'docs' => $DOCS_DIRECTORY); foreach ($maindirs as $maindirs_key => $maindirs_value) { $coredir[$maindirs_key] = substr($maindirs_value, 0, -1); } require_once('core_image.php'); $handle = opendir(e_PLUGIN); while (false !== ($readdir = readdir($handle))) { if ($readdir != '.' && $readdir != '..' && $readdir != '/' && $readdir != 'CVS' && $readdir != 'Thumbs.db' && (strpos('._', $readdir) === FALSE)) { if (is_dir(e_PLUGIN.$readdir)) { if (is_readable(e_PLUGIN.$readdir.'/e_inspect.php')) { include_once(e_PLUGIN.$readdir.'/e_inspect.php'); } } } } closedir($handle); ksort($core_image[$coredir['plugins']]); if (e_QUERY) { $fi -> snapshot_interface(); } else if (isset($_POST['scan'])) { $fi -> scan_results(); $fi -> scan_config(); } else { $fi -> scan_config(); } class file_inspector { var $root_dir; // Note - no trailing '/' var $root_web; // For HTML etc var $files = array(); var $parent; var $count = array(); var $results = 0; var $line_results = 0; var $BASE_PLUGIN_DIR; var $BASE_THEMES_DIR; var $alone = FALSE; var $dotree = FALSE; function file_inspector($standalone = FALSE) { global $PLUGINS_DIRECTORY, $THEMES_DIRECTORY; $this->dotree = ($_POST['type'] == 'tree'); set_time_limit(240); if ($standalone == TRUE) { $this->alone = TRUE; $this->root_dir = realpath(dirname(__FILE__)."/./../"); echo "Root File Directory: ".$this->root_dir."
"; $this->root_web = './..'; $_POST['type'] = 'list'; $_POST['core'] = 'fail'; $_POST['integrity'] = TRUE; $_POST['oldcore'] = 0; $_POST['noncore'] = 0; $_POST['missing'] = 1; $this->dotree = FALSE; $this->BASE_PLUGIN_DIR = $this -> root_dir.'/'.$PLUGINS_DIRECTORY; if (substr($this->BASE_PLUGIN_DIR,-1) == '/') $this->BASE_PLUGIN_DIR = substr($this->BASE_PLUGIN_DIR,0,-1); $this->BASE_THEMES_DIR = $this -> root_dir.'/'.$THEMES_DIRECTORY; if (substr($this->BASE_THEMES_DIR,-1) == '/') $this->BASE_THEMES_DIR = substr($this->BASE_THEMES_DIR,0,-1); return; } global $e107; $this -> root_dir = $e107 -> file_path; if (substr($this -> root_dir, -1) == '/') { $this -> root_dir = substr($this -> root_dir, 0, -1); } if ($_POST['core'] == 'fail') { $_POST['integrity'] = TRUE; } if (MAGIC_QUOTES_GPC && $_POST['regex']) { $_POST['regex'] = stripslashes($_POST['regex']); } if ($_POST['regex']) { if ($_POST['core'] == 'fail') { $_POST['core'] = 'all'; } $_POST['missing'] = 0; $_POST['integrity'] = 0; } $this->BASE_PLUGIN_DIR = $this -> root_dir.'/'.$PLUGINS_DIRECTORY; if (substr($this->BASE_PLUGIN_DIR,-1) == '/') $this->BASE_PLUGIN_DIR = substr($this->BASE_PLUGIN_DIR,0,-1); $this->BASE_THEMES_DIR = $this -> root_dir.'/'.$THEMES_DIRECTORY; if (substr($this->BASE_THEMES_DIR,-1) == '/') $this->BASE_THEMES_DIR = substr($this->BASE_THEMES_DIR,0,-1); } function scan_config() { global $ns, $rs, $pref; $text = "
"; $text .= ""; $text .= ""; $text .= ""; $text .= ""; $text .= ""; $text .= ""; if ($pref['developer']) { $text .= ""; $text .= ""; $text .= ""; $text .= ""; $text .= ""; } $text .= "
".FC_LAN_2."
".FC_LAN_3." ".FC_LAN_5.": ".FC_LAN_4."   ".FC_LAN_6."   ".FC_LAN_12."  
".FC_LAN_3." ".FC_LAN_13.": ".FC_LAN_9."   ".FC_LAN_10."  
".FC_LAN_3." ".FC_LAN_7.": ".FC_LAN_9."   ".FC_LAN_10."  
".FC_LAN_3." ".FC_LAN_21.": ".FC_LAN_9."   ".FC_LAN_10."  
".FC_LAN_8.": ".FC_LAN_9."   ".FC_LAN_10."  
".FC_LAN_14.": dotree || !isset($_POST['type'])) ? " checked='checked'" : "")." /> ".FC_LAN_15."   dotree ? "" : " checked='checked'")." /> ".FC_LAN_16."  
".FC_LAN_17."
".FC_LAN_18.": ##
".FC_LAN_19.": ".FC_LAN_9."   ".FC_LAN_10."  
".FC_LAN_20.": ".FC_LAN_9."   ".FC_LAN_10."  
".FC_LAN_22.": ".FC_LAN_9."   ".FC_LAN_10."  
".$rs -> form_button('submit', 'scan', FC_LAN_11)."
"; $ns -> tablerender(FC_LAN_1, $text); } function scan($dir, $image) { $handle = opendir($dir.'/'); while (false !== ($readdir = readdir($handle))) { if ($readdir != '.' && $readdir != '..' && $readdir != '/' && $readdir != 'CVS' && $readdir != 'Thumbs.db' && (strpos('._', $readdir) === FALSE)) { $path = $dir.'/'.$readdir; if (is_dir($path)) { $dirs[$path] = $readdir; } else if (!isset($image[$readdir])) { $files[$readdir] = $this -> checksum($path, TRUE); } } } closedir($handle); if (isset($dirs)) { ksort ($dirs); foreach ($dirs as $dir_path => $dir_list) { $list[$dir_list] = ($set = $this -> scan($dir_path, $image[$dir_list])) ? $set : array(); } } if (isset($files)) { ksort ($files); foreach ($files as $file_name => $file_list) { $list[$file_name] = $file_list; } } return $list; } // Given a full path and filename, looks it up in the list to determine valid actions; returns: // 'check' - file is expected to be present, and validity is to be checked // 'ignore' - file may or may not be present - check its validity if found, but not an error if missing // 'uncalc' - file must be present, but its integrity cannot be checked. // 'nocalc' - file may be present, but its integrity cannot be checked. Not an error if missing function check_action($dir, $name) { global $coredir; if ($name == 'e_inspect.php') return 'nocalc'; // Special case for plugin integrity checking $filename = $dir.'/'.$name; $admin_dir = $this -> root_dir.'/'.$coredir['admin'].'/'; $test_list = array( $admin_dir.'core_image.php' => 'uncalc', $admin_dir.'filetypes.php' => 'uncalc', $admin_dir.'filetypes_.php' => 'ignore', $admin_dir.'admin_filetypes.php' => 'nocalc', $this -> root_dir.'/e107_config.php' => 'uncalc', $this -> root_dir.'/e107.htaccess' => 'ignore', $this -> root_dir.'/install.php' => 'ignore' ); if (isset($test_list[$filename])) return $test_list[$filename]; return 'check'; } // This function does the real work // $list - // $deprecated // $level // $dir // &$tree_end // &$parent_expand function inspect($list, $deprecated, $level, $dir, &$tree_end, &$parent_expand) { global $coredir, $imode; unset ($childOut); $parent_expand = false; $sub_text = ''; if (substr($dir, -1) == '/') { $dir = substr($dir, 0, -1); } $dir_id = dechex(crc32($dir)); $this -> files[$dir_id]['.']['level'] = $level; $this -> files[$dir_id]['.']['parent'] = $this -> parent; $this -> files[$dir_id]['.']['file'] = $dir; $directory = $level ? basename($dir) : SITENAME; $level++; foreach ($list as $key => $value) { $this -> parent = $dir_id; if (is_array($value)) { // Entry is a subdirectory - recurse another level $path = $dir.'/'.$key; $child_open = false; $child_end = true; if ((($dir == $this->BASE_PLUGIN_DIR) || ($dir == $this->BASE_THEMES_DIR)) && !is_readable($path)) { // Its one of the plugin or theme directories which doesn't exist - that could be OK // echo "Plugin or theme folder missing: {$path}
"; $icon = ""; $text = "
"; $text .= " ".$icon." ".$key." - ".FR_LAN_31; $text .= "
"; $sub_text .= $text; $sub_id = dechex(crc32($path)); $this -> files[$sub_id]['.']['icon'] = 'folder_missing.png'; $this -> files[$sub_id]['.']['level'] = $level+1; $this -> files[$sub_id]['.']['parent'] = $dir; $this -> files[$sub_id]['.']['file'] = $path; } else { $sub_text .= $this -> inspect($value, $deprecated[$key], $level, $path, $child_end, $child_expand); } $tree_end = false; if ($child_expand) { $parent_expand = true; $last_expand = true; } } else { $path = $dir.'/'.$key; $fid = strtolower($key); $this -> files[$dir_id][$fid]['file'] = ($this->dotree) ? $key : $path; if (($this -> files[$dir_id][$fid]['size'] = filesize($path)) !== FALSE) { // We're checking a file here if ($_POST['core'] != 'none') { // Look at core files $this -> count['core']['num']++; $this -> count['core']['size'] += $this -> files[$dir_id][$fid]['size']; if ($_POST['regex']) { // Developer prefs activated - search file contents according to regex $file_content = file($path); // Get contents of file if (($this -> files[$dir_id][$fid]['size'] = filesize($path)) !== FALSE) { if ($this -> files[$dir_id][$fid]['lines'] = preg_grep("#".$_POST['regex']."#".$_POST['mod'], $file_content)) { // Search string found - add file to list $this -> files[$dir_id][$fid]['file'] = ($this->dotree) ? $key : $path; $this -> files[$dir_id][$fid]['icon'] = 'file_core.png'; $dir_icon = 'fileinspector.png'; $parent_expand = TRUE; $this -> results++; $this -> line_results += count($this -> files[$dir_id][$fid]['lines']); } else { // Search string not found - discard from list unset($this -> files[$dir_id][$fid]); $known[$dir_id][$fid] = true; $dir_icon = ($dir_icon == 'fileinspector.png') ? $dir_icon : 'folder.png'; } } } else { if ($_POST['integrity']) { // Actually check file integrity switch ($this_action = $this->check_action($dir,$key)) { case 'ignore' : case 'check' : if ($this -> checksum($path) != $value) { $this -> count['fail']['num']++; $this -> count['fail']['size'] += $this -> files[$dir_id][$fid]['size']; $this -> files[$dir_id][$fid]['icon'] = 'file_fail.png'; $dir_icon = 'folder_fail.png'; $parent_expand = TRUE; } else { $this -> count['pass']['num']++; $this -> count['pass']['size'] += $this -> files[$dir_id][$fid]['size']; if ($_POST['core'] != 'fail') { $this -> files[$dir_id][$fid]['icon'] = 'file_check.png'; $dir_icon = ($dir_icon == 'folder_fail.png' || $dir_icon == 'folder_missing.png') ? $dir_icon : 'folder_check.png'; } else { unset($this -> files[$dir_id][$fid]); $known[$dir_id][$fid] = true; } } break; case 'uncalc' : case 'nocalc' : $this -> count['uncalculable']['num']++; $this -> count['uncalculable']['size'] += $this -> files[$dir_id][$fid]['size']; if ($_POST['core'] != 'fail') { $this -> files[$dir_id][$fid]['icon'] = 'file_uncalc.png'; } else { unset($this -> files[$dir_id][$fid]); $known[$dir_id][$fid] = true; } break; } } else { // Just identify as core file $this -> files[$dir_id][$fid]['icon'] = 'file_core.png'; } } } else { unset ($this -> files[$dir_id][$fid]); $known[$dir_id][$fid] = true; } } elseif ($_POST['missing']) { switch ($this_action = $this->check_action($dir,$key)) { case 'check' : case 'uncalc' : $this -> count['missing']['num']++; $this -> files[$dir_id][$fid]['icon'] = 'file_missing.png'; $dir_icon = ($dir_icon == 'folder_fail.png') ? $dir_icon : 'folder_missing.png'; $parent_expand = TRUE; break; case 'ignore' : case 'nocalc' : // These files can be missing without error - delete from the list unset ($this -> files[$dir_id][$fid]); $known[$dir_id][$fid] = true; break; } } else { unset ($this -> files[$dir_id][$fid]); } } } if ($_POST['noncore'] || $_POST['oldcore']) { $handle = opendir($dir.'/'); while (false !== ($readdir = readdir($handle))) { if ($readdir != '.' && $readdir != '..' && $readdir != '/' && $readdir != 'CVS' && $readdir != 'Thumbs.db' && (strpos('._', $readdir) === FALSE)) { if (is_dir($dir.'/'.$readdir)) { if (!isset($list[$readdir]) && ($level > 1 || $readdir == 'e107_install')) { $child_open = false; $child_end = true; $sub_text .= $this -> inspect(array(), $deprecated[$readdir], $level, $dir.'/'.$readdir, $child_end, $child_expand); $tree_end = false; if ($child_expand) { $parent_expand = true; $last_expand = true; } } } else { $aid = strtolower($readdir); if (!isset($this -> files[$dir_id][$aid]['file']) && !$known[$dir_id][$aid]) { if (strpos($dir.'/'.$readdir, 'htmlarea') === false) { if (isset($deprecated[$readdir]) && $dir.'/'.$readdir != $this -> root_dir.'/'.$coredir['admin'].'/filetypes.php') { if ($_POST['oldcore']) { $this -> files[$dir_id][$aid]['file'] = ($this->dotree) ? $readdir : $dir.'/'.$readdir; $this -> files[$dir_id][$aid]['size'] = filesize($dir.'/'.$readdir); $this -> files[$dir_id][$aid]['icon'] = 'file_old.png'; $this -> count['deprecated']['num']++; $this -> count['deprecated']['size'] += $this -> files[$dir_id][$aid]['size']; } } else { if ($_POST['noncore']) { $this -> files[$dir_id][$aid]['file'] = ($this->dotree) ? $readdir : $dir.'/'.$readdir; $this -> files[$dir_id][$aid]['size'] = filesize($dir.'/'.$readdir); $this -> files[$dir_id][$aid]['icon'] = 'file_unknown.png'; $this -> count['unknown']['num']++; $this -> count['unknown']['size'] += $this -> files[$dir_id][$aid]['size']; } } } else { $this -> files[$dir_id][$aid]['file'] = ($this->dotree) ? $readdir : $dir.'/'.$readdir; $this -> files[$dir_id][$aid]['size'] = filesize($dir.'/'.$readdir); $this -> files[$dir_id][$aid]['icon'] = 'file_warning.png'; $this -> count['warning']['num']++; $this -> count['warning']['size'] += $this -> files[$dir_id][$aid]['size']; $this -> count['deprecated']['num']++; $this -> count['deprecated']['size'] += $this -> files[$dir_id][$aid]['size']; $dir_icon = 'folder_warning.png'; $parent_expand = TRUE; } if ($_POST['regex']) { $file_content = file($dir.'/'.$readdir); if ($this -> files[$dir_id][$aid]['lines'] = preg_grep("#".$_POST['regex']."#".$_POST['mod'], $file_content)) { $dir_icon = 'fileinspector.png'; $parent_expand = TRUE; $this -> results++; } else { unset($this -> files[$dir_id][$aid]); $dir_icon = ($dir_icon == 'fileinspector.png') ? $dir_icon : 'folder.png'; } } else { if (isset($deprecated[$readdir])) { if ($_POST['oldcore']) { $dir_icon = ($dir_icon == 'folder_warning.png' || $dir_icon == 'folder_fail.png' || $dir_icon == 'folder_missing.png' || $dir_icon == 'folder_old_dir.png') ? $dir_icon : 'folder_old.png'; $parent_expand = TRUE; } } else { if ($_POST['noncore']) { $dir_icon = ($dir_icon == 'folder_warning.png' || $dir_icon == 'folder_fail.png' || $dir_icon == 'folder_missing.png' || $dir_icon == 'folder_old.png' || $dir_icon == 'folder_old_dir.png') ? $dir_icon : 'folder_unknown.png'; $parent_expand = TRUE; } } } } else if ($_POST['core'] == 'none') { unset($this -> files[$dir_id][$aid]); } } } } closedir($handle); } $dir_icon = $dir_icon ? $dir_icon : 'folder.png'; $icon = ""; $hide = ($last_expand && $dir_icon != 'folder_core.png') ? "" : "style='display: none'"; $text = "
"; $text .= $tree_end ? "" : ""; $text .= " ".$icon." ".$directory.""; $text .= $tree_end ? "" : "
".$sub_text."
"; $text .= "
"; $this -> files[$dir_id]['.']['icon'] = $dir_icon; return $text; } function scan_results() { global $ns, $rs, $core_image, $deprecated_image, $imode, $tp, $e107; $scan_text = $this -> inspect($core_image, $deprecated_image, 0, $this -> root_dir); // if ($_POST['type'] == 'tree') if ($this->dotree) { $text = "
"; $text .= ""; $text .= ""; $text .= "
".FR_LAN_2."
".$scan_text."
"; } else { $text = "
"; $text .= "
".FR_LAN_2."
"; } $text .= ""; // if ($_POST['type'] == 'tree') if ($this->dotree) { $text .= ""; } else { $text .= ""; } if ($_POST['core'] != 'none') { $text .= ""; } if ($_POST['missing']) { $text .= ""; } if ($_POST['noncore']) { $text .= ""; } if ($_POST['oldcore']) { $text .= ""; } if ($_POST['core'] == 'all') { $text .= ""; } if ($_POST['regex']) { $text .= ""; $text .= ""; } if ($this -> count['warning']['num']) { $text .= ""; $text .= ""; $text .= ""; $text .= ""; } if ($_POST['integrity'] && $_POST['core'] != 'none') { $integrity_icon = $this -> count['fail']['num'] ? 'integrity_fail.png' : 'integrity_pass.png'; $integrity_text = $this -> count['fail']['num'] ? '( '.$this -> count['fail']['num'].' '.FR_LAN_19.' )' : '( '.FR_LAN_20.' )'; $text .= ""; $text .= ""; $text .= ""; $text .= ""; $text .= ""; $text .= ""; $text .= ""; $text .= ""; } // if ($_POST['type'] == 'tree' && !$this -> results && $_POST['regex']) if ($this->dotree && !$this -> results && $_POST['regex']) { $text .= ""; } $text .= "
 ".FR_LAN_3." root_dir))."')\">
 ".FR_LAN_3."
 ".FR_LAN_4.": ".($this -> count['core']['num'] ? $this -> count['core']['num'] : FR_LAN_21)." ".$e107->parseMemorySize($this -> count['core']['size'], 2)."
 ".FR_LAN_22.": ".($this -> count['missing']['num'] ? $this -> count['missing']['num'] : FR_LAN_21)." 
 ".FR_LAN_5.": ".($this -> count['unknown']['num'] ? $this -> count['unknown']['num'] : FR_LAN_21)." ".$e107->parseMemorySize($this -> count['unknown']['size'], 2)."
 ".FR_LAN_24.": ".($this -> count['deprecated']['num'] ? $this -> count['deprecated']['num'] : FR_LAN_21)." ".$e107->parseMemorySize($this -> count['deprecated']['size'], 2)."
 ".FR_LAN_6.": ".($this -> count['core']['num'] + $this -> count['unknown']['num'] + $this -> count['deprecated']['num'])." ".$e107->parseMemorySize($this -> count['core']['size'] + $this -> count['unknown']['size'] + $this -> count['deprecated']['size'], 2)."
 ".FR_LAN_29.": ".($this -> results)."  
 ".FR_LAN_30.": ".($this -> line_results)."  
 
 ".FR_LAN_26."
 ".FR_LAN_28.": ".($this -> count['warning']['num'] ? $this -> count['warning']['num'] : FR_LAN_21)." ".$e107->parseMemorySize($this -> count['warning']['size'], 2)."
 ".FR_LAN_27."
 
 ".FR_LAN_7." ".$integrity_text."
 ".FR_LAN_8.": ".($this -> count['pass']['num'] ? $this -> count['pass']['num'] : FR_LAN_21)." ".$e107->parseMemorySize($this -> count['pass']['size'], 2)."
 ".FR_LAN_9.": ".($this -> count['fail']['num'] ? $this -> count['fail']['num'] : FR_LAN_21)." ".$e107->parseMemorySize($this -> count['fail']['size'], 2)."
 ".FR_LAN_25.": ".($this -> count['uncalculable']['num'] ? $this -> count['uncalculable']['num'] : FR_LAN_21)." ".$e107->parseMemorySize($this -> count['uncalculable']['size'], 2)."
 
 ".FR_LAN_10.": 

".FR_LAN_23."
"; // if ($_POST['type'] != 'tree') if (!$this->dotree) { $text .= "
"; if (!$this -> results && $_POST['regex']) { $text .= ""; } } foreach ($this -> files as $dir_id => $fid) { ksort($fid); $text .= ($this->dotree) ? "
".FR_LAN_23."
" : ""; $initial = FALSE; foreach ($fid as $key => $stext) { // if ($_POST['type'] == 'tree') if ($this->dotree) // if (!$initial) { if (!$initial) // if ($_POST['type'] == 'tree') { $text .= ""; } } else { // if ($_POST['type'] != 'tree') if (!$this->dotree) { $stext['file'] = str_replace($this -> root_dir."/", "", $stext['file']); } $text .= ""; } $initial = TRUE; } $text .= ($this->dotree) ? "" : ""; } // if ($_POST['type'] != 'tree') if (!$this->dotree) { $text .= '
'; } else { $text .= '
'; } $text .= "

"; if ($this->alone) { echo $text; } else { $ns -> tablerender(FR_LAN_1.'...', $text); } } function create_image($dir, $plugin) { global $core_image, $deprecated_image, $coredir, $plugin_image, $plugin_deprecated_image, $PLUGINS_DIRECTORY; if ($plugin && $plugin !='off') { $dir = $dir.'/'.$PLUGINS_DIRECTORY.$plugin; } foreach ($coredir as $trim_key => $trim_dirs) { $search[$trim_key] = "'".$trim_dirs."'"; $replace[$trim_key] = "\$coredir['".$trim_key."']"; } $data = " scan($dir) : $core_image[$coredir['plugins']][$plugin]; $image_array = var_export($scan_current, true); $data .= "\$core_image[\$coredir['plugins']]['".$plugin."'] = ".$image_array.";\n\n"; } else { $scan_current = ($_POST['snaptype'] == 'current') ? $this -> scan($dir) : $core_image; $image_array = var_export($scan_current, true); $image_array = str_replace($search, $replace, $image_array); $data .= "\$core_image = ".$image_array.";\n\n"; } if ($plugin && $plugin !='off') { $scan_deprecated = ($_POST['snaptype'] == 'deprecated') ? $this -> scan($dir, $core_image) : $deprecated_image[$coredir['plugins']]['".$plugin."']; $image_array = var_export($scan_deprecated, true); $data .= "\$deprecated_image[\$coredir['plugins']]['".$plugin."'] = ".$image_array.";\n\n"; } else { $scan_deprecated = ($_POST['snaptype'] == 'deprecated') ? $this -> scan($dir, $core_image) : $deprecated_image; $image_array = var_export($scan_deprecated, true); $image_array = str_replace($search, $replace, $image_array); $data .= "\$deprecated_image = ".$image_array.";\n\n"; } $data .= "?>"; if ($plugin && $plugin !='off') { $fp = fopen(e_PLUGIN.$plugin .'/e_inspect.php', 'w'); } else { $fp = fopen(e_ADMIN.'core_image.php', 'w'); } fwrite($fp, $data); } function snapshot_interface() { global $ns, $rs; $text = ""; if (isset($_POST['create_snapshot'])) { $this -> create_image($_POST['snapshot_path'], $_POST['plugin']); $text = "
"; $text .= "
".FS_LAN_10."
".FS_LAN_11."
".$rs -> form_button('submit', 'main_page', FS_LAN_12)."

"; } $text .= "
"; $text .= "
".FS_LAN_1."
".FS_LAN_2.": root_dir)."' />
".FS_LAN_3."
".FS_LAN_5.": ".FS_LAN_6."   ".FS_LAN_7."  
".$rs -> form_button('submit', 'create_snapshot', FS_LAN_8)."
"; $ns -> tablerender(FS_LAN_9, $text); } function checksum($filename) { $checksum = md5(str_replace(array(chr(13),chr(10)), "", file_get_contents($filename))); return $checksum; } function regex_match($file) { $file_content = file_get_contents($file); $match = preg_match($_POST['regex'], $file_content); return $match; } } require_once('footer.php'); function headerjs() { global $e107, $imode; $text = " \n"; return $text; } ?>