Uname:Linux EDL-STRETCH 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64

403WebShell
403Webshell
Server IP : 188.114.96.2  /  Your IP : 104.23.197.230
Web Server : Apache/2.4.59 (Debian)
System : Linux EDL-STRETCH 4.19.0-27-amd64 #1 SMP Debian 4.19.316-1 (2024-06-25) x86_64
User : edlftp ( 1002)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/nicolasj/www/ecoledelangues.be/wp-content/plugins/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/nicolasj/www/ecoledelangues.be/wp-content/plugins/ci-hybrid.php.old
<?php

/*
Plugin Name: CodeIgniter Hybrid
Plugin URI: https://codes.solutions/
Description: CI shop integration
Author: Aernout Guillaume [codes.solutions]
Version: 1.2
Author URI: https://codes.solutions/
*/
session_start();
//session_destroy();
ob_start();
function add_cors_http_header()
{
    header("Access-Control-Allow-Origin: https://sms.ecoledelangues.be");
    header('Access-Control-Allow-Headers: x-requested-with');
}

function ci_get_ip()
{
    $keys = ['HTTP_CF_CONNECTING_IP'];
    foreach ($keys as $k) {
        if (!empty($_SERVER[$k]) && filter_var($_SERVER[$k], FILTER_VALIDATE_IP)) {
            return $_SERVER[$k];
        }
    }
    return $_SERVER['REMOTE_ADDR'];
}

function rewrite_param()
{
    add_rewrite_rule('^shop/filter/([^/]+)/?$', 'index.php?pagename=shop&filter=$matches[1]', 'top');
}

function display_ci_content_legacy()
{
    $match = array();
    $url = $_SERVER["REQUEST_URI"];
    $url_clean = $url;

    if (strpos($url, '=&') > -1) {
        $url_clean = substr($url, 0, strpos($url, '=&'));
    } elseif (strpos($url, '&') > -1) {
        $url_clean = substr($url, 0, strpos($url, '&'));
    } elseif (strpos($url, '?gclid') > -1) {
        $url_clean = substr($url, 0, strpos($url, '?gclid'));
    } else {
        $url_clean = $url;
    }

    if ($url_clean == "/shop/") {
        echo ajax_Call('hybrid', 'filters', 'all');
    } elseif (preg_match('/\/shop\/\?[0-9,+\-a-zA-Z=]+$/', $url_clean, $match) && ($url_clean != "/shop/?filter") && ($url_clean != "/shop/?add") && ($url_clean != "/shop/?cart")) {
        $param = (int) substr($match[0], (strpos($match[0], "?") + 1));
	echo ajax_Call('hybrid', 'filters', $param);
    } elseif ($url_clean == "/shop/?filter") {
        ob_end_clean();

        $param = implode(',', $_POST['param']);
        $data = ajax_Call('loadData', 'filters', $param);

        echo $data;
        ob_start();
        add_action("wp_footer", "clean_footer");
        //ob_start();
    } elseif ($url_clean == "/shop/?add") {
        ob_end_clean();
        $product_id = (int) $_POST['param']['product'];
        $product_qty = (int) $_POST['param']['quantity'];

        add_to_cart($product_id, $product_qty);
        ob_start();
        add_action("wp_footer", "clean_footer");
    } elseif ($url_clean == "/shop/?cart") {
        ob_end_clean();
        echo get_cart();
        ob_start();
        add_action("wp_footer", "clean_footer");
    } elseif (preg_match('/\/shop\/\?filter=+([0-9,])/', $url_clean, $matches)) {
        ob_end_clean();
        $filter = $matches[1];

        if (strpos($filter, ",") > -1) {
            $param = implode(',', $filter);
        } else {
            $param = $filter;
        }

        $data = ajax_Call('loadData', 'filters', $param);

        echo $data;
        ob_start();
        add_action("wp_footer", "clean_footer");
    }
}

