403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /inetpub/wwwroot/OPENPOSLITE/wp-content/plugins/wpos-lite-version/includes/api/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /inetpub/wwwroot/OPENPOSLITE/wp-content/plugins/wpos-lite-version/includes/api/Api.php
<?php
if ( ! defined( 'ABSPATH' ) ) exit;
if(!class_exists('OP_REST_API'))
{
    class OP_REST_API extends WC_REST_CRUD_Controller{
        protected $namespace = 'op/v1';
        public $session_data = false;

        protected $session_class;
        protected $register_class;
        protected $warehouse_class;
        protected $core_class;
        protected $setting_class;
        protected $order_class;
        protected $woo_class;
        protected $table_class;
        protected $transaction_class;
        protected $cart_class;
        protected $report_class;
        protected $receipt_class;
        protected $exchange_class;

        public function __construct($core_class = array()){
            if(isset($core_class['op_register']))
            {
                $this->register_class = $core_class['op_register'];
            }
            if(isset($core_class['op_session']))
            {
                $this->session_class = $core_class['op_session'];
            }
            if(isset($core_class['op_warehouse']))
            {
                $this->warehouse_class = $core_class['op_warehouse'];
            }
            if(isset($core_class['core']))
            {
                $this->core_class = $core_class['core'];
            }
            if(isset($core_class['settings']))
            {
                $this->setting_class = $core_class['settings'];
            }
            if(isset($core_class['op_woo']))
            {
                $this->woo_class = $core_class['op_woo'];
            }
            if(isset($core_class['op_woo_order']))
            {
                $this->order_class = $core_class['op_woo_order'];
            }
            if(isset($core_class['op_table']))
            {
                $this->table_class = $core_class['op_table'];
            }
            if(isset($core_class['op_transaction']))
            {
                $this->transaction_class = $core_class['op_transaction'];
            }
            if(isset($core_class['op_woo_cart']))
            {
                $this->cart_class = $core_class['op_woo_cart'];
            }
            if(isset($core_class['op_report']))
            {
                $this->report_class = $core_class['op_report'];
            }
            if(isset($core_class['op_receipt']))
            {
                $this->receipt_class = $core_class['op_receipt'];
            }
            if(isset($core_class['op_exchange']))
            {
                $this->exchange_class = $core_class['op_exchange'];
            }
            
        }
        public function permission_callback(WP_REST_Request $request = null){
            
            if ($request && !$this->check_auth_header($request)) {
                return new WP_Error('op_rest_forbidden', __('Unauthorized', 'openpos'), array('status' => 0));
            }
            return true;
        }
        
        protected function check_auth_header(WP_REST_Request $request) {
            $session_id = $request->get_param('session', '');
            if($session_id)
            {
                $session_data = $this->session_class->data($session_id);
                $route = $request->get_route();
                $source = $request->get_param('source', 'manual');
                if(strpos($route,'/auth/logout') !== false && $source === 'remote')
                {
                    return true;
                }
                if($session_data)
                {
                    global $op_session_data;
                    $op_session_data = $session_data;
                    $this->session_data = $session_data;
                    return true;
                }
                return false;
            }else{
                $headers = $request->get_headers();
                $auth_header = isset($headers['authorization']) ? $headers['authorization'][0] : '';
                // Ví dụ: Bearer <token>
                if ($auth_header && strpos($auth_header, 'Bearer ') === 0) {
                    $token = substr($auth_header, 7);
                    $session_data = $this->session_class->data($token);
                    if($session_data)
                    {
                        $this->session_data = $session_data;
                        return true;
                    }
                }
            }
            
            return false;
        }
        
        public function rest_ensure_response($result){
            $warehouse_id = false;
            $login_warehouse_id = isset($this->session_data['login_warehouse_id']) ? $this->session_data['login_warehouse_id'] : 0;
            $login_cashdrawer_id = isset($this->session_data['login_cashdrawer_id']) ? $this->session_data['login_cashdrawer_id'] : 0;
            if($login_cashdrawer_id)
            {
                $warehouse_id = $login_warehouse_id;
            }
            if($warehouse_id !== false)
            {
                $database_version = get_option('_openpos_product_version_'.$warehouse_id,0);
                $result['response']['database_version'] = 1*$database_version;
            }
            
            return rest_ensure_response( $result );
        }
        public function _convertToCent($price,$decimal)
        {
            if(!$price)
            {
                return 0;
            }
            
            $pow = pow(10,$decimal);
            $number =  1 * $price* $pow ;
            return floor($number);
        }
        public function rest_api_limit(WP_REST_Request $request = null){
            $result = true;
            $ip = $_SERVER['REMOTE_ADDR'];
            $key = 'api_rate_' . md5($ip);

            $limit =  apply_filters('rest_api_limit_request',5); // limit 5 requests fail
            $duration =  apply_filters('rest_api_limit_duration',120); // wait 120 seconds


            $requests = get_transient($key);
            if ($requests === false) {
                $requests = 1;
                set_transient($key, $requests, $duration);
            } else {
                $requests++;
                set_transient($key, $requests, $duration);
            }

            if ($requests > $limit) {
                $result = false;
            }
            return $result;
        }
        

    }
}

Youez - 2016 - github.com/yon3zu
LinuXploit