!C99Shell v. 2.1 [PHP 8 Update] [02.02.2022]!

Software: Apache/2.4.53 (Unix) OpenSSL/1.1.1o PHP/7.4.29 mod_perl/2.0.12 Perl/v5.34.1. PHP/7.4.29 

uname -a: Linux vps-2738122-x 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64 

uid=1(daemon) gid=1(daemon) grupos=1(daemon) 

Safe-mode: OFF (not secure)

/opt/lampp/lib/php/Tree/Memory/   drwxr-xr-x
Free 13.98 GB of 61.93 GB (22.58%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     Filesystem.php (7.21 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | 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.               |
// +----------------------------------------------------------------------+
// | Authors: Wolfram Kriesing <wolfram@kriesing.de>                      |
// +----------------------------------------------------------------------+
//
//  $Id: Filesystem.php 320703 2011-12-08 22:08:40Z danielc $

require_once 'Tree/Error.php';

/**
 * the Filesystem interface to the tree class
 * this is a bit different, as id we use the entire path, since we know
 * this is unique in a filesystem and an integer id could only be created
 * virtually, it doesnt have a tight connection to the actual directory
 * i.e. using 'add' with ids could fail since we dont know if we get the same
 * id when we call 'add' with a parentId to create a new folder under since
 * our id would be made up. So we use the complete path as id, which takes up
 * a lot of memory, i know but since php is typeless its possible and it makes
 * life easier when we want to create another dir, since we get the dir
 * as parentId passed to the 'add' method, which makes it easy to create
 * a new dir there :-)
 * I also thought about hashing the path name but then the add method is
 * not that easy to implement ... may be one day :-)
 *
 * @access     public
 * @author     Wolfram Kriesing <wolfram@kriesing.de>
 * @version    2001/06/27
 * @package    Tree
 */
 
class Tree_Memory_Filesystem
 
{

    
/**
     * @access public
     * @var    array   saves the options passed to the constructor
     */
    
var $options =  array(
                        
'order'     => '',
                        
'columnNameMaps' => array(),
                    );

    
// {{{ Tree_Memory_Filesystem()

    /**
     * set up this object
     *
     * @version    2002/08/23
     * @access     public
     * @author     Wolfram Kriesing <wolfram@kriesing.de>
     * @param      string  $dsn    the path on the filesystem
     * @param      array   $options  additional options you can set
     */
    
function Tree_Memory_Filesystem ($path$options = array())
    {
        
$this->_path $path;
        
// not in use currently
        
$this->_options $options;
    }

    
// }}}
    // {{{ setup()

    /**
     * retreive all the navigation data from the db and call build to build
     * the tree in the array data and structure
     *
     * @version    2001/11/20
     * @access     public
     * @author     Wolfram Kriesing <wolfram@kriesing.de>
     * @return     boolean     true on success
     */
    
function setup()
    {
        
// unset the data to be sure to get the real data again, no old data
        
unset($this->data);
        if (
is_dir($this->_path)) {
            
$this->data[$this->_path] = array(
                                          
'id'       => $this->_path,
                                          
'name'     => $this->_path,
                                          
'parentId' => 0
                                        
);
            
$this->_setup($this->_path$this->_path);
        }
        return 
$this->data;
    }

    
// }}}
    // {{{ _setup()

    
function _setup($path$parentId 0)
    {
        if (
$handle opendir($path)) {
            while (
false !== ($file readdir($handle))) {
                if (
$file != '.' && $file != '..'
                    
&& is_dir("$path/$file")) {
                    
$this->data[] = array(
                                        
'id'       => "$path/$file",
                                        
'name'     => $file,
                                        
'parentId' => $parentId
                                    
);
                    
$this->_setup("$path/$file""$path/$file");
                }
            }
            
closedir($handle);
        }
    }

    
// }}}
    // {{{ add()

    /**
     * this is tricky on a filesystem, since we are working with id's
     * as identifiers and we need to be sure, the parentId to create
     * a node under is the same as when the tree was last read.
     * but this might be tricky.
     */
    
function add($newValues$parent 0$prevId 0)
    {
        if (!
$parent) {
            
$parent $this->path;
        }
        
# FIXXME do the mapping
        
if (!@mkdir("$parent/{$newValues['name']}"0700)) {
            return 
$this->_raiseError(TREE_ERROR_CANNOT_CREATE_FOLDER,
                                      
$newValues['name'].' under '.$parent,
                                      
__LINE__
                                     
);
        }
        return 
"$parent/{$newValues['name']}";
    }

    
// }}}
    // {{{ remove()

    
function remove($id)
    {
        if (!@
rmdir($id)) {
            return 
$this->_throwError('couldnt remove dir '.$id__LINE__);
        }
        return 
true;
    }

    
// }}}
    // {{{ copy()

    
function copy($srcId$destId)
    {
        
# if(!@copy($srcId, $destId)) this would only be for files :-)
        # FIXXME loop through the directory to copy the children too !!!
        
$dest $destId.'/'.preg_replace('/^.*\//','',$srcId);
        if (
is_dir($dest)) {
            return 
$this->_throwError(
                    
"couldnt copy, $destId already exists in $srcId "__LINE__
                
);
        }
        if (!@
mkdir($dest0700)) {
            return 
$this->_throwError(
                    
"couldnt copy dir from $srcId to $destId "__LINE__
                
);
        }
        return 
true;
    }

    
// }}}
    // {{{ _prepareResults()

    /**
     * prepare multiple results
     *
     * @see        _prepareResult()
     * @access     private
     * @version    2002/03/03
     * @author     Wolfram Kriesing <wolfram@kriesing.de>
     */
    
function _prepareResults($results)
    {
        
$newResults = array();
        foreach (
$results as $aResult) {
            
$newResults[] = $this->_prepareResult($aResult);
        }
        return 
$newResults;
    }

    
// }}}
    // {{{ _prepareResult()

    /**
     * map back the index names to get what is expected
     *
     * @access     private
     * @version    2002/03/03
     * @author     Wolfram Kriesing <wolfram@kriesing.de>
     */
    
function _prepareResult($result)
    {
        
$map $this->getOption('columnNameMaps');
        if (
$map) {
            foreach (
$map as $key => $columnName) {
                
$result[$key] = $result[$columnName];
                unset(
$result[$columnName]);
            }
        }
        return 
$result;
    }

    
// }}}
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

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

--[ c99shell v. 2.1 [PHP 8 Update] [02.02.2022] maintained byC99Shell Github | Generation time: 0.9466 ]--