function display_ci_content_v2(string $content): string
{
    // 
    if ( !is_singular() || !in_the_loop() || !is_main_query() ) {
        return $content;
    }

    $request_uri = $_SERVER['REQUEST_URI'] ?? '';
    if ($request_uri === '') {
        return $content;
    }

    // Parse URL
    $parts = wp_parse_url($request_uri);
    $path  = $parts['path'] ?? '';

    // Normaliser /shop et /shop/ en /shop/
    $path = trailingslashit($path);

    if ($path !== '/shop/') {
        return $content;
    }

    $query_raw = $parts['query'] ?? '';

    // /shop/
    if ($query_raw === '') {
        return (string) ajax_Call('hybrid', 'filters', 'all');
    }

    ///shop/?123(=?)
    $first_piece = explode('&', $query_raw, 2)[0];
    if (preg_match('/^(\d+)=?$/', $first_piece, $m)) {
        $param = absint($query_raw);

        // Exclusions legacy: filter/add/cart (comme ton code)
        if (in_array($query_raw, ['filter', 'add', 'cart'], true)) {
            return $content;
        }

        if ($param > 0) {
            return (string) ajax_Call('hybrid', 'filters', $param);
        }

        return $content;
    }

    // Others queries
    $query = [];
    parse_str($query_raw, $query);

    // Endpoints : /shop/?filter  /shop/?add  /shop/?cart
    if ($query_raw === 'filter') {
        return ci_shop_handle_filter_post();
    }

    if ($query_raw === 'add') {
        ci_shop_handle_add_post();
        return $content;
    }

    if ($query_raw === 'cart') {
        return ci_shop_handle_cart();
    }

    // Endpoint: /shop/?filter=1,2,3
    if (isset($query['filter'])) {
        $filter = (string) $query['filter'];

        $filter = preg_replace('/[^0-9,]/', '', $filter);
        $filter = trim($filter, ',');

        if ($filter === '') {
            return '';
        }

        ci_shop_prepare_clean_footer();
        return (string) ajax_Call('loadData', 'filters', $filter);
    }

    return $content;
}

function ci_shop_handle_filter_post(): string
{
    ci_shop_prepare_clean_footer();

    $param = $_POST['param'] ?? [];
    $param = is_array($param) ? wp_unslash($param) : [];

    $ids = array_filter(array_map('absint', (array) $param));
    $param_str = implode(',', $ids);

    return (string) ajax_Call('loadData', 'filters', $param_str);
}

function ci_shop_handle_add_post(): void
{
    ci_shop_prepare_clean_footer();

    $param = $_POST['param'] ?? [];
    $param = is_array($param) ? wp_unslash($param) : [];

    $product_id  = isset($param['product'])  ? absint($param['product'])  : 0;
    $product_qty = isset($param['quantity']) ? max(1, absint($param['quantity'])) : 1;

    if ($product_id > 0) {
        add_to_cart($product_id, $product_qty);
    }
}

function ci_shop_handle_cart(): string
{
    ci_shop_prepare_clean_footer();
    return (string) get_cart();
}

function ci_shop_prepare_clean_footer(): void
{
    if (ob_get_level() > 0) {
        ob_end_clean();
    }
    ob_start();

    static $footer_hooked = false;
    if (!$footer_hooked) {
        add_action('wp_footer', 'clean_footer', 1);
        $footer_hooked = true;
    }
}

function display_ci_header()
{
    $url = $_SERVER["REQUEST_URI"];
    $url_clean = $url;

    if (strpos($url, '=&') > -1) {
        $url_clean = substr($url, 0, strpos($url, '=&'));
    } elseif (strpos($url, '&') > -1) {
        $url_clean = substr($url, 0, strpos($url, '&'));
    } elseif (strpos($url, '?gclid') > -1) {
        $url_clean = substr($url, 0, strpos($url, '?gclid'));
    } else {
        $url_clean = $url;
    }

    if ($url_clean == "/shop/" or preg_match('/\/shop\/\?[0-9+\-,a-zA-Z=]+$/', $url_clean, $match)) {
        echo'<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>';
        echo'<script src="https://sms.ecoledelangues.be/assets/js/shop/home_wp.js"></script>';
        echo'<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">';
        echo'<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>';
        echo'<link rel="stylesheet" href="https://sms.ecoledelangues.be/assets/css/shop/home-wp.css">';
        echo'<link rel="stylesheet" href="/wp-content/plugins/ci-hybrid/entypo.css">';
    }
}

