HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: 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,
Upload Files
File: /var/www/zaklada/wp-content/plugins/coming-soon/app/includes/upgrade.php
<?php

/**
 * Ajax handler for grabbing the upgrade url.
 */
function seedprod_lite_upgrade_license()
{
    check_ajax_referer('seedprod_lite_upgrade_license');

    // Check for permissions.
    if (! current_user_can('install_plugins')) {
        wp_send_json_error(array( 'message' => esc_html__('You are not allowed to install plugins.', 'coming-soon') ));
    }

    // Check for local dev sites
    // if (seedprod_lite_is_dev_url(home_url())) {
    //     wp_send_json_success(array(
    //         'url' => 'https://www.seedprod.com/docs/go-lite-pro/#manual-upgrade',
    //     ));
    // }

    // Check for a license key.
    $license_key = seedprod_lite_get_api_key();
    if (empty($license_key)) {
        wp_send_json_error(array( 'message' => esc_html__('You are not licensed.', 'coming-soon') ));
    }

    $url = esc_url_raw(
        add_query_arg(
            array(
                'page' => 'seedprod_lite',
            ),
            admin_url('admin.php')
        )
    );

    // Verify pro version is not installed.
    $active = activate_plugin('seedprod-coming-soon-pro-5/seedprod-coming-soon-pro-5.php', false, false, true);
    if (! is_wp_error($active)) {
        // Deactivate plugin.
        //deactivate_plugins(plugin_basename('seedprod-coming-soon-pro-5/seedprod-coming-soon-pro-5.php'));
        wp_send_json_error(array(
            'message' => esc_html__('Pro version is already installed.', 'coming-soon'),
            'reload'  => true,
        ));
    }

    // Verifiy licnese key
    $license = seedprod_lite_save_api_key($license_key);

    // Redirect.
    $oth = hash('sha512', wp_rand());
    update_option('seedprod_one_click_upgrade', $oth);
    $version  = SEEDPROD_VERSION;
    $file     = $license['body']->download_link;
    $siteurl  = admin_url();
    $endpoint = admin_url('admin-ajax.php');
    $redirect = admin_url('admin.php?page=seedprod_lite#/settings');

    $url = add_query_arg(array(
        'api_token' => get_option('seedprod_api_token'),
        'license_key'      => $license_key,
        'oth'      => $oth,
        'endpoint' => $endpoint,
        'version'  => $version,
        'siteurl'  => $siteurl,
        'redirect' => rawurldecode(base64_encode($redirect)),
        'file'     => rawurldecode(base64_encode($file)),
    ), SEEDPROD_WEB_API_URL.'upgrade-free-to-pro');

    wp_send_json_success(array(
        'url' => $url,
    ));
}

add_action('wp_ajax_seedprod_upgrade_license', 'seedprod_upgrade_license');

/**
 * Endpoint for one-click upgrade.
 */
function seedprod_lite_run_one_click_upgrade()
{
    $error = esc_html__('Could not install upgrade. Please download from seedprod.com and install manually.', 'coming-soon');

    // verify params present (oth & download link).
    $post_oth = ! empty($_REQUEST['oth']) ? sanitize_text_field($_REQUEST['oth']) : '';
    $post_url = ! empty($_REQUEST['file']) ? $_REQUEST['file'] : '';
    if (empty($post_oth) || empty($post_url)) {
        wp_send_json_error($error);
    }
    // Verify oth.
    $oth = get_option('seedprod_one_click_upgrade');
    if (empty($oth)) {
        wp_send_json_error($error);
    }
    if (! hash_equals($oth, $post_oth)) {
        wp_send_json_error($error);
    }
    // Delete so cannot replay.
    delete_option('seedprod_one_click_upgrade');
    // Set the current screen to avoid undefined notices.
    set_current_screen('insights_page_seedprod_settings');
    // Prepare variables.
    $url = esc_url_raw(
        add_query_arg(
            array(
                'page' => 'seedprod-settings',
            ),
            admin_url('admin.php')
        )
    );
    // Verify pro not activated.
    if (is_plugin_active('seedprod-coming-soon-pro-5/seedprod-coming-soon-pro-5.php')) {
        deactivate_plugins(plugin_basename('coming-soon/coming-soon.php'));
        wp_send_json_success(esc_html__('Plugin installed & activated.', 'coming-soon'));
    }
    // Verify pro not installed.
    $active = activate_plugin('seedprod-coming-soon-pro-5/seedprod-coming-soon-pro-5.php', $url, false, true);
    if (! is_wp_error($active)) {
        deactivate_plugins(plugin_basename('coming-soon/coming-soon.php'));
        wp_send_json_success(esc_html__('Plugin installed & activated.', 'coming-soon'));
    }
    
    $creds = request_filesystem_credentials($url, '', false, false, null);
    // Check for file system permissions.
    if (false === $creds) {
        wp_send_json_error($error);
    }
    if (! WP_Filesystem($creds)) {
        wp_send_json_error($error);
    }
    // We do not need any extra credentials if we have gotten this far, so let's install the plugin.
    require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
         
    if (version_compare($wp_version,'5.3.0') >= 0) {
        require_once SEEDPROD_PLUGIN_PATH . 'app/includes/skin53.php';
    }else{
        require_once SEEDPROD_PLUGIN_PATH . 'app/includes/skin.php';
    }
    // Do not allow WordPress to search/download translations, as this will break JS output.
    remove_action('upgrader_process_complete', array( 'Language_Pack_Upgrader', 'async_upgrade' ), 20);
    // Create the plugin upgrader with our custom skin.
    $installer = new Plugin_Upgrader($skin = new SeedProd_Skin());
    // Error check.
    if (! method_exists($installer, 'install')) {
        wp_send_json_error($error);
    }

    // Check license key.
    $license_key = seedprod_lite_get_api_key();
    if (empty($license_key)) {
        wp_send_json_error(new WP_Error('403', esc_html__('You are not licensed.', 'coming-soon')));
    }

    $license = seedprod_lite_save_api_key($license_key);
    if (empty($license['body']->download_link)) {
        wp_send_json_error();
    }

    $installer->install($license['body']->download_link); // phpcs:ignore
    // Flush the cache and return the newly installed plugin basename.
    wp_cache_flush();
    if ($installer->plugin_info()) {
        $plugin_basename = $installer->plugin_info();

        // Deactivate the lite version first.
        deactivate_plugins(plugin_basename('coming-soon/coming-soon.php'));

        // Activate the plugin silently.
        $activated = activate_plugin($plugin_basename, '', false, true);
        if (! is_wp_error($activated)) {
            wp_send_json_success(esc_html__('Plugin installed & activated.', 'coming-soon'));
        } else {
            // Reactivate the lite plugin if pro activation failed.
            activate_plugin(plugin_basename('coming-soon/coming-soon.php'), '', false, true);
            wp_send_json_error(esc_html__('Pro version installed but needs to be activated from the Plugins page inside your WordPress admin.', 'coming-soon'));
        }
    }
    wp_send_json_error($error);
}