403Webshell
Server IP : 213.186.33.4  /  Your IP : 216.73.216.222
Web Server : Apache
System : Linux webm005.cluster103.gra.hosting.ovh.net 6.18.39-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Tue Jul 21 12:03:15 CEST 2026 x86_64
User : karinebmkh ( 644538)
PHP Version : 8.4.22
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/karinebmkh/www/wp-content/plugins/divi-booster/shared/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/karinebmkh/www/wp-content/plugins/divi-booster/shared/licensing.php
<?php 
namespace DiviBooster\PLUGIN\Licensing;

$licensing = new Licensing(
    $config['plugin_file'], 
    $config['plugin_slug'],
    $config['plugin_name'],
    $config['plugin_url'],
    $config['edd_store_url'],
    $config['edd_item_id']
);
$licensing->init();

class Licensing {

    private $plugin_name;
    private $settings_page;
    private $license_key_option;
    private $license_status_option;
    private $settings_fields;
    private $plugin_file;
    private $settings_nonce;
    private $plugin_url;
    private $store_url; // URL of site with EDD store
    private $store_item_id; // id of the plugin in EDD
    private $plugin_slug;

    public function __construct($plugin_file, $plugin_slug, $plugin_name, $plugin_url, $store_url, $store_item_id) {
        $this->plugin_file = $plugin_file;
        $this->plugin_slug = $plugin_slug;
        $this->plugin_name = $plugin_name;
        $this->plugin_url = $plugin_url;
        $this->store_url = $store_url;
        $this->store_item_id = $store_item_id;

        $this->settings_page = $this->plugin_slug.'-settings';
        $this->settings_fields = $this->plugin_slug.'-license';
        $this->license_key_option = $this->plugin_slug.'-license_key';
        $this->license_status_option = $this->plugin_slug.'-license_status';
        $this->settings_nonce = $this->plugin_slug.'-nonce';
    }

    public function init() {
        add_action('admin_menu', array($this, 'dbal_license_menu'));
        add_action('admin_init', array($this, 'dbal_register_option'));
        add_action('admin_init', array($this, 'dbal_deactivate_license'));
        add_action('admin_init', array($this, 'dbal_activate_license'), 11);
        add_action('admin_notices', array($this, 'dbal_admin_notices'));
        add_action( 'after_plugin_row_'.plugin_basename($this->plugin_file), array($this, 'dbal_after_plugin_row'), 20, 3);
        add_action('admin_head', array($this, 'dbal_plugins_php_license_required_css'));
    }

    function dbal_license_menu() {
        add_options_page($this->plugin_name, $this->plugin_name, 'manage_options', $this->settings_page, array($this, 'dbal_license_page'));
    }
    
    function dbal_license_page() {
        $license = get_option($this->license_key_option);
        $status  = get_option($this->license_status_option, false );
        ?>
        <div class="wrap">
            <h2><?php esc_html_e($this->plugin_name); ?></h2>
            <form method="post" action="options.php">
    
                <?php settings_fields($this->settings_fields); ?>
                <?php wp_nonce_field($this->settings_nonce, $this->settings_nonce); ?>
    
                <table class="form-table">
                    <tbody>
                        <tr valign="top">
                            <th scope="row" valign="top">
                                <?php _e('License Key'); ?>
                            </th>
                            <td>
                                <input id="<?php esc_attr_e($this->license_key_option); ?>" name="<?php esc_attr_e($this->license_key_option); ?>" type="password" class="regular-text" value="<?php esc_attr_e( $license ); ?>" />
                                <?php if( $status !== false && $status == 'valid' ) { ?>
                                    <input type="submit" class="button-secondary" name="edd_license_deactivate" value="<?php _e('Deactivate'); ?>"/>
                                    <span style="color:green;line-height:28px;margin-right:1em;margin-left: 1em;"><?php _e('Active'); ?></span>
                                <?php } else { ?>
                                    <span style="color:red;line-height:28px;margin-right:1em;margin-left: 1em;"><?php _e('Inactive'); ?></span>
                                    <p>Enter your license key to enable updates.</p><p>You can get your license key from your <a href="https://divibooster.com/your-account/" target="_blank">Divi Booster account</a>, or <a href="<?php esc_attr_e($this->plugin_url); ?>" target="_blank">purchase a license</a>.</p>
                                <?php } ?>
                            </td>
                        </tr>
                    </tbody>
                </table>
                <?php submit_button(); ?>
    
            </form>
        <?php
    }
    
    // === Register the license key option ===
    
