HEX
Server: Apache/2
System: Linux vps32496.sdns.vn 3.10.0-1160.99.1.el7.x86_64 #1 SMP Wed Sep 13 14:19:20 UTC 2023 x86_64
User: khuondaotc (1075)
PHP: 7.4.33
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/khuondaotc/domains/khuondaotct.com/public_html/wp-content/plugins/unbounce/UBDiagnostics.php
<?php

class UBDiagnostics
{
    const SUPPORTED_PHP_VERSION = '5.3';
    const SUPPORTED_WP_VERSION = '4.0';

    public static function checks($domain, $domain_info)
    {
        return array_merge(self::domain_checks($domain, $domain_info), self::system_checks());
    }

    public static function domain_checks($domain, $domain_info)
    {
        $dynamic_config = get_option(UBConfig::UB_DYNAMIC_CONFIG_CACHE_KEY, array());
        $uuid = get_option(UBConfig::UB_DOMAIN_UUID_KEY, '');

        $result = array(
            'Domain is Authorized'    => UBConfig::is_authorized_domain($domain),
            'Can Fetch Page Listing'  => UBDiagnostics::last_status_success($domain_info)
        );

        if (UBConfig::has_authorized()) {
            $result['Domain UUID'] = $uuid !== '';
        }

        if (isset($dynamic_config['last_status'])) {
            $result['Dynamic Config Retrieval'] = $dynamic_config['last_status'] !== 'FAILURE';
        }

        return $result;
    }

    public static function system_checks()
    {
        return array(
            'Curl Support'                => self::is_curl_installed(),
            'XML Support'                 => self::is_xml_installed(),
            'Permalink Structure'         => get_option('permalink_structure', '') !== '',
            'Supported PHP Version'       => version_compare(
                phpversion(),
                UBDiagnostics::SUPPORTED_PHP_VERSION,
                '>='
            ),
            'Supported Wordpress Version' => version_compare(
                UBDiagnostics::wordpress_version(),
                UBDiagnostics::SUPPORTED_WP_VERSION,
                '>='
            ),
            'SNI Support' => self::has_sni(),
        );
    }

    public static function has_sni()
    {
        return defined('OPENSSL_TLSEXT_SERVER_NAME') && OPENSSL_TLSEXT_SERVER_NAME;
    }

    public static function is_curl_installed()
    {
        return function_exists('curl_init');
    }

    public static function is_xml_installed()
    {
        return function_exists('simplexml_load_string');
    }

    public static function should_show_warning($domain, $domain_info)
    {
        $domain_issue = in_array(false, self::domain_checks($domain, $domain_info));
        $system_issue = in_array(false, self::system_checks());
        if (UBConfig::has_authorized()) {
            return $domain_issue || $system_issue;
        } else {
            return $system_issue;
        }
    }

    /**
     * Format a variable as condensed human-readable output
     * Example: non-assoc arrays are output as [foo, bar] and assoc looks like
     * [
     *     foo: 'bar'
     *     baz: NULL
     * ]
     * @param mixed $var
     * @param int $level
     * @return string
     */
    private static function pp($var, $level = 1)
    {
        $str = '';
        if (is_array($var)) {
            $simple = empty($var) ? true : array_keys($var) === range(0, count($var) -1);
            $str .= '[';
            if ($simple) {
                $str .= implode(', ', $var);
            } else {
                foreach ($var as $key => $value) {
                    $str .= "\n" . str_repeat('  ', $level) . "$key: " . self::pp($value, $level + 1);
                }
            }
            $str .= ']';
        } else {
            $str = var_export($var, true);
        }
        return $str;
    }

    public static function details($domain, $domain_info)
    {
        return array(
        'PHP Version'             => phpversion(),
        'WordPress Version'       => UBDiagnostics::wordpress_version(),
        'Unbounce Plugin Version' => '1.1.4',
        'Checks'                  => self::pp(UBDiagnostics::checks($domain, $domain_info)),
        'Options'                 => self::pp(UBDiagnostics::ub_options()),
        'Permalink Structure'     => get_option('permalink_structure', ''),
        'Domain'                  => $domain,
        'Domain Authorized'       => self::pp(UBConfig::is_authorized_domain($domain)),
        'Has Authorized'          => self::pp(UBConfig::has_authorized()),
        'Active Plugins'          => self::pp(get_option('active_plugins')),
        'Plugin Details'          => self::pp(get_plugins()),
        'Curl Version'            => self::pp(UBDiagnostics::curl_version()),
        'SNI Support'             => self::has_sni(),
        'Configuration Options'   => self::pp(self::phpConfig()),
        'Extensions'              => self::pp(get_loaded_extensions()),
        'Operating System'        => php_uname(),
        );
    }

    private static function phpConfig()
    {
        return ini_get_all(null, false);
    }

    private static function ub_options()
    {
        $ub_options = array();
        array_walk(UBConfig::ub_option_defaults(), function ($v, $k) use (&$ub_options) {
            $ub_options[$k] = get_option($k, $v);
        });
        return $ub_options;
    }

    private static function curl_version()
    {
        if (function_exists('curl_version')) {
            return curl_version();
        } else {
            return 'N/A';
        }
    }

    public static function wordpress_version()
    {
        global $wp_version;
        include(ABSPATH . WPINC . '/version.php');
        return $wp_version;
    }

    private static function last_status_success($domain_info)
    {
        $last_status = UBUtil::array_fetch($domain_info, 'last_status');
        return $last_status !== null && $last_status !== 'FAILURE';
    }

    /**
     * Perform a sitemap request with default parameters to test communication with unbounce
     * @return array
     */
    public static function testSiteMapRequest()
    {
        $res = UBConfig::fetch_proxyable_url_set(UBConfig::domain(), null, UBConfig::page_server_domain());
        if (!is_array($res) || !isset($res[0])) {
            return array(
                'status' => 'ERROR',
                'result' => var_export($res, true),
            );
        }
        return $res[0];
    }

    /**
     * Retrieve environment details relevant at plugin activation time
     * @return array
     */
    public static function installationDetails()
    {
        return array(
            'php'                 => phpversion(),
            'wordpress'           => UBDiagnostics::wordpress_version(),
            'plugin_version'      => '1.1.4',
            'curl_installed'      => self::is_curl_installed(),
            'xml_installed'       => self::is_xml_installed(),
            'sni_support'         => self::has_sni(),
            'permalink_structure' => get_option('permalink_structure'),
            'domain'              => UBConfig::domain(),
            'active_plugins'      => get_option('active_plugins'),
            'curl_version'        => UBDiagnostics::curl_version(),
            'php_config' => UBUtil::array_select_by_key(
                self::phpConfig(),
                array(
                    'allow_url_fopen', 'cgi.discard_path', 'cgi.fix_pathinfo', 'curl.cainfo', 'default_charset',
                    'default_socket_timeout', 'disable_functions', 'display_errors', 'error_reporting',
                    'enable_post_data_reading', 'file_uploads', 'implicit_flush', 'memory_limit', 'max_execution_time',
                    'max_input_time', 'opcache.enable', 'openssl.cafile', 'openssl.capath', 'output_buffering',
                    'output_encoding', 'output_handler', 'post_max_size', 'short_open_tag', 'upload_max_filesize',
                )
            ),
            'php_extensions'      => get_loaded_extensions(),
            'os'                  => php_uname(),
        );
    }
}