function display_ci_cart()
{
    $url = $_SERVER["REQUEST_URI"];
    $url_clean = $url;

    if (strpos($url, '=&') > -1) {
        $url_clean = substr($url, 0, strpos($url, '=&'));
    } elseif (strpos($url, '&') > -1) {
        $url_clean = substr($url, 0, strpos($url, '&'));
    } elseif (strpos($url, '?gclid') > -1) {
        $url_clean = substr($url, 0, strpos($url, '?gclid'));
    } else {
        $url_clean = $url;
    }

    $cart =  <<<EOD
    <div id="ci-banner" class="fixed-banner col-sm-12" style="position:absolute;top:102px;"><span class="float-left">Ecole De Langues Shop</span>
    <span class="text-right left-content-banner float-left">
      <ul class="top-list">
        <li onclick="window.location.replace('http://sms.ecoledelangues.be/login');">Login <i class="entypo-user"></i></li>
        <li onclick="checkoutBtn();">Cart<i class="entypo-basket"></i><span id="cart-qty"></span><form id="cart_form" method="post" action="https://sms.ecoledelangues.be/shop/setCart/"><input type="hidden" name="cart" id="cart" value="{}"></form></li>
      </ul>
    </span>
  </div>
  EOD;
    if ($url_clean == "/shop/" or preg_match('/\/shop\/\?[0-9,+\-a-zA-Z=]+$/', $url_clean, $match)) {
        echo $cart;
    }

}
function clean_footer()
{
    ob_end_clean();
}

function ajax_Call($function, $param_name, $param)
{
    $url = "https://sms.ecoledelangues.be/shop/".$function."/";
    if ($param != '') {
        $postdata = http_build_query(
            array($param_name => $param)
        );
    } else {
        $postdata = '';
    }

    $opts = array(
    'http' =>
      array(
                'method'  => 'POST',
                'header'  => 'Content-Type: application/x-www-form-urlencoded',
                'content' => $postdata
            ),
    'ssl' =>
       array(
           'verify_peer' => false,
             'verify_peer_name' => false,
       ),
    );

    return file_get_contents($url, false, stream_context_create($opts));
}

//DB functions
function connect_sms()
{
    global $seconddb;
    $seconddb = new wpdb('sms', '736dks!3', 'sms', 'localhost');
}

function get_product($id)
{
    global $seconddb;
    $product_array = $seconddb->get_results('SELECT * FROM `course_product` WHERE `ID` = '.$id.';', ARRAY_A);

    $course = $product_array[0];
    if (!is_vat_course($course['Course_ID'])) {
        //Propulse
        if ($course['Course_Promo'] == 0) {
            $course['Price_HTVA'] = 0;
            $course['Price_TVA'] = round($course['Course_Price'], 2);
            $course['Price_HTVA_Promo'] = 0;
            $course['Price_TVA_Promo'] = 0;
        } else {
            $promo =  (($course['Course_Price'] * $course['Course_Promo']) / 100);
            $course['Price_HTVA'] = 0;
            $course['Price_TVA'] = round($course['Course_Price'], 2);
            $course['Price_HTVA_Promo'] = 0;
            $course['Price_TVA_Promo'] = round($course['Course_Price'] - $promo, 2);
        }

    } else {
        if ($course['Course_Promo'] == 0) {
            $course['Price_HTVA'] =  round($course['Course_Price'], 2);
            $course['Price_TVA'] = round($course['Course_Price'] * 1.21, 2);
            $course['Price_HTVA_Promo'] = 0;
            $course['Price_TVA_Promo'] = 0;
        } else {
            $promo =  (($course['Course_Price'] * $course['Course_Promo']) / 100);
            $course['Price_HTVA'] =  round($course['Course_Price'], 2);
            $course['Price_TVA'] = round($course['Course_Price'] * 1.21, 2);
            $course['Price_HTVA_Promo'] = round(($course['Course_Price'] - $promo), 2);
            $course['Price_TVA_Promo'] = round(($course['Course_Price'] - $promo) * 1.21, 2);
        }
    }
    $course['Course_Disponibility'] = ($course['Course_Availability'] - get_students_count($course['Course_ID']));
    return $course;
}

