smsonayla.org - c99shell

!C99Shell v.2.1 [PHP 7 Update] [1.12.2019]!

Software: LiteSpeed. PHP/7.4.33 

uname -a: Linux server704.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13
UTC 2025 x86_64
 

uid=1309(necipbey) gid=1314(necipbey) groups=1314(necipbey) 

Safe-mode: OFF (not secure)

/home/necipbey/public_html/test/application/libraries/   drwxr-xr-x
Free 3429.57 GB of 4265.01 GB (80.41%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     Shopier.php (6.89 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
defined
('BASEPATH') OR exit('No direct script access allowed');

class 
Shopier
    
{
        private 
$payment_url 'https://www.shopier.com/ShowProduct/api_pay4.php';
        private
            
$api_key,
            
$api_secret,
            
$module_version,
            
$buyer = [],
            
$index,
            
$currency 'TRY';

        public function 
__construct($parameters)
        {
            
$this->api_key $parameters['api_key'];
            
$this->api_secret $parameters['api_secret'];
            
$this->index $parameters['index'];        
            
$this->module_version = ('1.0.4');
        }

        public function 
setBuyer(array $fields = [])
        {
            
$this->buyerValidateAndLoad($this->buyerFields(), $fields);
        }

        public function 
setOrderBilling(array $fields = [])
        {
            
$this->buyerValidateAndLoad($this->orderBillingFields(), $fields);
        }

        public function 
setOrderShipping(array $fields = [])
        {
            
$this->buyerValidateAndLoad($this->orderShippingFields(), $fields);
        }

        private function 
buyerValidateAndLoad($validationFields$fields)
        {
            
$diff array_diff_key($validationFields$fields);

            if (
count($diff) > 0)
                throw new 
Exception(implode(','array_keys($diff)) . ' fields are required');

            foreach (
$validationFields as $key => $buyerField) {
                
$this->buyer[$key] = $fields[$key];
            }
        }

        public function 
generateFormObject($order_id$order_total$callback_url)
        {

            
$diff array_diff_key($this->buyerFields(), $this->buyer);

            if (
count($diff) > 0)
                throw new 
Exception(implode(','array_keys($diff)) . ' fields are required use "setBuyer()" method ');

            
$diff array_diff_key($this->orderBillingFields(), $this->buyer);

            if (
count($diff) > 0)
                throw new 
Exception(implode(','array_keys($diff)) . ' fields are required use "setOrderBilling()" method ');

            
$diff array_diff_key($this->orderShippingFields(), $this->buyer);

            if (
count($diff) > 0)
                throw new 
Exception(implode(','array_keys($diff)) . ' fields are required use "setOrderShipping()" method ');

            
$args = array(
                
'API_key' => $this->api_key,
                
'website_index' => $this->index,
                
'platform_order_id' => $order_id,
                
'product_name' => '',
                
'product_type' => 0//1 : downloadable-virtual 0:real object,2:default
                
'buyer_name' => $this->buyer['first_name'],
                
'buyer_surname' => $this->buyer['last_name'],
                
'buyer_email' => $this->buyer['email'],
                
'buyer_account_age' => 0,
                
'buyer_id_nr' => $this->buyer['id'],
                
'buyer_phone' => $this->buyer['phone'],
                
'billing_address' => $this->buyer['billing_address'],
                
'billing_city' => $this->buyer['billing_city'],
                
'billing_country' => $this->buyer['billing_country'],
                
'billing_postcode' => $this->buyer['billing_postcode'],
                
'shipping_address' => $this->buyer['shipping_address'],
                
'shipping_city' => $this->buyer['shipping_city'],
                
'shipping_country' => $this->buyer['shipping_country'],
                
'shipping_postcode' => $this->buyer['shipping_postcode'],
                
'total_order_value' => $order_total,
                
'currency' => $this->getCurrency(),
                
'platform' => 0,
                
'is_in_frame' => 0,
                
'current_language' => $this->lang(),
                
'modul_version' => $this->module_version,
                
'random_nr' => rand(100000999999)
            );


            
$data $args["random_nr"] . $args["platform_order_id"] . $args["total_order_value"] . $args["currency"];
            
$signature hash_hmac('sha256'$data$this->api_secrettrue);
            
$signature base64_encode($signature);
            
$args['signature'] = $signature;
            
$args['callback'] = $callback_url;

            return [
                
'elements' => [
                    [
                        
'tag' => 'form',
                        
'attributes' => [
                            
'id' => 'shopier_form_special',
                            
'method' => 'post',
                            
'action' => $this->payment_url
                        
],
                        
'children' => array_map(function ($key$value) {
                            return [
                                
'tag' => 'input',
                                
'attributes' => [
                                    
'name' => $key,
                                    
'value' => $value,
                                    
'type' => 'hidden',
                                ]
                            ];

                        }, 
array_keys($args), array_values($args))
                    ]
                ]
            ];

        }


        public function 
generateForm($order_id$order_total$callback_url)
        {
            
$obj $this->generateFormObject($order_id$order_total$callback_url);

            return 
$this->recursiveHtmlStringGenerator($obj['elements']);
        }

        public function 
run($order_id$order_total$callback_url)
        {

            
$form $this->generateForm($order_id$order_total$callback_url);

            return 
'<!doctype html>
             <html lang="en">
            <head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title></title>
     </head>
$form '
    <body>
        <script type="text/javascript">
                    document.getElementById("shopier_form_special").submit();
        </script>
     </body>
    </html>
     '
;
        }

        
// generateFormObject() sınıfının verdiği formattaki arrayden structure çıkartan yapıdırı.
        
private function recursiveHtmlStringGenerator(array $elements = [], $string null)
        {
            foreach (
$elements as $element) {
                
$attributes $element['attributes'] ?? [];
                
$attributes array_map(function ($key$value) {
                    return 
$key '="' $value '"';
                }, 
array_keys($attributes), array_values($attributes));
                
$attribute_string implode(' '$attributes);
                
$html_in $element['source'] ?? null;
                
$string .= "<{$element['tag']} {$attribute_string} > " $html_in;

                if (isset(
$element['children']) && is_array($element['children']))
                    
$string $this->recursiveHtmlStringGenerator($element['children'], $string);

                
$string .= "</{$element['tag']}>";

            }
            return 
$string;
        }


        
//shopierden gelen dataları kontrol eder.
        
public function verifyShopierSignature($post_data)
        {

            if (isset(
$post_data['platform_order_id'])) {
                
$order_id $post_data['platform_order_id'];
                
$random_nr $post_data['random_nr'];
                if (
$order_id != '') {
                    
$signature base64_decode($_POST["signature"]);
                    
$expected hash_hmac('sha256'$random_nr $order_id$this->api_secrettrue);

                    if (
$signature == $expected)
                        return 
true;

                }


            }
            return 
false;
        }

        private function 
buyerFields()
        {
            return [
                
'id' => true,
                
'first_name' => true,
                
'last_name' => true,
                
'email' => true,
                
'phone' => true,
            ];
        }

        private function 
orderBillingFields()
        {
            return [
                
'billing_address' => true,
                
'billing_city' => true,
                
'billing_country' => true,
                
'billing_postcode' => true,
            ];
        }

        private function 
orderShippingFields()
        {
            return [
                
'shipping_address' => true,
                
'shipping_city' => true,
                
'shipping_country' => true,
                
'shipping_postcode' => true,
            ];
        }

        private function 
getCurrency()
        {
            
$currencyList = [
                
'TRY' => 0,
                
'USD' => 1,
                
'EUR' => 2,
            ];
            return 
$currencyList[strtoupper($this->currency)] ?? 0;
        }

        private function 
lang()
        {
            
$current_language "tr-TR";
            
$current_lan 1;
            if (
$current_language == "tr-TR") {
                
$current_lan 0;
            }

            return 
$current_lan;
        }

    }

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

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

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

--[ c99shell v.2.1 [PHP 7 Update] [1.12.2019] maintained by KaizenLouie and updated by cermmik | C99Shell Github (MySQL update) | Generation time: 0.0054 ]--