    function dbal_register_option() {
        // creates our settings in the options table
        register_setting($this->settings_fields, $this->license_key_option, array($this, 'dbal_sanitize_license') );
    }
    
    function dbal_sanitize_license( $new ) {
        $old = get_option($this->license_key_option);
        if( $old && $old != $new ) {
            delete_option($this->license_status_option); // new license has been entered, so must reactivate
        }
        return $new;
    }
    
    
    // === License activation ===
    
    
    function dbal_activate_license() {
        
        if( isset( $_POST['option_page'] ) && $_POST['option_page'] === $this->settings_fields ) {
            // run a quick security check
             if( ! check_admin_referer($this->settings_nonce, $this->settings_nonce) )
                return; // get out if we didn't click the Activate button
            $license = trim( $_POST[$this->license_key_option]);
            update_option($this->license_key_option, $license );
    
            $response = $this->dbal_submit_license('activate', $license);
            $message = $this->activation_error($response);

            // Check if anything passed on a message constituting a failure
            if ( ! empty( $message ) ) {
                $base_url = admin_url('options-general.php?page='.$this->settings_page);
                $redirect = add_query_arg( array( 'sl_activation' => 'false', 'message' => urlencode( $message ) ), $base_url );
                wp_redirect( $redirect );
                exit();
            }
            // $license_data->license will be either "valid" or "invalid"
            $license_data = json_decode( wp_remote_retrieve_body( $response ) );
            $validity = $license_data->license;

            // If license server not responding correctly, allow license to validate locally instead of throwing an error
            if (!is_wp_error($response) && wp_remote_retrieve_response_code($response) !== 200) {
                $validity = 'valid';
            }
            
            update_option($this->license_status_option, $validity );
            wp_redirect( admin_url( 'options-general.php?page=' . $this->settings_page) );
            exit();
        }
    }

    // Return the activation error, if any, from the given response / WP_Error object
    public function activation_error($response) {
        $message = '';
        if (is_wp_error( $response )) {
            $message =  ( $response->get_error_message() !== '' ) ? $response->get_error_message() : __( 'An error occurred while connecting to the license server, please try again.' );
            $message .= ($response->get_error_code() !== '')?' (Error code '.$response->get_error_code().')':'';
        } elseif (wp_remote_retrieve_response_code($response) !== 200) {
            $message = ''; // If license server not responding correctly, allow license to validate locally instead of throwing an error
            //$message = sprintf('An error (HTTP code %d) occurred while connecting to the license server, please try again.', wp_remote_retrieve_response_code($response));
        } else {
            $license_data = json_decode( wp_remote_retrieve_body( $response ) );
            if ( false === $license_data->success ) {
                switch( $license_data->error ) {
                    case 'expired' :
                        $message = sprintf(
                            __( 'Your license key expired on %s.' ),
                            date_i18n( get_option( 'date_format' ), strtotime( $license_data->expires, current_time( 'timestamp' ) ) )
                        );
                        break;
                    case 'revoked' :
                        $message = __( 'Your license key has been disabled.' );
                        break;
                    case 'missing' :
                        $message = __( 'Invalid license.' );
                        break;
                    case 'invalid_item_id' :
                        $message = __( 'Invalid / empty license key.' );
                        break;
                    case 'invalid' :
                    case 'site_inactive' :
                        $message = __( 'Your license is not active for this URL.' );
                        break;
                    case 'item_name_mismatch' :
                        $message = sprintf( __( 'This appears to be an invalid license key for %s.' ), $this->plugin_name);
                        break;
                    case 'no_activations_left':
                        $message = __( 'Your license key has reached its activation limit.' );
                        break;
                    default :
                        $message = __( 'An error occurred, please try again. (error code: '.esc_html($license_data->error).')' );
                        break;
                }
            }
        }
        return $message;
    }
    
    
    // === License deactivation ===
    
    
    function dbal_deactivate_license() {
        if( isset( $_POST['option_page'] ) && $_POST['option_page'] !== $this->settings_fields ) {
            return; 
        }

        // listen for our activate button to be clicked
        if( isset( $_POST['edd_license_deactivate'] ) ) {
            
    
            // run a quick security check
             if( ! check_admin_referer($this->settings_nonce, $this->settings_nonce) )
                return; // get out if we didn't click the Activate button
                
            // retrieve the license from the database
            $license = trim( get_option($this->license_key_option) );
    
            if (!$this->dbal_license_deactivated_in_edd($license)) {
                
                $response = $this->dbal_submit_license('deactivate', $license);
                   
                // Always deactivate locally, regardless of server deactivation success
                /* 
                // make sure the response came back okay
                if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) {
                    $message =  ( is_wp_error( $response ) && $response->get_error_message() !== '' ) ? $response->get_error_message() : __( 'An error occurred while connecting to the license server, please try again.' );
                    
                } else {
                    
                    $license_data = json_decode( wp_remote_retrieve_body( $response ) );
                    if ( false === $license_data->success ) {
                        $message = __( 'An error occurred while deactivating the license, please try again.' );
                    }
                }
                // Check if anything passed on a message constituting a failure
                if ( ! empty( $message ) ) {
                    $base_url = admin_url('options-general.php?page='.$this->settings_page);
                    $redirect = add_query_arg( array( 'sl_deactivation' => 'false', 'message' => urlencode( $message ) ), $base_url );
                    wp_redirect( $redirect );
                    exit();
                }
                */
            }
            
            update_option($this->license_status_option, 'deactivated');
            wp_redirect( admin_url( 'options-general.php?page=' . $this->settings_page) );
            exit();
        }
    }
    
