File "class-site-health.php"

Full path: /home/kosmetik/public_html/wp-content/plugins/really-simple-ssl/class-site-health.php
File size: 5.58 B
MIME-type: text/x-php
Charset: utf-8

Download   Open   Edit   Advanced Editor   Back

<?php

defined('ABSPATH') or die("you do not have access to this page!");
if (!class_exists("rsssl_site_health")) {
    class rsssl_site_health
    {
        private static $_this;
        function __construct()
        {
            if (isset(self::$_this)) {
                wp_die(sprintf(__('%s is a singleton class and you cannot create a second instance.', 'really-simple-ssl'), get_class($this)));
            }
            add_filter('site_status_tests', array($this, 'rsssl_health_check'));
            self::$_this = $this;
        }
        static function this()
        {
            return self::$_this;
        }
        public function rsssl_health_check($tests)
        {
            unset($tests['async']['https_status']);
            if (!RSSSL()->really_simple_ssl->dismiss_all_notices) {
                $tests['direct']['rsssl-health'] = array('label' => __('SSL Status Test', 'really-simple-ssl'), 'test' => array($this, "health_test"));
                if (RSSSL()->really_simple_ssl->ssl_enabled && RSSSL()->rsssl_server->uses_htaccess() && file_exists(RSSSL()->really_simple_ssl->htaccess_file())) {
                    $tests['direct']['rsssl-headers'] = array('label' => __('Security Headers Test', 'really-simple-ssl'), 'test' => array($this, "headers_test"));
                }
            }
            return $tests;
        }
        public function headers_test()
        {
            $result = array('label' => __('Recommended security headers installed', 'really-simple-ssl'), 'status' => 'good', 'badge' => array('label' => 'SSL', 'color' => 'blue'), 'description' => sprintf('<p>%s</p>', __('The recommended security headers are detected on your site.', 'really-simple-ssl')), 'actions' => '', 'test' => 'headers_test');
            $recommended_headers = RSSSL()->really_simple_ssl->get_recommended_security_headers();
            if (!empty($recommended_headers)) {
                $style = '<style>.rsssl-sec-headers-list li {list-style-type:disc;margin-left:20px;}</style>';
                $list = '<ul class="rsssl-sec-headers-list"><li>' . implode('</li><li>', $recommended_headers) . '</li></ul>';
                $result['status'] = 'recommended';
                $result['label'] = __('Not all recommended security headers are installed', 'really-simple-ssl');
                $result['description'] = sprintf('<p>%s</p>', __('Your .htaccess file does not contain all recommended security headers.', 'really-simple-ssl') . $style . $list);
                $result['actions'] = sprintf('<p><a href="%s" target="_blank">%s</a></p>', 'https://really-simple-ssl.com/site-health-recommended-security-headers/', __('Learn more about security headers', 'really-simple-ssl'));
            }
            return $result;
        }
        public function health_test()
        {
            if (is_multisite() && is_super_admin()) {
                $url = add_query_arg(array('page' => 'really-simple-ssl'), network_admin_url('settings.php'));
            } else {
                $url = add_query_arg(array('page' => 'rlrsssl_really_simple_ssl'), admin_url("options-general.php"));
            }
            $result = array('label' => __('301 SSL redirect enabled', 'really-simple-ssl'), 'status' => 'good', 'badge' => array('label' => 'SSL', 'color' => 'blue'), 'description' => sprintf('<p>%s</p>', __('You have set a 301 redirect to SSL. This is important for SEO purposes', 'really-simple-ssl')), 'actions' => '', 'test' => 'health_test');
            if (!RSSSL()->really_simple_ssl->ssl_enabled) {
                if (RSSSL()->really_simple_ssl->site_has_ssl) {
                    $result['status'] = 'critical';
                    $result['label'] = __('SSL is not enabled.', 'really-simple-ssl');
                    $result['description'] = sprintf('<p>%s</p>', __('Really Simple SSL detected an SSL certificate, but has not been configured to enforce SSL.', 'really-simple-ssl'));
                    $result['actions'] .= sprintf('<p><a href="%s">%s</a></p>', $url, __('Activate SSL', 'really-simple-ssl'));
                } else {
                    $result['status'] = 'critical';
                    $result['label'] = __('No SSL detected.', 'really-simple-ssl');
                    $result['description'] = sprintf('<p>%s</p>', __('Really Simple SSL is installed, but no valid SSL certificate is detected.', 'really-simple-ssl'));
                }
            } else {
                if (!RSSSL()->really_simple_ssl->has_301_redirect()) {
                    $result['status'] = 'recommended';
                    $result['label'] = __('No 301 redirect to SSL enabled.', 'really-simple-ssl');
                    $result['description'] = sprintf('<p>%s</p>', __('To ensure all traffic passes through SSL, please enable a 301 redirect.', 'really-simple-ssl'));
                    $result['actions'] .= sprintf('<p><a href="%s">%s</a></p>', $url, __('Enable 301 redirect', 'really-simple-ssl'));
                } else {
                    if (!is_multisite() && RSSSL()->rsssl_server->uses_htaccess() && !RSSSL()->really_simple_ssl->htaccess_redirect) {
                        $result['status'] = 'recommended';
                        $result['label'] = __('301 .htaccess redirect is not enabled.', 'really-simple-ssl');
                        $result['description'] = sprintf('<p>%s</p>', __('The 301 .htaccess redirect is the fastest and most reliable redirect option.', 'really-simple-ssl'));
                        $result['actions'] .= sprintf('<p><a href="%s">%s</a></p>', $url, __('Enable 301 .htaccess redirect', 'really-simple-ssl'));
                    }
                }
            }
            return $result;
        }
    }
}