function is_vat_course($id)
{
    global $seconddb;
    $data = $seconddb->get_results('SELECT * FROM `course_new` WHERE `ID` = '.$id.';', ARRAY_A);

    if ($data[0]['CourseVat'] == "yes") {
        return true;
    }

    return false;
}

function get_students_count($id)
{
    global $seconddb;
    $students_array = $seconddb->get_results('SELECT * FROM `course_student_new` WHERE `course_id` = '.$id.';', ARRAY_A);
    $history = array();
    $count = 0;

    foreach ($students_array as $value) {
        if (!in_array($value['student_id'], $history)) {
            $count++;
        }
        array_push($history, $value['student_id']);
    }

    if ($count != '' or $count != 0) {
        return $count;
    } else {
        return "0";
    }
}

function get_cart()
{
    $signature = get_signature();
    $cart = [];

    global $seconddb;
    $cart_array = $seconddb->get_results('SELECT `Cart_Total`,`Cart_Qty`,`Cart_Vat`,`Pro_Total`,`Pro_Total_VAT`,`OB_Total`,`OB_Total_VAT`,`Cart` 
                                          FROM `shop_session`
                                          WHERE `Signature` = \''.$signature.'\' AND (`State` = \'done\' OR `State` IS NULL)
					                      ORDER BY Creation DESC;', ARRAY_A);
    if (!empty($cart_array[0])) {
        $cart = $cart_array[0];
    }
    return json_encode($cart);
}

function add_to_cart($id, $qty)
{
    $signature = get_signature();

    global $seconddb;
    //`Cart_Total`,`Cart_Qty`,`Cart_Vat`,`Pro_Total`,`Pro_Total_VAT`,`OB_Total`,`OB_Total_VAT`,`Cart`,`Cart_Total`
    $cart_array = $seconddb->get_results('SELECT *
                                          FROM `shop_session`
                                          WHERE `Signature` = \''.$signature.'\' AND (`State` IS NULL)
					                      ORDER BY Creation DESC;', ARRAY_A);

    if (!empty($cart_array)) {
        // Update an existing cart
        $cart = [];
        if ($cart_array[0]['Cart'] !=  null) {
            $cart =	is_array($cart_array[0]['Cart']) ? $cart_array[0]['Cart'] : json_decode($cart_array[0]['Cart'], true);
        }

        if (array_key_exists($id, $cart)) {
            $prevQty = $cart[$id]['qty'];
            $cart[$id]['qty'] = $prevQty + $qty;
            $cart[$id]['data'] = get_product($id);
        } else {
            $product_item = array(
                'data' => get_product($id),
                'qty' => $qty,
                'option' => null,
            );
            $cart[$id] = $product_item;
        }

        $cart_qty = 0;
        $cart_total = 0;
        $cart_vat = 0;
        $pro = 0;
        $pro_vat = 0;
        $ob = 0;
        $ob_vat = 0;

        foreach ($cart as $key => $product) {
            $data =	is_array($product['data']) ? $product['data'] : json_decode($product['data'], true);

            $price_original = $data['Course_Price'];
            $price = $price_original;
            $target_vat = 0;
            $target_qty = $product['qty'];

            $price = !empty($data['Price_TVA_Promo']) ? $data['Price_TVA_Promo'] : $data['Price_TVA'];

            if (is_vat_course($data['Course_ID'])) {
                $ob = $ob + ($price * $target_qty);
            } else {
                $pro = $pro + ($price * $target_qty);
            }
            // update cart data
            $cart_qty = $cart_qty + $target_qty;
            $cart_vat = $cart_vat + ($target_vat * $target_qty);
            $cart_total = $cart_total + ($price * $target_qty);
        }

        $data = array(
           "Cart_Qty" => $cart_qty,
           "Cart_Total" => $cart_total,
           "Cart_Vat" => $cart_vat,
           "Pro_Total" => $pro,
           "Pro_Total_Vat" => $pro_vat,
           "OB_Total" => $ob,
           "OB_Total_Vat" => $ob_vat,
           "Cart" => json_encode($cart)
         );

        //UPDATE
        $seconddb->update('shop_session', $data, ['ID' => $cart_array[0]['ID']]);
    } else {
        // Create a new cart
        $cart = array();
        $product_item = array(
            'data' => get_product($id),
            'qty' => (int) $qty,
            'option' => null,
        );
        $cart[$id] = $product_item;

        //resume cart data
        $cart_qty = 0;
        $cart_total = 0;
        $cart_vat = 0;
        $pro = 0;
        $pro_vat = 0;
        $ob = 0;
        $ob_vat = 0;

        foreach ($cart as $key => $product) {
            $data =	is_array($product['data']) ? $product['data'] : json_decode($product['data'], true);

            $price_original = $data['Course_Price'];
            $price = $price_original;
            $target_vat = 0;
            $target_qty = $product['qty'];

            $selector = $data;
            $price = !empty($selector['Price_TVA_Promo']) ? $selector['Price_TVA_Promo'] : $selector['Price_TVA'];

            if (is_vat_course($data['Course_ID'])) {
                $ob = $ob + ($price * $target_qty);
            } else {
                $pro = $pro + ($price * $target_qty);
            }

            // update cart data
            $cart_qty = $cart_qty + $target_qty;
            $cart_vat = $cart_vat + ($target_vat * $target_qty);
            $cart_total = $cart_total + ($price * $target_qty);
        }

        $seconddb->insert('shop_session', [
            "Cart_Qty" => $cart_qty,
            "Cart_Total" => $cart_total,
            "Cart_Vat" => $cart_vat,
            "Pro_Total" => $pro,
            "Pro_Total_Vat" => $pro_vat,
            "OB_Total" => $ob,
            "OB_Total_Vat" => $ob_vat,
            "Cart" => json_encode($cart),
            "IP" => ci_get_ip(),
            "Signature" => get_signature()
        ]);
    }
}

function get_signature()
{
    $userAgent = $_SERVER['HTTP_USER_AGENT'];
    $signature = "";
    $browsers = array(
                    array("IE", "Microsoft Internet Explorer"),
                    array("Chrome", "Google Chrome"),
                    array("Firefox", "Mozzila Firefox"),
                    array("Opera", "Opera"),
                    array("Safari", "Apple Safari")
                );

    foreach ($browsers as $browser) {
        if (strpos($userAgent, $browser[0]) !== false) {
            $signature = $signature.",".$browser[1];
        }

    }
    return md5(ci_get_ip() . "+" . $signature);
}

add_action('init', 'connect_sms');
add_action('init', 'add_cors_http_header');
add_action("wp_head", "display_ci_header");
add_action("avada_after_header_wrapper", "display_ci_cart");
add_action("the_content", "display_ci_content_v2", 99);

//ob_end_clean();
add_action('admin_menu', 'ci_menu_page');

function ci_menu_page()
{
    add_menu_page(
        'CI Hybrid Shop', // page <title>Title</title>
        'CI Hybrid', // menu link text
        'manage_options', // capability to access the page
        'ci-hybrid-shop', // page URL slug
        'ci_page_content', // callback function /w content
        'dashicons-star-half', // menu icon
        5 // priority
    );
}

function ci_page_content()
{
    echo "<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>";
    echo '<div class="col-sm-12 p-4"><h2>CI Hybrid Shop</h2><div class="col-sm-12"><button class="btn btn-info button action" onclick="$.post(\'https://ecoledelangues.be/wp-content/plugins/ci-hybrid/hook_shop.php\',function(r){console.log(r)});">Re-hook the shop</button></div></div>';

}

Youez - 2016 - github.com/yon3zu
LinuXploit