    function dbal_license_deactivated_in_edd($license) {
        $deactivated = false;
        $response = $this->dbal_submit_license('check', $license);
        if (!is_wp_error($response)) {
            $license_data = json_decode(wp_remote_retrieve_body($response));
            if ($license_data->license === 'inactive') {
                $deactivated = true;			
            }
        } 
        return $deactivated;
    }
    
    function dbal_submit_license($action, $license) {
        $result = wp_remote_post(
            $this->store_url, 
            array(
                'timeout' => 30, 
                'body' => array(
                    'edd_action' => $action.'_license',
                    'license'    => $license,
                    'item_id'    => $this->store_item_id,
                    'url'        => home_url()
                )
            )
        );
        return $result;
    }
    
    // === Display license activation / deactivation errors to user ===
    
    
    function dbal_admin_notices() {
        if (empty($_GET['page']) || $_GET['page'] !== $this->settings_page) {
            return;
        }
        if ( isset( $_GET['sl_activation'] ) && ! empty( $_GET['message'] ) ) {
            switch( $_GET['sl_activation'] ) {
                case 'false':
                    $message = urldecode( $_GET['message'] );
                    ?>
                    <div class="error">
                        <p><?php esc_html_e($message); ?></p>
                    </div>
                    <?php
                    break;
                case 'true':
                default:
                    // Can put a custom success message here for when activation is successful if they want.
                    break;
            }
        }
        if ( isset( $_GET['sl_deactivation'] ) && ! empty( $_GET['message'] ) ) {
            switch( $_GET['sl_deactivation'] ) {
                case 'false':
                    $message = urldecode( $_GET['message'] );
                    ?>
                    <div class="error">
                        <p>Error: <?php esc_html_e($message); ?></p>
                    </div>
                    <?php
                    break;
                case 'true':
                default:
                    // Can put a custom success message here for when activation is successful if they want.
                    break;
            }
        }
    }
    
    // === Notify admin via plugins.php that license required to activate plugin ===
    
    
    function dbal_after_plugin_row($plugin_file, $plugin_data, $status) {
        
        // Don't display message if the plugin is correctly licensed
        if (get_option($this->license_status_option) === 'valid') { 
            return;
        }
        
        // Display license message
        $settings_url = admin_url('options-general.php?page='.$this->settings_page);
        ?>
        <tr class="plugin-update-tr active"><td colspan="4" class="plugin-update colspanchange"><div class="update-message notice inline notice-warning notice-alt"><p>Enter your license key on the <a href="<?php esc_attr_e($settings_url); ?>">settings page</a> to enable updates. You can get your license from your <a href="https://divibooster.com/your-account/purchase-history/" target="_blank">Divi Booster account</a>, or <a href="<?php esc_attr_e($this->plugin_url); ?>" target="_blank">purchase a license</a>.</p></div></td>
        </tr>
        <?php
    }
    
    
    function dbal_plugins_php_license_required_css() {
        
        // Make sure we're on plugins.php
        global $pagenow;
        if ($pagenow !== 'plugins.php') { return; }
        
        // Don't add CSS if the plugin is correctly licensed
        if (get_option($this->license_status_option) === 'valid') { 
            return;
        }
        
        // Remove border bottom after shortcode enabler plugin entry
        ?>
        <style>
        .plugins tr[data-slug="<?php esc_attr_e($this->plugin_slug); ?>"].active td, 
        .plugins tr[data-slug="<?php esc_attr_e($this->plugin_slug); ?>"].active th {
            box-shadow: none !important;
        }
        </style>
        <?php
    }

}



Youez - 2016 - github.com/yon3zu
LinuXploit