!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache. PHP/7.3.33 

uname -a: Linux acloudg.aryanict.com 4.18.0-513.9.1.lve.el8.x86_64 #1 SMP Mon Dec 4 15:01:22 UTC
2023 x86_64
 

uid=1095(katebhospital) gid=1098(katebhospital) groups=1098(katebhospital) 

Safe-mode: OFF (not secure)

/var/softaculous/sitepad/editor/site-data/plugins/gosmtp-pro/main/mailer/gmail/   drwxr-xr-x
Free 293.34 GB of 429.69 GB (68.27%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


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

namespace GOSMTP\mailer\gmail;

class 
Auth{
    
    private 
$client_id;
    private 
$client_secret;
    private 
$redirect_uri;
    private 
$state;
    private 
$options;
    private 
$accessTokenMethod 'POST';
    
    public function 
__construct($client_id ''$client_secret ''$redirect_uri ''$state ''){
        
$this->client_id $client_id;
        
$this->client_secret $client_secret;
        
$this->redirect_uri $redirect_uri;
        
$this->state $state;
        
$this->options $this->getConfig();
    }
 
    private function 
getConfig(){
        return array(
            
'client_id' => $this->client_id,
            
'client_secret' => $this->client_secret,
            
'redirect_uri' => $this->redirect_uri,
            
'urlAuthorize' => 'https://accounts.google.com/o/oauth2/auth',
            
'urlAccessToken' => 'https://www.googleapis.com/oauth2/v4/token',
            
'urlResourceOwnerDetails' => '',
            
'scopes' => 'https://www.googleapis.com/auth/gmail.compose',
            
'access_type' => 'offline',
            
'include_granted_scopes' => 'true',
            
'approval_prompt' => 'force',
            
'state' => $this->state,
        );
    }
    
    public function 
setClientId($client_id){
        
$this->client_id$client_id;
        return 
true;
    }

    public function 
setClientSecret($client_secret){
        
$this->client_secret $client_secret;
        return 
true;
    }

    public function 
add_scope($scope){
        if(
is_array($scope)){
            
$separator ',';
            
$this->options['scope'] = implode($separator$scope);
            return 
true;
        }
        
$this->options['scope'] = $scope;
        return 
true;
    }

    public function 
set_access_type($access_type){
        
$this->options['access_type'] = $access_type;
        return 
true;
    }
    
    public function 
set_approval_prompt($approval_prompt){
        
$this->options['approval_prompt'] = $approval_prompt;
        return 
true;
    }
    
    public function 
getAuthUrl(){
        return 
$this->getAuthorizationUrl();
    }
    
    public function 
getAuthorizationUrl($options = []){
        
$base $this->options['urlAuthorize'];

        
$params $this->getAuthorizationParameters($options);
        
$query  http_build_query($paramsnull'&', \PHP_QUERY_RFC3986);

        return 
$this->appendQuery($base$query);
    }

    private function 
getAuthorizationParameters($options){

        if(empty(
$options['scope'])){
            
$options['scope'] = $this->options['scopes'];
        }

        
$options += [
            
'access_type' => $this->options['access_type'],
            
'include_granted_scopes' => $this->options['include_granted_scopes'],
            
'response_type'   => 'code',
            
'state' => $this->getRandomState().$this->options['state'],
            
'approval_prompt' => $this->options['approval_prompt'],
            
        ];

        if(
is_array($options['scope'])){
            
$separator ',';
            
$options['scope'] = implode($separator$options['scope']);
        }

        
// Store the state as it may need to be accessed later on.
        
$this->options['state'] = $options['state'];

        
// Business code layer might set a different redirect_uri parameter
        // depending on the context, leave it as-is
        
if(!isset($options['redirect_uri'])){
            
$options['redirect_uri'] = $this->options['redirect_uri'];
        }

        
$options['client_id'] = $this->options['client_id'];

        return 
$options;
    }
    
    protected function 
getRandomState($length 32){
        
// Converting bytes to hex will always double length. Hence, we can reduce
        // the amount of bytes by half to produce the correct length. 
        
$state bin2hex(random_bytes($length 2));

        
update_option('_gosmtp_last_generated_state'$state);

        return 
$state;
    }
    
    protected function 
appendQuery($url$query){
        
$query trim($query'?&');

        if(
$query){
            
$glue strstr($url'?') === false '?' '&';
            return 
$url $glue $query;
        }

        return 
$url;
    }
    
    public function 
sendTokenRequest($type$params){
        try {
            
$tokens $this->getAccessToken($type$params);
            return 
$tokens;
        } catch (\
Exception $exception) {
            return new \
WP_Error(423$exception->getMessage());
        }
    }
    
    
/**
    * Requests an access token using a specified grant and option set.
    *
    * @param  mixed $grant
    * @param  array $options
    * @throws \Exception
    * @return array tokens
    */
    
public function getAccessToken($grant, array $options = []){
        
$params = [
            
'client_id' => $this->options['client_id'],
            
'client_secret' => $this->options['client_secret'],
            
'redirect_uri'  => $this->options['redirect_uri'],
            
'grant_type' => $grant,
        ];

        
$params += $options;

        
$requestData $this->getAccessTokenRequestDetails($params);


        
$response wp_remote_request($requestData['url'], $requestData['params']);

        if(
is_wp_error($response)) {
            throw new \
Exception(
                
$response->get_error_message()
            );
            return 
$response;
        }

        
$responseBody wp_remote_retrieve_body($response);
    

        if(
false === is_array($response)){
            throw new \
Exception(
                
'Invalid response received from Authorization Server. Expected JSON.'
            
);
        }

        if(empty([
'access_token'])){
            throw new \
Exception(
                
'Invalid response received from Authorization Server.'
            
);
        }

        return \
json_decode($responseBodytrue);
    }

    
/**
    * Returns a prepared request for requesting an access token.
    *
    * @param array $params Query string parameters
    * @return array $requestDetails
    */
    
protected function getAccessTokenRequestDetails($params){
        
$method  $this->accessTokenMethod;
        
$url     $this->options['urlAccessToken'];
        
$options http_build_query($paramsnull'&', \PHP_QUERY_RFC3986);

        return [
            
'url' => $url,
            
'params' => [
                
'method' => $method,
                
'body' => $options,
                
'headers' => [
                    
'content-type' => 'application/x-www-form-urlencoded'
                
]
            ]
        ];
    }

}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

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

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

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by KaizenLouie | C99Shell Github | Generation time: 0.0046 ]--