You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
7.6 KiB
230 lines
7.6 KiB
<?php
|
|
# No need for the template engine
|
|
if (!defined('WP_USE_THEMES')) define( 'WP_USE_THEMES', false );
|
|
//we set wp admin to true, so the backend features get loaded.
|
|
if (!defined('RSSSL_DOING_SYSTEM_STATUS')) define( 'RSSSL_DOING_SYSTEM_STATUS' , true);
|
|
|
|
#find the base path
|
|
if (!defined('BASE_PATH')) define( 'BASE_PATH', find_wordpress_base_path()."/" );
|
|
|
|
# Load WordPress Core
|
|
if ( !file_exists(BASE_PATH . 'wp-load.php') ) {
|
|
die("WordPress not installed here");
|
|
}
|
|
require_once( BASE_PATH . 'wp-load.php' );
|
|
require_once( ABSPATH . 'wp-includes/class-phpass.php' );
|
|
require_once( ABSPATH . 'wp-admin/includes/image.php' );
|
|
require_once( ABSPATH . 'wp-admin/includes/plugin.php');
|
|
|
|
//by deleting these we make sure these functions run again
|
|
delete_transient('rsssl_testpage');
|
|
function rsssl_get_system_status(){
|
|
$output = '';
|
|
global $wp_version;
|
|
|
|
$output .= "General\n";
|
|
$output .= "Domain: " . site_url() . "\n";
|
|
$output .= "Plugin version: " . rsssl_version . "\n";
|
|
$output .= "WordPress version: " . $wp_version . "\n";
|
|
|
|
if ( RSSSL()->certificate->is_valid() ) {
|
|
$output .= "SSL certificate is valid\n";
|
|
} else {
|
|
if ( !function_exists('stream_context_get_params') ) {
|
|
$output .= "stream_context_get_params not available\n";
|
|
} else if ( RSSSL()->certificate->detection_failed() ) {
|
|
$output .= "Not able to detect certificate\n";
|
|
} else {
|
|
$output .= "Invalid SSL certificate\n";
|
|
}
|
|
}
|
|
|
|
$output .= ( rsssl_get_option("ssl_enabled") ) ? "SSL is enabled\n\n"
|
|
: "SSL is not yet enabled\n\n";
|
|
|
|
$output .= "Options\n";
|
|
if ( rsssl_get_option("mixed_content_fixer") ) {
|
|
$output .= "* Mixed content fixer\n";
|
|
}
|
|
$output .= "* WordPress redirect".rsssl_get_option("redirect")."\n";
|
|
|
|
if ( rsssl_get_option("switch_mixed_content_fixer_hook") ) {
|
|
$output .= "* Use alternative method to fix mixed content\n";
|
|
}
|
|
if ( rsssl_get_option("dismiss_all_notices") ) {
|
|
$output .= "* Dismiss all Really Simple SSL notices\n";
|
|
}
|
|
$output .= "\n";
|
|
|
|
$output .= "Server information\n";
|
|
$output .= "Server: " . RSSSL()->server->get_server() . "\n";
|
|
$output .= "SSL Type: " . RSSSL()->admin->ssl_type . "\n";
|
|
|
|
if ( function_exists('phpversion')) {
|
|
$output .= "PHP Version: " . phpversion() . "\n";
|
|
}
|
|
|
|
if ( is_multisite() ) {
|
|
$output .= "MULTISITE\n";
|
|
}
|
|
|
|
if ( rsssl_is_networkwide_active() ) {
|
|
$output .= "Really Simple SSL network wide activated\n";
|
|
} else if ( is_multisite() ){
|
|
$output .= "Really Simple SSL per site activated\n";
|
|
}
|
|
|
|
$output .= "<br>" . "<b>" . "SSL Configuration" . "</b>";
|
|
$domain = RSSSL()->certificate->get_domain();
|
|
$certinfo = RSSSL()->certificate->get_certinfo($domain);
|
|
if ( !$certinfo ) {
|
|
$output .= "SSL certificate not valid<br>";
|
|
}
|
|
|
|
$domain_valid = RSSSL()->certificate->is_domain_valid($certinfo, $domain);
|
|
if ( !$domain_valid ) {
|
|
$output .= "Domain on certificate does not match website's domain<br>";
|
|
}
|
|
|
|
$date_valid = RSSSL()->certificate->is_date_valid($certinfo);
|
|
if ( !$date_valid ) {
|
|
$output .= "Date on certificate expired or not valid<br>";
|
|
}
|
|
$filecontents = get_transient('rsssl_testpage');
|
|
if ( strpos($filecontents, "#SSL TEST PAGE#") !== false ) {
|
|
$output .= "SSL test page loaded successfully<br>";
|
|
} else {
|
|
$output .= "Could not open testpage<br>";
|
|
}
|
|
if ( RSSSL()->admin->wpconfig_siteurl_not_fixed ) {
|
|
$output .= "siteurl or home url defines found in wpconfig<br>";
|
|
}
|
|
if ( RSSSL()->admin->wpconfig_siteurl_not_fixed ) {
|
|
$output .= "not able to fix wpconfig siteurl/homeurl.<br>";
|
|
}
|
|
|
|
if ( !is_writable(RSSSL()->admin->find_wp_config_path()) ) {
|
|
$output .= "wp-config.php not writable<br>";
|
|
}
|
|
$output .= "Detected SSL setup: ".RSSSL()->admin->ssl_type."<br>";
|
|
if ( file_exists(RSSSL()->admin->htaccess_file()) ){
|
|
$output .= "htaccess file exists.<br>";
|
|
if ( !is_writable(RSSSL()->admin->htaccess_file()) ) {
|
|
$output .= "htaccess file not writable.<br>";
|
|
}
|
|
} else {
|
|
$output .= "no htaccess file available.<br>";
|
|
}
|
|
|
|
if (get_transient('rsssl_htaccess_test_success') === 'success') {
|
|
$output .= "htaccess redirect tested successfully.<br>";
|
|
} else if (get_transient('rsssl_htaccess_test_success') === 'error') {
|
|
$output .= "htaccess redirect test failed.<br>";
|
|
} else if (get_transient('rsssl_htaccess_test_success') === 'no-response') {
|
|
$output .= "htaccess redirect test failed: no response from server.<br>";
|
|
}
|
|
$mixed_content_fixer_detected = get_transient('rsssl_mixed_content_fixer_detected');
|
|
if ($mixed_content_fixer_detected === 'no-response'){
|
|
$output .= "Could not connect to webpage to detect mixed content fixer<br>";
|
|
}
|
|
if ($mixed_content_fixer_detected === 'not-found'){
|
|
$output .= "Mixed content marker not found in websource<br>";
|
|
}
|
|
if ($mixed_content_fixer_detected === 'error'){
|
|
$output .= "Mixed content marker not found: unknown error<br>";
|
|
}
|
|
if ($mixed_content_fixer_detected === 'curl-error'){
|
|
//Site has has a cURL error
|
|
$output .= "Mixed content fixer could not be detected: cURL error<br>";
|
|
}
|
|
if ($mixed_content_fixer_detected === 'found'){
|
|
$output .= "Mixed content fixer successfully detected<br>";
|
|
}
|
|
if ( !rsssl_get_option('mixed_content_fixer') ) {
|
|
$output .= "Mixed content fixer not enabled<br>";
|
|
}
|
|
if ( !RSSSL()->admin->htaccess_contains_redirect_rules() ) {
|
|
$output .= ".htaccess does not contain default Really Simple SSL redirect.<br>";
|
|
}
|
|
|
|
|
|
$output .= "\nConstants\n";
|
|
|
|
if ( defined( 'RSSSL_FORCE_ACTIVATE' ) ) {
|
|
$output .= "RSSSL_FORCE_ACTIVATE defined\n";
|
|
}
|
|
if ( defined( 'RSSSL_NO_FLUSH' ) ) {
|
|
$output .= "RSSSL_NO_FLUSH defined";
|
|
}
|
|
if ( defined( 'RSSSL_DISMISS_ACTIVATE_SSL_NOTICE' ) ) {
|
|
$output .= "RSSSL_DISMISS_ACTIVATE_SSL_NOTICE defined\n";
|
|
}
|
|
|
|
if ( defined( 'RSSSL_SAFE_MODE' ) ) {
|
|
$output .= "RSSSL_SAFE_MODE defined\n";
|
|
}
|
|
if ( defined( "RSSSL_SERVER_OVERRIDE" ) ) {
|
|
$output .= "RSSSL_SERVER_OVERRIDE defined\n";
|
|
}
|
|
|
|
if ( ! defined( 'RSSSL_FORCE_ACTIVATE' )
|
|
&& ! defined( 'RSSSL_NO_FLUSH' )
|
|
&& ! defined( 'RSSSL_DISMISS_ACTIVATE_SSL_NOTICE' )
|
|
&& ! defined( 'RSSSL_SAFE_MODE' )
|
|
&& ! defined( "RSSSL_SERVER_OVERRIDE" )
|
|
) {
|
|
$output .= "No constants defined\n";
|
|
}
|
|
return $output;
|
|
}
|
|
|
|
if ( rsssl_user_can_manage() && isset($_GET['download']) ) {
|
|
$content = rsssl_get_system_status();
|
|
$fsize = function_exists( 'mb_strlen' ) ? mb_strlen( $content, '8bit' ) : strlen( $content );
|
|
$file_name = 'really-simple-ssl-system-status.txt';
|
|
|
|
//direct download
|
|
header( "Content-type: application/octet-stream" );
|
|
header( "Content-Disposition: attachment; filename=\"" . $file_name . "\"" );
|
|
//open in browser
|
|
//header("Content-Disposition: inline; filename=\"".$file_name."\"");
|
|
header( "Content-length: $fsize" );
|
|
header( "Cache-Control: private", false ); // required for certain browsers
|
|
header( "Pragma: public" ); // required
|
|
header( "Expires: 0" );
|
|
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
|
|
header( "Content-Transfer-Encoding: binary" );
|
|
echo $content;
|
|
}
|
|
|
|
function find_wordpress_base_path()
|
|
{
|
|
$path = __DIR__;
|
|
|
|
do {
|
|
if (file_exists($path . "/wp-config.php")) {
|
|
//check if the wp-load.php file exists here. If not, we assume it's in a subdir.
|
|
if ( file_exists( $path . '/wp-load.php') ) {
|
|
return $path;
|
|
} else {
|
|
//wp not in this directory. Look in each folder to see if it's there.
|
|
if ( file_exists( $path ) && $handle = opendir( $path ) ) {
|
|
while ( false !== ( $file = readdir( $handle ) ) ) {
|
|
if ( $file != "." && $file != ".." ) {
|
|
$file = $path .'/' . $file;
|
|
if ( is_dir( $file ) && file_exists( $file . '/wp-load.php') ) {
|
|
$path = $file;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
closedir( $handle );
|
|
}
|
|
}
|
|
|
|
return $path;
|
|
}
|
|
} while ($path = realpath("$path/.."));
|
|
|
|
return false;
|
|
}
|
|
|