!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-163-generic #173-Ubuntu SMP Tue Oct 14 17:51:00 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/qr.picotech.app/public_html_v3_3/backup/vendor/psy/psysh/src/   drwxr-xr-x
Free 23.66 GB of 117.98 GB (20.05%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     ConfigPaths.php (6.9 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 * This file is part of Psy Shell.
 *
 * (c) 2012-2020 Justin Hileman
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Psy;

use 
Psy\Exception\ErrorException;
use 
XdgBaseDir\Xdg;

/**
 * A Psy Shell configuration path helper.
 */
class ConfigPaths
{
    
/**
     * Get potential config directory paths.
     *
     * Returns `~/.psysh`, `%APPDATA%/PsySH` (when on Windows), and all
     * XDG Base Directory config directories:
     *
     *     http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
     *
     * @return string[]
     */
    
public static function getConfigDirs()
    {
        
$xdg = new Xdg();

        return 
self::getDirNames($xdg->getConfigDirs());
    }

    
/**
     * Get potential home config directory paths.
     *
     * Returns `~/.psysh`, `%APPDATA%/PsySH` (when on Windows), and the
     * XDG Base Directory home config directory:
     *
     *     http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
     *
     * @return string[]
     */
    
public static function getHomeConfigDirs()
    {
        
$xdg = new Xdg();

        return 
self::getDirNames([$xdg->getHomeConfigDir()]);
    }

    
/**
     * Get the current home config directory.
     *
     * Returns the highest precedence home config directory which actually
     * exists. If none of them exists, returns the highest precedence home
     * config directory (`%APPDATA%/PsySH` on Windows, `~/.config/psysh`
     * everywhere else).
     *
     * @see self::getHomeConfigDirs
     *
     * @return string
     */
    
public static function getCurrentConfigDir()
    {
        
$configDirs self::getHomeConfigDirs();
        foreach (
$configDirs as $configDir) {
            if (@
\is_dir($configDir)) {
                return 
$configDir;
            }
        }

        return 
$configDirs[0];
    }

    
/**
     * Find real config files in config directories.
     *
     * @param string[] $names     Config file names
     * @param string   $configDir Optionally use a specific config directory
     *
     * @return string[]
     */
    
public static function getConfigFiles(array $names$configDir null)
    {
        
$dirs = ($configDir === null) ? self::getConfigDirs() : [$configDir];

        return 
self::getRealFiles($dirs$names);
    }

    
/**
     * Get potential data directory paths.
     *
     * If a `dataDir` option was explicitly set, returns an array containing
     * just that directory.
     *
     * Otherwise, it returns `~/.psysh` and all XDG Base Directory data directories:
     *
     *     http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
     *
     * @return string[]
     */
    
public static function getDataDirs()
    {
        
$xdg = new Xdg();

        return 
self::getDirNames($xdg->getDataDirs());
    }

    
/**
     * Find real data files in config directories.
     *
     * @param string[] $names   Config file names
     * @param string   $dataDir Optionally use a specific config directory
     *
     * @return string[]
     */
    
public static function getDataFiles(array $names$dataDir null)
    {
        
$dirs = ($dataDir === null) ? self::getDataDirs() : [$dataDir];

        return 
self::getRealFiles($dirs$names);
    }

    
/**
     * Get a runtime directory.
     *
     * Defaults to  `/psysh` inside the system's temp dir.
     *
     * @return string
     */
    
public static function getRuntimeDir()
    {
        
$xdg = new Xdg();

        
\set_error_handler([ErrorException::class, 'throwException']);

        try {
            
// XDG doesn't really work on Windows, sometimes complains about
            // permissions, sometimes tries to remove non-empty directories.
            // It's a bit flaky. So we'll give this a shot first...
            
$runtimeDir $xdg->getRuntimeDir(false);
        } catch (
\Exception $e) {
            
// Well. That didn't work. Fall back to a boring old folder in the
            // system temp dir.
            
$runtimeDir \sys_get_temp_dir();
        }

        
\restore_error_handler();

        return 
\strtr($runtimeDir'\\''/').'/psysh';
    }

    private static function 
getDirNames(array $baseDirs)
    {
        
$dirs \array_map(function ($dir) {
            return 
\strtr($dir'\\''/').'/psysh';
        }, 
$baseDirs);

        
// Add ~/.psysh
        
if (isset($_SERVER['HOME']) && $_SERVER['HOME']) {
            
$dirs[] = \strtr($_SERVER['HOME'], '\\''/').'/.psysh';
        }

        
// Add some Windows specific ones :)
        
if (\defined('PHP_WINDOWS_VERSION_MAJOR')) {
            if (isset(
$_SERVER['APPDATA']) && $_SERVER['APPDATA']) {
                
// AppData gets preference
                
\array_unshift($dirs\strtr($_SERVER['APPDATA'], '\\''/').'/PsySH');
            }

            if (isset(
$_SERVER['HOMEDRIVE']) && isset($_SERVER['HOMEPATH'])) {
                
$dir \strtr($_SERVER['HOMEDRIVE'].'/'.$_SERVER['HOMEPATH'], '\\''/').'/.psysh';
                if (!
\in_array($dir$dirs)) {
                    
$dirs[] = $dir;
                }
            }
        }

        return 
$dirs;
    }

    private static function 
getRealFiles(array $dirNames, array $fileNames)
    {
        
$files = [];
        foreach (
$dirNames as $dir) {
            foreach (
$fileNames as $name) {
                
$file $dir.'/'.$name;
                if (@
\is_file($file)) {
                    
$files[] = $file;
                }
            }
        }

        return 
$files;
    }

    
/**
     * Ensure that $dir exists and is writable.
     *
     * Generates E_USER_NOTICE error if the directory is not writable or creatable.
     *
     * @param string $dir
     *
     * @return bool False if directory exists but is not writeable, or cannot be created
     */
    
public static function ensureDir($dir)
    {
        if (!
\is_dir($dir)) {
            
// Just try making it and see if it works
            
@\mkdir($dir0700true);
        }

        if (!
\is_dir($dir) || !\is_writable($dir)) {
            
\trigger_error(\sprintf('Writing to directory %s is not allowed.'$dir), \E_USER_NOTICE);

            return 
false;
        }

        return 
true;
    }

    
/**
     * Ensure that $file exists and is writable, make the parent directory if necessary.
     *
     * Generates E_USER_NOTICE error if either $file or its directory is not writable.
     *
     * @param string $file
     *
     * @return string|false Full path to $file, or false if file is not writable
     */
    
public static function touchFileWithMkdir($file)
    {
        if (
\file_exists($file)) {
            if (
\is_writable($file)) {
                return 
$file;
            }

            
\trigger_error(\sprintf('Writing to %s is not allowed.'$file), \E_USER_NOTICE);

            return 
false;
        }

        if (!
self::ensureDir(\dirname($file))) {
            return 
false;
        }

        
\touch($file);

        return 
$file;
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

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

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

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0053 ]--