Really Simple SSL - Version 3.3

Version Description

  • Updated SSL activated notice
  • Updated readme
Download this release

Release Info

Developer RogierLankhorst
Plugin Icon 128x128 Really Simple SSL
Version 3.3
Comparing to
See all releases

Code changes from version 3.2.6 to 3.3

assets/icon-128x128.png ADDED
Binary file
assets/logo-really-simple-ssl.png ADDED
Binary file
assets/wpsearchinsights.jpg ADDED
Binary file
class-admin.php CHANGED
@@ -131,6 +131,7 @@ class rsssl_admin extends rsssl_front_end
131
  - No SSL detected
132
  */
133
 
 
134
  //when configuration should run again
135
  if ($this->clicked_activate_ssl() || !$this->ssl_enabled || !$this->site_has_ssl || $is_on_settings_page || is_network_admin()) {
136
 
@@ -239,7 +240,7 @@ class rsssl_admin extends rsssl_front_end
239
  //remove plugin one by one on each site
240
  $sites = get_sites();
241
  foreach ($sites as $site) {
242
- switch_to_blog($site['blog_id']);
243
 
244
  $current = get_option('active_plugins', array());
245
  $current = $this->remove_plugin_from_array($plugin, $current);
@@ -247,9 +248,7 @@ class rsssl_admin extends rsssl_front_end
247
 
248
  restore_current_blog(); //switches back to previous blog, not current, so we have to do it each loop
249
  }
250
-
251
  } else {
252
-
253
  $current = get_option('active_plugins', array());
254
  $current = $this->remove_plugin_from_array($plugin, $current);
255
  update_option('active_plugins', $current);
@@ -354,6 +353,8 @@ class rsssl_admin extends rsssl_front_end
354
 
355
  $this->set_siteurl_to_ssl();
356
  $this->save_options();
 
 
357
  }
358
 
359
 
@@ -367,9 +368,19 @@ class rsssl_admin extends rsssl_front_end
367
  $this->save_options();
368
  }
369
 
 
 
 
 
 
 
 
 
 
370
 
371
  public function wpconfig_ok()
372
  {
 
373
  if (($this->do_wpconfig_loadbalancer_fix || $this->no_server_variable || $this->wpconfig_siteurl_not_fixed) && !$this->wpconfig_is_writable()) {
374
  $result = false;
375
  } else {
@@ -412,8 +423,9 @@ class rsssl_admin extends rsssl_front_end
412
 
413
  public function ssl_detected()
414
  {
415
- if ($this->site_has_ssl) { ?>
416
- <div id="message" class="updated notice activate-ssl">
 
417
  <?php
418
  do_action('rsssl_activation_notice_inner');
419
  ?>
@@ -456,18 +468,30 @@ class rsssl_admin extends rsssl_front_end
456
 
457
  <?php _e("Some things can't be done automatically. Before you migrate, please check for: ", 'really-simple-ssl'); ?>
458
  <p>
459
- <ul>
460
- <li><?php _e('Http references in your .css and .js files: change any http:// into //', 'really-simple-ssl'); ?></li>
461
- <li><?php _e('Images, stylesheets or scripts from a domain without an SSL certificate: remove them or move to your own server.', 'really-simple-ssl'); ?></li><?php
462
 
463
- $backup_link = "https://really-simple-ssl.com/knowledge-base/backing-up-your-site/";
464
- $link_open = '<a target="_blank" href="' . $backup_link . '">';
465
  $link_close = '</a>';
466
-
467
  ?>
468
- <li> <?php printf(__("It is recommended to take a %sbackup%s of your site before activating SSL", 'really-simple-ssl'), $link_open, $link_close); ?> </li>
469
  </ul>
470
  </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
471
  <?php
472
  }
473
 
@@ -488,8 +512,12 @@ class rsssl_admin extends rsssl_front_end
488
  <input type="submit" class='button button-primary'
489
  value="<?php _e("Go ahead, activate SSL!", "really-simple-ssl"); ?>" id="rsssl_do_activate_ssl"
490
  name="rsssl_do_activate_ssl">
491
- <br><?php _e("You may need to login in again.", "really-simple-ssl") ?>
 
 
492
  </form>
 
 
493
  </div>
494
  </p>
495
  <?php
@@ -508,8 +536,8 @@ class rsssl_admin extends rsssl_front_end
508
  if ($this->site_has_ssl) {
509
  ?>
510
  <p><?php _e('You can also let the automatic scan of the pro version handle this for you, and get premium support, increased security with HSTS and more!', 'really-simple-ssl'); ?>
511
- &nbsp;<a target="_blank"
512
- href="<?php echo $this->pro_url; ?>"><?php _e("Check out Really Simple SSL Premium", "really-simple-ssl"); ?></a>
513
  </p>
514
  <?php
515
  }
@@ -691,7 +719,6 @@ class rsssl_admin extends rsssl_front_end
691
  public function configure_ssl()
692
  {
693
  if (!current_user_can($this->capability)) return;
694
-
695
  $safe_mode = FALSE;
696
  if (defined('RSSSL_SAFE_MODE') && RSSSL_SAFE_MODE) $safe_mode = RSSSL_SAFE_MODE;
697
 
@@ -699,7 +726,6 @@ class rsssl_admin extends rsssl_front_end
699
  $this->trace_log("<br>" . "<b>" . "SSL Configuration" . "</b>");
700
  if ($this->site_has_ssl) {
701
  //when one of the used server variables was found, test if the redirect works
702
-
703
  if (RSSSL()->rsssl_server->uses_htaccess() && $this->ssl_type != "NA") {
704
  $this->test_htaccess_redirect();
705
  }
@@ -728,6 +754,10 @@ class rsssl_admin extends rsssl_front_end
728
  $this->set_siteurl_to_ssl();
729
  }
730
 
 
 
 
 
731
  }
732
  }
733
 
@@ -1261,7 +1291,6 @@ class rsssl_admin extends rsssl_front_end
1261
  $server_var = TRUE;
1262
  }
1263
 
1264
-
1265
  if (is_ssl() || $server_var) {
1266
  return true;
1267
  } else {
@@ -1297,7 +1326,7 @@ class rsssl_admin extends rsssl_front_end
1297
  //check the type of SSL, either by parsing the returned string, or by reading the server vars.
1298
  if ((strpos($filecontents, "#CLOUDFRONT#") !== false) || (isset($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO']) && ($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] == 'https'))) {
1299
  $this->ssl_type = "CLOUDFRONT";
1300
- } elseif ((strpos($filecontents, "#CLOUDFLARE#") !== false) || (isset($_SERVER['HTTP_CF_VISITOR']) && ($_SERVER['HTTP_CF_VISITOR'] == 'https'))) {
1301
  $this->ssl_type = "CLOUDFLARE";
1302
  } elseif ((strpos($filecontents, "#LOADBALANCER#") !== false) || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))) {
1303
  $this->ssl_type = "LOADBALANCER";
@@ -1855,7 +1884,7 @@ class rsssl_admin extends rsssl_front_end
1855
  $this->mixed_content_fixer_detected = FALSE;
1856
  }
1857
  if ($mixed_content_fixer_detected === 'found'){
1858
- $this->trace_log("Mixed content fixer succesfully detected");
1859
  //Mixed content fixer was successfully detected on the front end
1860
  $this->mixed_content_fixer_detected = true;
1861
  }
@@ -1991,18 +2020,17 @@ class rsssl_admin extends rsssl_front_end
1991
  if ($this->do_wpconfig_loadbalancer_fix) { ?>
1992
  <p><?php echo __("Your wp-config.php has to be edited, but is not writable.", "really-simple-ssl"); ?></p>
1993
  <p><?php echo __("Because your site is behind a loadbalancer and is_ssl() returns false, you should add the following line of code to your wp-config.php.", "really-simple-ssl"); ?>
1994
-
1995
  <br><br><code>
1996
  //Begin Really Simple SSL Load balancing fix<br>
1997
- $server_opts = array("HTTP_CLOUDFRONT_FORWARDED_PROTO" => "https", "HTTP_CF_VISITOR"=>"https",
1998
- "HTTP_X_FORWARDED_PROTO"=>"https", "HTTP_X_FORWARDED_SSL"=>"on", "HTTP_X_PROTO"=>"SSL",
1999
- "HTTP_X_FORWARDED_SSL"=>"1");<br>
2000
- foreach( $server_opts as $option => $value ) {<br>
2001
- &nbsp;if ((isset($_ENV["HTTPS"]) && ( "on" == $_ENV["HTTPS"] )) || (isset( $_SERVER[ $option ] )
2002
- && ( strpos( $_SERVER[ $option ], $value ) !== false )) ) {<br>
2003
- &nbsp;&nbsp;$_SERVER[ "HTTPS" ] = "on";<br>
2004
- &nbsp;&nbsp;break;<br>
2005
- &nbsp;}<br>
2006
  }<br>
2007
  //END Really Simple SSL
2008
  </code><br>
@@ -2037,7 +2065,6 @@ class rsssl_admin extends rsssl_front_end
2037
  if (file_exists("$this->ABSpath.well-known/acme-challenge")) {
2038
  return true;
2039
  }
2040
-
2041
  return false;
2042
  }
2043
 
@@ -2053,7 +2080,6 @@ class rsssl_admin extends rsssl_front_end
2053
  public function has_well_known_needle()
2054
  {
2055
  $htaccess = file_get_contents($this->htaccess_file());
2056
-
2057
  $well_known_needle = ".well-known";
2058
 
2059
  if (strpos($htaccess, $well_known_needle) !== false) {
@@ -2061,7 +2087,6 @@ class rsssl_admin extends rsssl_front_end
2061
  }
2062
 
2063
  return false;
2064
-
2065
  }
2066
 
2067
  public function show_leave_review_notice()
@@ -2070,18 +2095,56 @@ class rsssl_admin extends rsssl_front_end
2070
  $screen = get_current_screen();
2071
  if ( $screen->parent_base === 'edit' ) return;
2072
 
 
 
 
 
 
 
 
 
2073
  if (!$this->review_notice_shown && get_option('rsssl_activation_timestamp') && get_option('rsssl_activation_timestamp') < strtotime("-1 month")) {
2074
  add_action('admin_print_footer_scripts', array($this, 'insert_dismiss_review'));
2075
  ?>
2076
- <div id="message" class="updated notice is-dismissible rlrsssl-review">
2077
- <p><?php printf(__('Hi, you have been using Really Simple SSL for a month now, awesome! If you have a moment, please consider leaving a review on WordPress.org to spread the word. We greatly appreciate it! If you have any questions or feedback, leave us a %smessage%s.', 'really-simple-ssl'),'<a href="https://really-simple-ssl.com/contact" target="_blank">','</a>'); ?></p>
2078
- <i>- Rogier</i>
2079
- <?php //Inline style because the main.css stylesheet is only included on Really Simple SSL admin pages.?>
2080
- <ul style="margin-left: 30px; list-style: square;">
2081
- <li><p style="margin-top: -5px;"><a target="_blank" href="https://wordpress.org/support/plugin/really-simple-ssl/reviews/#new-post"><?php _e('Leave a review', 'really-simple-ssl'); ?></a></p></li>
2082
- <li><p style="margin-top: -5px;"><a href="#" id="maybe-later"><?php _e('Maybe later', 'really-simple-ssl'); ?></a></p></li>
2083
- <li><p style="margin-top: -5px;"><a href="#" class="review-dismiss"><?php _e('No thanks and never ask me again', 'really-simple-ssl'); ?></a></p></li>
2084
- </ul>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2085
  </div>
2086
  <?php
2087
  }
@@ -2127,7 +2190,7 @@ class rsssl_admin extends rsssl_front_end
2127
  <?php _e("Major security issue!", "really-simple-ssl"); ?>
2128
  </h1>
2129
  <p>
2130
- <?php _e("The 'force-deactivate.php' file has to be renamed to .txt. Otherwise your ssl can be deactived by anyone on the internet.", "really-simple-ssl"); ?>
2131
  </p>
2132
  <a href="<?php echo admin_url('options-general.php?page=rlrsssl_really_simple_ssl')?>"><?php echo __("Check again", "really-simple-ssl"); ?></a>
2133
  </div>
@@ -2145,17 +2208,47 @@ class rsssl_admin extends rsssl_front_end
2145
  add_action('admin_print_footer_scripts', array($this, 'insert_dismiss_success'));
2146
  ?>
2147
  <div id="message" class="updated notice is-dismissible rlrsssl-success">
 
 
2148
  <p>
2149
- <?php _e("SSL activated!", "really-simple-ssl"); ?>&nbsp;
2150
- <?php _e("Don't forget to change your settings in Google Analytics and Webmaster tools.", "really-simple-ssl");
2151
- ?>
2152
- <a target="_blank"
2153
- href="https://really-simple-ssl.com/knowledge-base/how-to-setup-google-analytics-and-google-search-consolewebmaster-tools/"><?php _e("More info.", "really-simple-ssl"); ?></a>
2154
- <?php
2155
- $settings_link = '<a href="'.admin_url('options-general.php?page=rlrsssl_really_simple_ssl').'">';
2156
- echo sprintf(__("See the %ssettings page%s for further SSL optimizations." , "really-simple-ssl"), $settings_link, "</a>"); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
2157
  </p>
 
 
2158
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
2159
  <?php
2160
  }
2161
 
@@ -2440,50 +2533,34 @@ class rsssl_admin extends rsssl_front_end
2440
  *
2441
  */
2442
 
2443
- public function rsssl_edit_admin_menu()
2444
- {
2445
- if (!current_user_can($this->capability)) return;
2446
 
2447
- global $menu;
2448
 
2449
- $count = $this->count_plusones();
2450
- $existing_counts = $this->get_existing_settings_plusones();
2451
 
2452
- if ($count > 0 && ($existing_counts==0)) {
2453
- $update_count = "<span class='update-plugins rsssl-update-count'><span class='update-count'>$count</span></span>";
2454
- } else {
2455
- $update_count = "";
2456
- }
2457
- $menu[80][0] = str_replace(__("Settings"), __("Settings") . $update_count, $menu[80][0]);
2458
- }
2459
 
2460
- /**
2461
- * @return int
2462
- *
2463
- * @since 3.1.6
2464
- *
2465
- * Check if there is an existing update count after the Settings menu item
2466
- *
2467
- */
2468
 
2469
- public function get_existing_settings_plusones()
2470
- {
2471
- global $menu;
2472
 
2473
- $existing_count = "0";
 
 
2474
 
2475
- //Get the existing count with regex
2476
- if (strpos($menu[80][0], "plugin-count") != false) {
2477
- $pattern = '/(?<=[\'|\"]plugin-count[\'|\"]>)(.*?)(?=\<)/i';
2478
- $existing_count = preg_match($pattern, $menu[80][0]);
2479
- $str = $menu[80][0];
2480
- if (preg_match($pattern, $str, $matches)){
2481
- $existing_count = $matches[1];
2482
- }
2483
- }
2484
 
2485
- return intval($existing_count);
2486
- }
2487
 
2488
  /**
2489
  * Admin help tab
@@ -2832,7 +2909,6 @@ class rsssl_admin extends rsssl_front_end
2832
 
2833
  public function count_plusones(){
2834
  if (!current_user_can('manage_options')) return 0;
2835
-
2836
  $count = get_transient('rsssl_plusone_count');
2837
  if ($count===FALSE) {
2838
  $count = 0;
@@ -2863,12 +2939,6 @@ class rsssl_admin extends rsssl_front_end
2863
  if (!$success && isset($notice['output'][$output]['plusone']) && $notice['output'][$output]['plusone']) {
2864
  $count++;
2865
  }
2866
-
2867
- //Check if there's an existing count after the Settings item
2868
- $existing_count = $this->get_existing_settings_plusones();
2869
-
2870
- $count = $count + $existing_count;
2871
-
2872
  }
2873
  set_transient('rsssl_plusone_count', $count, 'WEEK_IN_SECONDS');
2874
  }
@@ -3068,34 +3138,49 @@ class rsssl_admin extends rsssl_front_end
3068
  *
3069
  */
3070
 
3071
- $url = is_multisite() ? 'https://really-simple-ssl.com/downloads/really-simple-ssl-pro-multisite/' : 'https://really-simple-ssl.com/downloads/really-simple-ssl-pro/';
 
3072
  $this->get_banner_html(array(
3073
  'img' => 'rsssl-pro.jpg',
3074
  'title' => 'Really Simple SSL Pro',
3075
- 'description' => __("Really Simple SSL pro optimizes your SSL configuration: extensive scan for mixed content issues, access to premium support, HSTS and more!", "really-simple-ssl"),
3076
  'url' => $url,
3077
  'pro' => true,
3078
  )
3079
  );
3080
- $this->get_banner_html(array(
3081
- 'img' => 'complianz.jpg',
3082
- 'title' => 'Complianz',
3083
- 'description' => __("The Complianz Privacy Suite (GDPR/CaCPA) for WordPress. Simple, Quick and Complete. Up-to-date customized legal documents by a prominent IT Law firm.", "really-simple-ssl"),
3084
- 'url' => 'https://wordpress.org/plugins/complianz-gdpr/',
3085
- 'pro' => true,
3086
- )
3087
- );
 
 
 
3088
 
3089
  if (!defined("ZRDN_PLUGIN_DIRECTORY")) {
3090
  $this->get_banner_html(array(
3091
  'img' => 'ziprecipes.png',
3092
  'title' => 'Zip Recipes',
3093
  'description' => __("Create beautiful SEO friendly recipe cards for your recipes with Zip Recipes.", "really-simple-ssl"),
3094
- 'url' => 'https://wordpress.org/plugins/zip-recipes/',
3095
  )
3096
  );
3097
  }
3098
 
 
 
 
 
 
 
 
 
 
 
 
3099
  if (defined("ultimatemember_version")) {
3100
 
3101
  if (!defined("um_tagging_version")) {
@@ -3501,9 +3586,15 @@ class rsssl_admin extends rsssl_front_end
3501
  RSSSL()->rsssl_help->get_help_tip(__("A .htaccess redirect is faster. Really Simple SSL detects the redirect code that is most likely to work (99% of websites), but this is not 100%. Make sure you know how to regain access to your site if anything goes wrong!", "really-simple-ssl"));
3502
  echo $comment;
3503
 
 
 
 
 
 
 
3504
  if ($this->htaccess_redirect && (!is_writable($this->htaccess_file()) || !$this->htaccess_test_success)) {
3505
  echo "<br><br>";
3506
- if (!is_writable($this->htaccess_file())) _e("The .htaccess file is not writable. Add these lines to your .htaccess manually, or set 644 writing permissions", "really-simple-ssl");
3507
  if (!$this->htaccess_test_success) _e("The .htaccess redirect rules that were selected by this plugin failed in the test. The following redirect rules were tested:", "really-simple-ssl");
3508
  echo "<br><br>";
3509
  if ($this->ssl_type != "NA") {
@@ -3942,7 +4033,6 @@ class rsssl_admin extends rsssl_front_end
3942
  exit;
3943
  }
3944
  }
3945
-
3946
  } //class closure
3947
 
3948
  /**
@@ -3977,7 +4067,7 @@ function rsssl_ssl_detected(){
3977
  if (!RSSSL()->really_simple_ssl->site_has_ssl) {
3978
  return 'no-ssl-detected';
3979
  }
3980
- if (RSSSL()->really_simple_ssl->site_has_ssl) {
3981
  return 'ssl-detected';
3982
  }
3983
 
131
  - No SSL detected
132
  */
133
 
134
+
135
  //when configuration should run again
136
  if ($this->clicked_activate_ssl() || !$this->ssl_enabled || !$this->site_has_ssl || $is_on_settings_page || is_network_admin()) {
137
 
240
  //remove plugin one by one on each site
241
  $sites = get_sites();
242
  foreach ($sites as $site) {
243
+ RSSSL()->rsssl_multisite->switch_to_blog_bw_compatible($site);
244
 
245
  $current = get_option('active_plugins', array());
246
  $current = $this->remove_plugin_from_array($plugin, $current);
248
 
249
  restore_current_blog(); //switches back to previous blog, not current, so we have to do it each loop
250
  }
 
251
  } else {
 
252
  $current = get_option('active_plugins', array());
253
  $current = $this->remove_plugin_from_array($plugin, $current);
254
  update_option('active_plugins', $current);
353
 
354
  $this->set_siteurl_to_ssl();
355
  $this->save_options();
356
+
357
+
358
  }
359
 
360
 
368
  $this->save_options();
369
  }
370
 
371
+ public function redirect_to_settings_page_after_activation() {
372
+ if (isset($_GET['page']) && $_GET['page'] == 'rlrsssl_really_simple_ssl') return;
373
+ $url = add_query_arg( array(
374
+ "page" => "rlrsssl_really_simple_ssl",
375
+ ), admin_url( "options-general.php" ) );
376
+ wp_redirect( $url );
377
+ exit;
378
+ }
379
+
380
 
381
  public function wpconfig_ok()
382
  {
383
+
384
  if (($this->do_wpconfig_loadbalancer_fix || $this->no_server_variable || $this->wpconfig_siteurl_not_fixed) && !$this->wpconfig_is_writable()) {
385
  $result = false;
386
  } else {
423
 
424
  public function ssl_detected()
425
  {
426
+ if ($this->site_has_ssl) {
427
+ ?>
428
+ <div id="message" class="notice activate-ssl <?php echo apply_filters('rsssl_activate_notice_class', '');?>">
429
  <?php
430
  do_action('rsssl_activation_notice_inner');
431
  ?>
468
 
469
  <?php _e("Some things can't be done automatically. Before you migrate, please check for: ", 'really-simple-ssl'); ?>
470
  <p>
471
+ <ul class="message-ul">
472
+ <li class="message-li"><?php _e('Http references in your .css and .js files: change any http:// into //', 'really-simple-ssl'); ?></li>
473
+ <li class="message-li"><?php _e('Images, stylesheets or scripts from a domain without an SSL certificate: remove them or move to your own server', 'really-simple-ssl'); ?></li><?php
474
 
475
+ $backup_link = "https://freally-simple-ssl.com/knowledge-base/backing-up-your-site/";
476
+ $link_open = '<a target="_blank" href="'.$backup_link.'">';
477
  $link_close = '</a>';
 
478
  ?>
479
+ <li class="message-li"><?php printf(__("We strongly recommend to take a %sbackup%s of your site before activating SSL", 'really-simple-ssl'), $link_open, $link_close); ?> </li>
480
  </ul>
481
  </p>
482
+ <style>
483
+ .message-ul {
484
+ list-style-type: none;
485
+ }
486
+
487
+ #message .message-li::before {
488
+ vertical-align: middle;
489
+ margin-right: 25px;
490
+ color: lightgrey;
491
+ content: "\f345";
492
+ font: 400 21px/1 dashicons;
493
+ }
494
+ </style>
495
  <?php
496
  }
497
 
512
  <input type="submit" class='button button-primary'
513
  value="<?php _e("Go ahead, activate SSL!", "really-simple-ssl"); ?>" id="rsssl_do_activate_ssl"
514
  name="rsssl_do_activate_ssl">
515
+ <?php if (!defined("rsssl_pro_version") ) { ?>
516
+ <a class="button action btn-premium" href="https://really-simple-ssl.com/pro" target="_blank"><?php _e("Get ready with Pro", "really-simple-ssl"); ?></a>
517
+ <?php } ?>
518
  </form>
519
+ <b><?php _e("You may need to login in again.", "really-simple-ssl") ?></b>
520
+ <div id="rsssl-logo" style="float: right; margin-top: -35px;"><img width=180px" src="<?php echo rsssl_url?>/assets/logo-really-simple-ssl.png" alt="review-logo"></div>
521
  </div>
522
  </p>
523
  <?php
536
  if ($this->site_has_ssl) {
537
  ?>
538
  <p><?php _e('You can also let the automatic scan of the pro version handle this for you, and get premium support, increased security with HSTS and more!', 'really-simple-ssl'); ?>
539
+ <a target="_blank"
540
+ href="<?php echo $this->pro_url; ?>"><?php _e("Check out Really Simple SSL Pro", "really-simple-ssl"); ?></a>
541
  </p>
542
  <?php
543
  }
719
  public function configure_ssl()
720
  {
721
  if (!current_user_can($this->capability)) return;
 
722
  $safe_mode = FALSE;
723
  if (defined('RSSSL_SAFE_MODE') && RSSSL_SAFE_MODE) $safe_mode = RSSSL_SAFE_MODE;
724
 
726
  $this->trace_log("<br>" . "<b>" . "SSL Configuration" . "</b>");
727
  if ($this->site_has_ssl) {
728
  //when one of the used server variables was found, test if the redirect works
 
729
  if (RSSSL()->rsssl_server->uses_htaccess() && $this->ssl_type != "NA") {
730
  $this->test_htaccess_redirect();
731
  }
754
  $this->set_siteurl_to_ssl();
755
  }
756
 
757
+ if (!is_multisite()) {
758
+ $this->redirect_to_settings_page_after_activation();
759
+ }
760
+
761
  }
762
  }
763
 
1291
  $server_var = TRUE;
1292
  }
1293
 
 
1294
  if (is_ssl() || $server_var) {
1295
  return true;
1296
  } else {
1326
  //check the type of SSL, either by parsing the returned string, or by reading the server vars.
1327
  if ((strpos($filecontents, "#CLOUDFRONT#") !== false) || (isset($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO']) && ($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO'] == 'https'))) {
1328
  $this->ssl_type = "CLOUDFRONT";
1329
+ } elseif ((strpos($filecontents, "#CLOUDFLARE#") !== false) || (isset($_SERVER['HTTP_CF_VISITOR']) && (strpos($_SERVER["HTTP_CF_VISITOR"], "https") !== false))) {
1330
  $this->ssl_type = "CLOUDFLARE";
1331
  } elseif ((strpos($filecontents, "#LOADBALANCER#") !== false) || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https'))) {
1332
  $this->ssl_type = "LOADBALANCER";
1884
  $this->mixed_content_fixer_detected = FALSE;
1885
  }
1886
  if ($mixed_content_fixer_detected === 'found'){
1887
+ $this->trace_log("Mixed content fixer successfully detected");
1888
  //Mixed content fixer was successfully detected on the front end
1889
  $this->mixed_content_fixer_detected = true;
1890
  }
2020
  if ($this->do_wpconfig_loadbalancer_fix) { ?>
2021
  <p><?php echo __("Your wp-config.php has to be edited, but is not writable.", "really-simple-ssl"); ?></p>
2022
  <p><?php echo __("Because your site is behind a loadbalancer and is_ssl() returns false, you should add the following line of code to your wp-config.php.", "really-simple-ssl"); ?>
 
2023
  <br><br><code>
2024
  //Begin Really Simple SSL Load balancing fix<br>
2025
+ if ((isset($_ENV["HTTPS"]) && ("on" == $_ENV["HTTPS"]))<br>
2026
+ || (isset($_SERVER["HTTP_X_FORWARDED_SSL"]) && (strpos($_SERVER["HTTP_X_FORWARDED_SSL"], "1") !== false))<br>
2027
+ || (isset($_SERVER["HTTP_X_FORWARDED_SSL"]) && (strpos($_SERVER["HTTP_X_FORWARDED_SSL"], "on") !== false))<br>
2028
+ || (isset($_SERVER["HTTP_CF_VISITOR"]) && (strpos($_SERVER["HTTP_CF_VISITOR"], "https") !== false))<br>
2029
+ || (isset($_SERVER["HTTP_CLOUDFRONT_FORWARDED_PROTO"]) && (strpos($_SERVER["HTTP_CLOUDFRONT_FORWARDED_PROTO"], "https") !== false))<br>
2030
+ || (isset($_SERVER["HTTP_X_FORWARDED_PROTO"]) && (strpos($_SERVER["HTTP_X_FORWARDED_PROTO"], "https") !== false))<br>
2031
+ || (isset($_SERVER["HTTP_X_PROTO"]) && (strpos($_SERVER["HTTP_X_PROTO"], "SSL") !== false))<br>
2032
+ ) {<br>
2033
+ &nbsp;&nbsp; $_SERVER["HTTPS"] = "on";<br>
2034
  }<br>
2035
  //END Really Simple SSL
2036
  </code><br>
2065
  if (file_exists("$this->ABSpath.well-known/acme-challenge")) {
2066
  return true;
2067
  }
 
2068
  return false;
2069
  }
2070
 
2080
  public function has_well_known_needle()
2081
  {
2082
  $htaccess = file_get_contents($this->htaccess_file());
 
2083
  $well_known_needle = ".well-known";
2084
 
2085
  if (strpos($htaccess, $well_known_needle) !== false) {
2087
  }
2088
 
2089
  return false;
 
2090
  }
2091
 
2092
  public function show_leave_review_notice()
2095
  $screen = get_current_screen();
2096
  if ( $screen->parent_base === 'edit' ) return;
2097
 
2098
+ //this user has never had the review notice yet.
2099
+ if ($this->ssl_enabled && !get_option('rsssl_activation_timestamp')){
2100
+ $month = rand ( 0, 11);
2101
+ $trigger_notice_date = time() + $month * MONTH_IN_SECONDS;
2102
+ update_option('rsssl_activation_timestamp', $trigger_notice_date);
2103
+ update_option('rsssl_before_review_notice_user', true);
2104
+ }
2105
+
2106
  if (!$this->review_notice_shown && get_option('rsssl_activation_timestamp') && get_option('rsssl_activation_timestamp') < strtotime("-1 month")) {
2107
  add_action('admin_print_footer_scripts', array($this, 'insert_dismiss_review'));
2108
  ?>
2109
+ <style>
2110
+ .rsssl-container {
2111
+ display: flex;
2112
+ padding:12px;
2113
+ }
2114
+ .rsssl-container .dashicons {
2115
+ margin-left:10px;
2116
+ margin-right:5px;
2117
+ }
2118
+ .rsssl-review-image img{
2119
+ margin-top:0.5em;
2120
+ }
2121
+ .rsssl-buttons-row {
2122
+ margin-top:10px;
2123
+ display: flex;
2124
+ align-items: center;
2125
+ }
2126
+ </style>
2127
+ <div id="message" class="updated fade notice is-dismissible rlrsssl-review really-simple-plugins" style="border-left:4px solid #333">
2128
+ <div class="rsssl-container">
2129
+ <div class="rsssl-review-image"><img width=80px" src="<?php echo rsssl_url?>/assets/icon-128x128.png" alt="review-logo"></div>
2130
+ <div style="margin-left:30px">
2131
+ <?php if (get_option("rsssl_before_review_notice_user")){?>
2132
+ <p><?php printf(__('Hi, Really Simple SSL has kept your site secure for some time now, awesome! If you have a moment, please consider leaving a review on WordPress.org to spread the word. We greatly appreciate it! If you have any questions or feedback, leave us a %smessage%s.', 'really-simple-ssl'),'<a href="https://really-simple-ssl.com/contact" target="_blank">','</a>'); ?></p>
2133
+ <?php } else {?>
2134
+ <p><?php printf(__('Hi, Really Simple SSL has kept your site secure for a month now, awesome! If you have a moment, please consider leaving a review on WordPress.org to spread the word. We greatly appreciate it! If you have any questions or feedback, leave us a %smessage%s.', 'really-simple-ssl'),'<a href="https://really-simple-ssl.com/contact" target="_blank">','</a>'); ?></p>
2135
+ <?php }?>
2136
+
2137
+ <i>- Rogier</i>
2138
+ <div class="rsssl-buttons-row">
2139
+ <a class="button button-primary" target="_blank"
2140
+ href="https://wordpress.org/support/plugin/really-simple-ssl/reviews/#new-post"><?php _e('Leave a review', 'really-simple-ssl'); ?></a>
2141
+
2142
+ <div class="dashicons dashicons-calendar"></div><a href="#" id="maybe-later"><?php _e('Maybe later', 'really-simple-ssl'); ?></a>
2143
+
2144
+ <div class="dashicons dashicons-no-alt"></div><a href="#" class="review-dismiss"><?php _e('Don\'t show again', 'really-simple-ssl'); ?></a>
2145
+ </div>
2146
+ </div>
2147
+ </div>
2148
  </div>
2149
  <?php
2150
  }
2190
  <?php _e("Major security issue!", "really-simple-ssl"); ?>
2191
  </h1>
2192
  <p>
2193
+ <?php _e("The 'force-deactivate.php' file has to be renamed to .txt. Otherwise your ssl can be deactivated by anyone on the internet.", "really-simple-ssl"); ?>
2194
  </p>
2195
  <a href="<?php echo admin_url('options-general.php?page=rlrsssl_really_simple_ssl')?>"><?php echo __("Check again", "really-simple-ssl"); ?></a>
2196
  </div>
2208
  add_action('admin_print_footer_scripts', array($this, 'insert_dismiss_success'));
2209
  ?>
2210
  <div id="message" class="updated notice is-dismissible rlrsssl-success">
2211
+
2212
+ <h1><?php _e("SSL activated!", "really-simple-ssl"); ?></h1>
2213
  <p>
2214
+ <?php _e("Take the time to review these things", "really-simple-ssl");?>
2215
+ <ul class="message-ul">
2216
+ <li class="message-li"><?php _e("Don't forget to change your settings in Google Analytics and Webmaster tools.", "really-simple-ssl");
2217
+ ?>
2218
+ <a target="_blank"
2219
+ href="https://really-simple-ssl.com/knowledge-base/how-to-setup-google-analytics-and-google-search-consolewebmaster-tools/">
2220
+ <?php _e("More info", "really-simple-ssl"); ?></a>
2221
+ </li>
2222
+
2223
+ <?php if (uses_elementor()) {
2224
+ ?>
2225
+ <li class="message-li"><?php _e("We have detected Elementor.", "really-simple-ssl");?>
2226
+ <a target="_blank"
2227
+ href="https://really-simple-ssl.com/knowledge-base/how-to-fix-mixed-content-in-elementor-after-moving-to-ssl/"><?php _e("See our article for instructions", "really-simple-ssl"); ?></a>
2228
+ </li>
2229
+ <?php }
2230
+ ?>
2231
+ <li class="message-li"><?php _e("Improve your security", "really-simple-ssl");?>
2232
+ <a target="_blank" href="https://really-simple-ssl.com/new-security-headers-for-really-simple-ssl-pro-coming-up/"><?php _e("with security headers", "really-simple-ssl"); ?></a>
2233
+ </li>
2234
+ </ul>
2235
  </p>
2236
+ <a class="button action btn-premium btn-premium-activated" style="margin-bottom: 10px;" href="https://really-simple-ssl.com/pro" target="_blank"><?php _e("Really Simple SSL Pro", "really-simple-ssl"); ?></a>
2237
+ <div id="rsssl-logo" style="float: right; margin-top: -20px;"><img width=180px" src="<?php echo rsssl_url?>/assets/logo-really-simple-ssl.png" alt="review-logo"></div>
2238
  </div>
2239
+ <style>
2240
+ .message-ul {
2241
+ list-style-type: none;
2242
+ }
2243
+
2244
+ #message .message-li::before {
2245
+ vertical-align: middle;
2246
+ margin-right: 25px;
2247
+ color: lightgrey;
2248
+ content: "\f345";
2249
+ font: 400 21px/1 dashicons;
2250
+ }
2251
+ </style>
2252
  <?php
2253
  }
2254
 
2533
  *
2534
  */
2535
 
2536
+ public function rsssl_edit_admin_menu()
2537
+ {
2538
+ if (!current_user_can($this->capability)) return;
2539
 
2540
+ global $menu;
2541
 
2542
+ $count = $this->count_plusones();
 
2543
 
2544
+ $menu_slug = 'options-general.php';
2545
+ $menu_title = __('Settings');
 
 
 
 
 
2546
 
2547
+ foreach($menu as $index => $menu_item){
2548
+ if (!isset($menu_item[2]) || !isset($menu_item[0])) continue;
2549
+ if ($menu_item[2]===$menu_slug){
2550
+ $pattern = '/<span.*>([1-9])<\/span><\/span>/i';
2551
+ if (preg_match($pattern, $menu_item[0], $matches)){
2552
+ if (isset($matches[1])) $count = intval($count) + intval($matches[1]);
2553
+ }
 
2554
 
2555
+ $update_count = $count > 0 ? "<span class='update-plugins rsssl-update-count'><span class='update-count'>$count</span></span>":'';
2556
+ $menu[$index][0] = $menu_title . $update_count;
2557
+ }
2558
 
2559
+ }
2560
+
2561
+ }
2562
 
 
 
 
 
 
 
 
 
 
2563
 
 
 
2564
 
2565
  /**
2566
  * Admin help tab
2909
 
2910
  public function count_plusones(){
2911
  if (!current_user_can('manage_options')) return 0;
 
2912
  $count = get_transient('rsssl_plusone_count');
2913
  if ($count===FALSE) {
2914
  $count = 0;
2939
  if (!$success && isset($notice['output'][$output]['plusone']) && $notice['output'][$output]['plusone']) {
2940
  $count++;
2941
  }
 
 
 
 
 
 
2942
  }
2943
  set_transient('rsssl_plusone_count', $count, 'WEEK_IN_SECONDS');
2944
  }
3138
  *
3139
  */
3140
 
3141
+ $admin_url = admin_url();
3142
+ $url = is_multisite() ? 'https://really-simple-ssl.com/downloads/really-simple-ssl-pro-multisite/' : 'https://really-simple-ssl.com/pro/';
3143
  $this->get_banner_html(array(
3144
  'img' => 'rsssl-pro.jpg',
3145
  'title' => 'Really Simple SSL Pro',
3146
+ 'description' => __("Really Simple SSL Pro optimizes your SSL configuration: extensive scan for mixed content issues, access to premium support, HSTS and more!", "really-simple-ssl"),
3147
  'url' => $url,
3148
  'pro' => true,
3149
  )
3150
  );
3151
+
3152
+ if (!class_exists('COMPLIANZ')) {
3153
+ $this->get_banner_html( array(
3154
+ 'img' => 'complianz.jpg',
3155
+ 'title' => 'Complianz',
3156
+ 'description' => __( "The Complianz Privacy Suite (GDPR/CaCPA) for WordPress. Simple, Quick and Complete. Up-to-date customized legal documents by a prominent IT Law firm.", "really-simple-ssl" ),
3157
+ 'url' => "$admin_url" . "plugin-install.php?s=complianz+RogierLankhorst&tab=search&type=term",
3158
+ 'pro' => true,
3159
+ )
3160
+ );
3161
+ }
3162
 
3163
  if (!defined("ZRDN_PLUGIN_DIRECTORY")) {
3164
  $this->get_banner_html(array(
3165
  'img' => 'ziprecipes.png',
3166
  'title' => 'Zip Recipes',
3167
  'description' => __("Create beautiful SEO friendly recipe cards for your recipes with Zip Recipes.", "really-simple-ssl"),
3168
+ 'url' => "$admin_url" . "plugin-install.php?s=zip+recipes+RogierLankhorst&tab=search&type=term",
3169
  )
3170
  );
3171
  }
3172
 
3173
+
3174
+ if (!defined("wp_search_insights_plugin")) {
3175
+ $this->get_banner_html(array(
3176
+ 'img' => 'wpsearchinsights.jpg',
3177
+ 'title' => 'WP Search Insights',
3178
+ 'description' => __("Records all searches made on your site. See valuable insights in a clean dashboard", "really-simple-ssl"),
3179
+ 'url' => "$admin_url" . "plugin-install.php?s=wp+search+insights+Rogier+Lankhorst&tab=search&type=term",
3180
+ )
3181
+ );
3182
+ }
3183
+
3184
  if (defined("ultimatemember_version")) {
3185
 
3186
  if (!defined("um_tagging_version")) {
3586
  RSSSL()->rsssl_help->get_help_tip(__("A .htaccess redirect is faster. Really Simple SSL detects the redirect code that is most likely to work (99% of websites), but this is not 100%. Make sure you know how to regain access to your site if anything goes wrong!", "really-simple-ssl"));
3587
  echo $comment;
3588
 
3589
+ if ($this->uses_htaccess_conf()) {
3590
+ $htaccess_file = "htaccess.conf (/conf/htaccess.conf/)";
3591
+ } else {
3592
+ $htaccess_file = ".htaccess";
3593
+ }
3594
+
3595
  if ($this->htaccess_redirect && (!is_writable($this->htaccess_file()) || !$this->htaccess_test_success)) {
3596
  echo "<br><br>";
3597
+ if (!is_writable($this->htaccess_file())) _e("The $htaccess_file file is not writable. Add these lines to your htaccess manually, or set 644 writing permissions.", "really-simple-ssl");
3598
  if (!$this->htaccess_test_success) _e("The .htaccess redirect rules that were selected by this plugin failed in the test. The following redirect rules were tested:", "really-simple-ssl");
3599
  echo "<br><br>";
3600
  if ($this->ssl_type != "NA") {
4033
  exit;
4034
  }
4035
  }
 
4036
  } //class closure
4037
 
4038
  /**
4067
  if (!RSSSL()->really_simple_ssl->site_has_ssl) {
4068
  return 'no-ssl-detected';
4069
  }
4070
+ if (RSSSL()->rsssl_certificate->is_valid()) {
4071
  return 'ssl-detected';
4072
  }
4073
 
class-multisite.php CHANGED
@@ -477,6 +477,14 @@ if (!class_exists('rsssl_multisite')) {
477
 
478
  }
479
 
 
 
 
 
 
 
 
 
480
  public function get_process_completed_percentage(){
481
  $complete_count = get_site_option('rsssl_siteprocessing_progress');
482
 
@@ -530,7 +538,8 @@ if (!class_exists('rsssl_multisite')) {
530
 
531
  public function activate_ssl_networkwide()
532
  {
533
- //run chunked
 
534
  $nr_of_sites = 200;
535
  $current_offset = get_site_option('rsssl_siteprocessing_progress');
536
 
@@ -548,8 +557,7 @@ if (!class_exists('rsssl_multisite')) {
548
  update_site_option('rsssl_siteprocessing_progress', $current_offset+$nr_of_sites);
549
  }
550
  }
551
-
552
-
553
  }
554
 
555
 
@@ -562,8 +570,6 @@ if (!class_exists('rsssl_multisite')) {
562
  * */
563
  public function get_sites_bw_compatible($offset=0, $nr_of_sites=100)
564
  {
565
-
566
-
567
  global $wp_version;
568
 
569
  $args = array(
@@ -709,6 +715,7 @@ if (!class_exists('rsssl_multisite')) {
709
  *
710
  * @access private
711
  *
 
712
  */
713
 
714
  public function is_subfolder($domain)
477
 
478
  }
479
 
480
+ public function redirect_to_network_settings_page_after_activation() {
481
+ $url = add_query_arg( array(
482
+ "page" => "really-simple-ssl",
483
+ ), network_admin_url( "settings.php" ) );
484
+ wp_safe_redirect( $url );
485
+ exit;
486
+ }
487
+
488
  public function get_process_completed_percentage(){
489
  $complete_count = get_site_option('rsssl_siteprocessing_progress');
490
 
538
 
539
  public function activate_ssl_networkwide()
540
  {
541
+
542
+ //run chunked
543
  $nr_of_sites = 200;
544
  $current_offset = get_site_option('rsssl_siteprocessing_progress');
545
 
557
  update_site_option('rsssl_siteprocessing_progress', $current_offset+$nr_of_sites);
558
  }
559
  }
560
+ $this->redirect_to_network_settings_page_after_activation();
 
561
  }
562
 
563
 
570
  * */
571
  public function get_sites_bw_compatible($offset=0, $nr_of_sites=100)
572
  {
 
 
573
  global $wp_version;
574
 
575
  $args = array(
715
  *
716
  * @access private
717
  *
718
+ * @return bool
719
  */
720
 
721
  public function is_subfolder($domain)
class-server.php CHANGED
@@ -26,6 +26,7 @@ if ( ! class_exists( 'rsssl_server' ) ) {
26
 
27
  */
28
 
 
29
  public function uses_htaccess(){
30
 
31
  if ($this->get_server()=="apache" || $this->get_server()=="litespeed") {
26
 
27
  */
28
 
29
+
30
  public function uses_htaccess(){
31
 
32
  if ($this->get_server()=="apache" || $this->get_server()=="litespeed") {
css/main.css CHANGED
@@ -14,12 +14,28 @@
14
  max-width:100%;
15
  /*height:inherit;*/
16
  }
 
17
  #message.updated.notice.activate-ssl {
18
  padding-top: 10px;
19
  }
20
- .activate-ssl ul, .rsssl-result ul, .rsssl_bullets {
21
- list-style-type: square;
22
- margin-left:30px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  }
24
 
25
  .activate-ssl .button {
@@ -296,7 +312,7 @@
296
  /* Styling for the sidebar in the admin tab of the free plugin */
297
 
298
  .rsssl-really-simple-plugins-logo {
299
- background-color: #DCDCDC;
300
  margin-left: -15px;
301
  margin-right: -15px;
302
  }
@@ -315,16 +331,16 @@
315
  min-height: 125px;
316
  padding-bottom: 35px;
317
  margin-bottom: 10px;
318
- background-color: #DCDCDC;
319
  width: 100%;
320
  border-radius: 3%;
321
  }
322
 
323
  .rsssl-sidebar-single-content-container-pro {
 
324
  min-height: 125px;
325
  padding-bottom: 35px;
326
  margin-bottom: 10px;
327
- background-color: #DCDCDC;
328
  width: 100%;
329
  border-radius: 3%;
330
  }
@@ -390,6 +406,7 @@
390
  width: 40%;
391
  }
392
  .rsssl-sidebar-single-content-container {
 
393
  width: 40%;
394
  padding-left: 25px;
395
  float: left;
@@ -456,7 +473,8 @@
456
  -webkit-border-radius: 12px;
457
  -moz-border-radius: 12px;
458
  border-radius: 12px;
459
- background-color: #7BD561;
 
460
  color: white;
461
  margin-right: 5px;
462
  }
@@ -486,16 +504,18 @@ hr {
486
  float: right;
487
  font-size: inherit;
488
  height: 25px;
489
- -webkit-border-radius: 12px;
490
- -moz-border-radius: 12px;
491
  border-radius: 12px;
492
- background-color: #017FAF;
 
493
  color: white;
494
  margin-right: 5px;
495
  }
496
 
497
  .rsssl-more-info-button {
 
 
498
  clear: both;
 
499
  }
500
 
501
  #TB_ajaxContent {
@@ -510,10 +530,14 @@ hr {
510
  margin-right: 15px;
511
  }
512
 
 
 
 
 
513
  .rsssl-scan-button{
514
  float: left;
515
- margin-top: 17px;
516
- margin-right: 5px;
517
  }
518
 
519
  /*
14
  max-width:100%;
15
  /*height:inherit;*/
16
  }
17
+
18
  #message.updated.notice.activate-ssl {
19
  padding-top: 10px;
20
  }
21
+
22
+ /*Show RSSSL brand color as border-left*/
23
+ .activate-ssl {
24
+ border-left: 4px solid #F8BE2E;
25
+ }
26
+
27
+ /*If scan has been completed successfully, make border-left green*/
28
+ .rsssl-scan-completed {
29
+ border-left: 4px solid #46b450;
30
+ }
31
+
32
+ .btn-premium {
33
+ margin-left: 10px !important;
34
+ }
35
+
36
+ .btn-premium-activated {
37
+ padding-top: 10px;
38
+ padding-bottom: 10px;
39
  }
40
 
41
  .activate-ssl .button {
312
  /* Styling for the sidebar in the admin tab of the free plugin */
313
 
314
  .rsssl-really-simple-plugins-logo {
315
+ background-color: #ececec;
316
  margin-left: -15px;
317
  margin-right: -15px;
318
  }
331
  min-height: 125px;
332
  padding-bottom: 35px;
333
  margin-bottom: 10px;
334
+ background-color: #fff;
335
  width: 100%;
336
  border-radius: 3%;
337
  }
338
 
339
  .rsssl-sidebar-single-content-container-pro {
340
+ background-color: #fff;
341
  min-height: 125px;
342
  padding-bottom: 35px;
343
  margin-bottom: 10px;
 
344
  width: 100%;
345
  border-radius: 3%;
346
  }
406
  width: 40%;
407
  }
408
  .rsssl-sidebar-single-content-container {
409
+ background-color: #fff;
410
  width: 40%;
411
  padding-left: 25px;
412
  float: left;
473
  -webkit-border-radius: 12px;
474
  -moz-border-radius: 12px;
475
  border-radius: 12px;
476
+ border: none;
477
+ background-color: #000000;
478
  color: white;
479
  margin-right: 5px;
480
  }
504
  float: right;
505
  font-size: inherit;
506
  height: 25px;
 
 
507
  border-radius: 12px;
508
+ border: none;
509
+ background-color: #000000;
510
  color: white;
511
  margin-right: 5px;
512
  }
513
 
514
  .rsssl-more-info-button {
515
+ border: none;
516
+ border-radius: 50px;
517
  clear: both;
518
+ margin-top: 10px;
519
  }
520
 
521
  #TB_ajaxContent {
530
  margin-right: 15px;
531
  }
532
 
533
+ .rsssl-scan-completed .rsssl-scan-button {
534
+ margin-top: 17px;
535
+ }
536
+
537
  .rsssl-scan-button{
538
  float: left;
539
+ margin-top: 10px;
540
+ margin-right: 15px;
541
  }
542
 
543
  /*
css/main.min.css CHANGED
@@ -1 +1 @@
1
- .rsssl-notice{background-color:#fff;border-left:4px solid green;padding:1px 15px}.rsssl-main{flex:1;width:80%;float:left}.rsssl-sidebar img{max-width:100%}#message.updated.notice.activate-ssl{padding-top:10px}.activate-ssl ul,.rsssl-result ul,.rsssl_bullets{list-style-type:square;margin-left:30px}.activate-ssl .button{margin-bottom:20px}.really-simple-ssl-table{display:flex;flex-direction:column;max-width:1140px}.rsssl-table-td-main-content{width:100%}.really-simple-ssl-table tr:first-child{border-top-left-radius:.55rem;border-top-right-radius:.55rem}.really-simple-ssl-table tr:last-child{margin-bottom:0;border-bottom-left-radius:.55rem;border-bottom-right-radius:.55rem}.really-simple-ssl-table tr{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.debug-log{background-color:#fff;padding:15px;border:1px solid black}.rsssl-icons{width:15px;height:15px}.rsssl-update-count{margin-left:4px !important;display:inline-block;vertical-align:top;box-sizing:border-box;margin:1px 0 -1px 2px;padding:0 5px;min-width:18px;height:18px;border-radius:9px;background-color:#ca4a1f;color:#fff;font-size:11px;line-height:1.6;text-align:center;z-index:26}[data-rsssl-tooltip],.rsssl-tooltip{position:relative;cursor:pointer}[data-rsssl-tooltip]:before,[data-rsssl-tooltip]:after,.rsssl-tooltip:before,.rsssl-tooltip:after{position:absolute;visibility:hidden;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);opacity:0;-webkit-transition:opacity .2s ease-in-out,visibility .2s ease-in-out,-webkit-transform .2s cubic-bezier(0.71,1.7,0.77,1.24);-moz-transition:opacity .2s ease-in-out,visibility .2s ease-in-out,-moz-transform .2s cubic-bezier(0.71,1.7,0.77,1.24);transition:opacity .2s ease-in-out,visibility .2s ease-in-out,transform .2s cubic-bezier(0.71,1.7,0.77,1.24);-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translate3d(0,0,0);pointer-events:none}[data-rsssl-tooltip]:hover:before,[data-rsssl-tooltip]:hover:after,[data-rsssl-tooltip]:focus:before,[data-rsssl-tooltip]:focus:after,.rsssl-tooltip:hover:before,.rsssl-tooltip:hover:after,.rsssl-tooltip:focus:before,.rsssl-tooltip:focus:after{visibility:visible;-ms-filter:"alpha(opacity=100)";filter:alpha(opacity=100);opacity:1}.rsssl-tooltip:before,[data-rsssl-tooltip]:before{z-index:1001;border:6px solid transparent;background:transparent;content:""}.rsssl-tooltip:after,[data-rsssl-tooltip]:after{z-index:1000;padding:8px;width:160px;background-color:#000;background-color:hsla(0,0,20%,0.9);color:#fff;content:attr(data-rsssl-tooltip);font-size:14px;line-height:1.2}[data-rsssl-tooltip]:before,[data-rsssl-tooltip]:after,.rsssl-tooltip:before,.rsssl-tooltip:after,.rsssl-tooltip-top:before,.rsssl-tooltip-top:after{bottom:100%;left:50%}[data-rsssl-tooltip]:before,.rsssl-tooltip:before,.rsssl-tooltip-top:before{margin-left:-6px;margin-bottom:-12px;border-top-color:#000;border-top-color:hsla(0,0,20%,0.9)}[data-rsssl-tooltip]:after,.rsssl-tooltip:after,.rsssl-tooltip-top:after{margin-left:-80px}[data-rsssl-tooltip]:hover:before,[data-rsssl-tooltip]:hover:after,[data-rsssl-tooltip]:focus:before,[data-rsssl-tooltip]:focus:after,.rsssl-tooltip:hover:before,.rsssl-tooltip:hover:after,.rsssl-tooltip:focus:before,.rsssl-tooltip:focus:after,.rsssl-tooltip-top:hover:before,.rsssl-tooltip-top:hover:after,.rsssl-tooltip-top:focus:before,.rsssl-tooltip-top:focus:after{-webkit-transform:translateY(-12px);-moz-transform:translateY(-12px);transform:translateY(-12px)}.rsssl-tooltip-left:before,.rsssl-tooltip-left:after{right:100%;bottom:50%;left:auto}.rsssl-tooltip-left:before{margin-left:0;margin-right:-12px;margin-bottom:0;border-top-color:transparent;border-left-color:#000;border-left-color:hsla(0,0,20%,0.9)}.rsssl-tooltip-left:hover:before,.rsssl-tooltip-left:hover:after,.rsssl-tooltip-left:focus:before,.rsssl-tooltip-left:focus:after{-webkit-transform:translateX(-12px);-moz-transform:translateX(-12px);transform:translateX(-12px)}.rsssl-tooltip-bottom:before,.rsssl-tooltip-bottom:after{top:100%;bottom:auto;left:50%}.rsssl-tooltip-bottom:before{margin-top:-12px;margin-bottom:0;border-top-color:transparent;border-bottom-color:#000;border-bottom-color:hsla(0,0,20%,0.9)}.rsssl-tooltip-bottom:hover:before,.rsssl-tooltip-bottom:hover:after,.rsssl-tooltip-bottom:focus:before,.rsssl-tooltip-bottom:focus:after{-webkit-transform:translateY(12px);-moz-transform:translateY(12px);transform:translateY(12px)}.rsssl-tooltip-right:before,.rsssl-tooltip-right:after{bottom:50%;left:100%}.rsssl-tooltip-right:before{margin-bottom:0;margin-left:-12px;border-top-color:transparent;border-right-color:#000;border-right-color:hsla(0,0,20%,0.9)}.rsssl-tooltip-right:hover:before,.rsssl-tooltip-right:hover:after,.rsssl-tooltip-right:focus:before,.rsssl-tooltip-right:focus:after{-webkit-transform:translateX(12px);-moz-transform:translateX(12px);transform:translateX(12px)}.rsssl-tooltip-left:before,.rsssl-tooltip-right:before{top:3px}.rsssl-tooltip-left:after,.rsssl-tooltip-right:after{margin-left:0;margin-bottom:-16px}.rsssl-really-simple-plugins-logo{background-color:#dcdcdc;margin-left:-15px;margin-right:-15px}.rsssl-sidebar{width:240px;margin-top:20px;padding-left:15px;padding-right:15px;margin-right:15px;padding-bottom:15px;background-color:#ececec}.rsssl-sidebar-single-content-container{min-height:125px;padding-bottom:35px;margin-bottom:10px;background-color:#dcdcdc;width:100%;border-radius:3%}.rsssl-sidebar-single-content-container-pro{min-height:125px;padding-bottom:35px;margin-bottom:10px;background-color:#dcdcdc;width:100%;border-radius:3%}.rsssl-sidebar-title h3{font-size:.9em}.rsssl-sidebar-text-content-pro{font-weight:700;font-size:.8em;width:90%;margin:auto}.rsssl-sidebar-text-content{width:45%;padding-top:5px;padding-right:7px;font-weight:700;font-size:.8em;float:right;margin:10px auto}.rsssl-pro-image{height:30px;margin-top:6px}.rsssl-sidebar-image-pro{width:90%;margin:10px}.rsssl-sidebar-image{width:100px;float:left;padding:10px;height:100px}@media screen and (max-width:1024px) and (min-width:541px){.rsssl-main{width:100%}.rsssl-sidebar-title{text-align:center}.rsssl-container{flex-direction:column}.rsssl-sidebar{width:100%}.rsssl-really-simple-plugins-logo{width:40%}.rsssl-sidebar-single-content-container{width:40%;padding-left:25px;float:left;margin-right:25px}.rsssl-sidebar-single-content-container-pro{width:40%;padding-left:25px;margin:auto auto 25px}.rsssl-sidebar-um-text-content{width:40%}.rsssl-pro-image{display:none}}@media screen and (max-width:540px){.rsssl-main{width:100%}.rsssl-container{flex-direction:column}.rsssl-sidebar{display:grid;text-align:-webkit-center;width:70%}.rsssl-sidebar-um-text-content{width:45%}.rsssl-sidebar-single-content-container-pro{padding-bottom:10px}.rsssl-sidebar-single-content-container{padding-bottom:10px}}.rsssl-sidebar h4{font-size:14px;font-style:italic}.rsssl-wrapper{padding:30px}.rsssl-sidebar-list{font-size:.9em}#rsssl-premium-button-pro{display:inline-table;width:40%;text-align:center;float:right;font-size:inherit;height:25px;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;background-color:#7bd561;color:white;margin-right:5px}.rsssl-sidebar-content{float:left;padding-bottom:10px}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}.rsssl-container{display:flex}#rsssl-premium-button{display:inline-table;width:40%;text-align:center;float:right;font-size:inherit;height:25px;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;background-color:#017faf;color:white;margin-right:5px}.rsssl-more-info-button{clear:both}#TB_ajaxContent{text-align:center !important}#TB_window{height:370px !important}.rsssl-button-deactivate-keep-ssl{margin-right:15px}.rsssl-scan-button{float:left;margin-top:17px;margin-right:5px}.rsssl-switch{position:relative;display:inline-block;width:40px;height:21px}.rsssl-switch input{display:none}.rsssl-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.rsssl-slider:before{position:absolute;content:"";height:15px;width:15px;left:4px;bottom:3px;background-color:white;-webkit-transition:.4s;transition:.4s}.rsssl-slider.rsssl-round{border-radius:20px}.rsssl-slider.rsssl-round:before{border-radius:50%}input:checked+.rsssl-slider{background-color:#2daae1}input:checked+.rsssl-slider:before{-webkit-transform:translateX(17px);-ms-transform:translateX(17px);transform:translateX(17px)}input:disabled+.rsssl-slider{background-color:#b3e0f4}input:focus+.rsssl-slider{box-shadow:0 0 1px #2daae1}.debug-log{width:90%}.rsssl-dismiss-text{font-size:1em;color:#0073aa;margin-left:6px}.rsssl-dashboard-plusone{margin-left:8px}.rsssl-highlight{border-left:4px solid #46b450;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);background-image:none !important;-o-animation:fadeIt 5s ease-in-out;animation:fadeIt 5s ease-in-out}@-o-keyframes fadeIt{0{background-color:#fff}30%{background-color:#d6efd6}100%{background-color:inherit}}@keyframes fadeIt{0{background-color:#fff}30%{background-color:#d6efd6}100%{background-color:inherit}}.form-table th{padding-left:10px}.rsssl-dashboard-dismiss .close{all:initial}.rsssl-dashboard-dismiss span{font-size:1.5em;color:darkgrey;font-family:sans-serif}.rsssl-dashboard-dismiss span:hover{cursor:pointer;color:grey}
1
+ .rsssl-notice{background-color:#fff;border-left:4px solid green;padding:1px 15px}.rsssl-main{flex:1;width:80%;float:left}.rsssl-sidebar img{max-width:100%}#message.updated.notice.activate-ssl{padding-top:10px}.activate-ssl{border-left:4px solid #f8be2e}.rsssl-scan-completed{border-left:4px solid #46b450}.btn-premium{margin-left:10px !important}.btn-premium-activated{padding-top:10px;padding-bottom:10px}.activate-ssl .button{margin-bottom:20px}.really-simple-ssl-table{display:flex;flex-direction:column;max-width:1140px}.rsssl-table-td-main-content{width:100%}.really-simple-ssl-table tr:first-child{border-top-left-radius:.55rem;border-top-right-radius:.55rem}.really-simple-ssl-table tr:last-child{margin-bottom:0;border-bottom-left-radius:.55rem;border-bottom-right-radius:.55rem}.really-simple-ssl-table tr{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.debug-log{background-color:#fff;padding:15px;border:1px solid black}.rsssl-icons{width:15px;height:15px}.rsssl-update-count{margin-left:4px !important;display:inline-block;vertical-align:top;box-sizing:border-box;margin:1px 0 -1px 2px;padding:0 5px;min-width:18px;height:18px;border-radius:9px;background-color:#ca4a1f;color:#fff;font-size:11px;line-height:1.6;text-align:center;z-index:26}[data-rsssl-tooltip],.rsssl-tooltip{position:relative;cursor:pointer}[data-rsssl-tooltip]:before,[data-rsssl-tooltip]:after,.rsssl-tooltip:before,.rsssl-tooltip:after{position:absolute;visibility:hidden;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);opacity:0;-webkit-transition:opacity .2s ease-in-out,visibility .2s ease-in-out,-webkit-transform .2s cubic-bezier(0.71,1.7,0.77,1.24);-moz-transition:opacity .2s ease-in-out,visibility .2s ease-in-out,-moz-transform .2s cubic-bezier(0.71,1.7,0.77,1.24);transition:opacity .2s ease-in-out,visibility .2s ease-in-out,transform .2s cubic-bezier(0.71,1.7,0.77,1.24);-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);transform:translate3d(0,0,0);pointer-events:none}[data-rsssl-tooltip]:hover:before,[data-rsssl-tooltip]:hover:after,[data-rsssl-tooltip]:focus:before,[data-rsssl-tooltip]:focus:after,.rsssl-tooltip:hover:before,.rsssl-tooltip:hover:after,.rsssl-tooltip:focus:before,.rsssl-tooltip:focus:after{visibility:visible;-ms-filter:"alpha(opacity=100)";filter:alpha(opacity=100);opacity:1}.rsssl-tooltip:before,[data-rsssl-tooltip]:before{z-index:1001;border:6px solid transparent;background:transparent;content:""}.rsssl-tooltip:after,[data-rsssl-tooltip]:after{z-index:1000;padding:8px;width:160px;background-color:#000;background-color:hsla(0,0,20%,0.9);color:#fff;content:attr(data-rsssl-tooltip);font-size:14px;line-height:1.2}[data-rsssl-tooltip]:before,[data-rsssl-tooltip]:after,.rsssl-tooltip:before,.rsssl-tooltip:after,.rsssl-tooltip-top:before,.rsssl-tooltip-top:after{bottom:100%;left:50%}[data-rsssl-tooltip]:before,.rsssl-tooltip:before,.rsssl-tooltip-top:before{margin-left:-6px;margin-bottom:-12px;border-top-color:#000;border-top-color:hsla(0,0,20%,0.9)}[data-rsssl-tooltip]:after,.rsssl-tooltip:after,.rsssl-tooltip-top:after{margin-left:-80px}[data-rsssl-tooltip]:hover:before,[data-rsssl-tooltip]:hover:after,[data-rsssl-tooltip]:focus:before,[data-rsssl-tooltip]:focus:after,.rsssl-tooltip:hover:before,.rsssl-tooltip:hover:after,.rsssl-tooltip:focus:before,.rsssl-tooltip:focus:after,.rsssl-tooltip-top:hover:before,.rsssl-tooltip-top:hover:after,.rsssl-tooltip-top:focus:before,.rsssl-tooltip-top:focus:after{-webkit-transform:translateY(-12px);-moz-transform:translateY(-12px);transform:translateY(-12px)}.rsssl-tooltip-left:before,.rsssl-tooltip-left:after{right:100%;bottom:50%;left:auto}.rsssl-tooltip-left:before{margin-left:0;margin-right:-12px;margin-bottom:0;border-top-color:transparent;border-left-color:#000;border-left-color:hsla(0,0,20%,0.9)}.rsssl-tooltip-left:hover:before,.rsssl-tooltip-left:hover:after,.rsssl-tooltip-left:focus:before,.rsssl-tooltip-left:focus:after{-webkit-transform:translateX(-12px);-moz-transform:translateX(-12px);transform:translateX(-12px)}.rsssl-tooltip-bottom:before,.rsssl-tooltip-bottom:after{top:100%;bottom:auto;left:50%}.rsssl-tooltip-bottom:before{margin-top:-12px;margin-bottom:0;border-top-color:transparent;border-bottom-color:#000;border-bottom-color:hsla(0,0,20%,0.9)}.rsssl-tooltip-bottom:hover:before,.rsssl-tooltip-bottom:hover:after,.rsssl-tooltip-bottom:focus:before,.rsssl-tooltip-bottom:focus:after{-webkit-transform:translateY(12px);-moz-transform:translateY(12px);transform:translateY(12px)}.rsssl-tooltip-right:before,.rsssl-tooltip-right:after{bottom:50%;left:100%}.rsssl-tooltip-right:before{margin-bottom:0;margin-left:-12px;border-top-color:transparent;border-right-color:#000;border-right-color:hsla(0,0,20%,0.9)}.rsssl-tooltip-right:hover:before,.rsssl-tooltip-right:hover:after,.rsssl-tooltip-right:focus:before,.rsssl-tooltip-right:focus:after{-webkit-transform:translateX(12px);-moz-transform:translateX(12px);transform:translateX(12px)}.rsssl-tooltip-left:before,.rsssl-tooltip-right:before{top:3px}.rsssl-tooltip-left:after,.rsssl-tooltip-right:after{margin-left:0;margin-bottom:-16px}.rsssl-really-simple-plugins-logo{background-color:#ececec;margin-left:-15px;margin-right:-15px}.rsssl-sidebar{width:240px;margin-top:20px;padding-left:15px;padding-right:15px;margin-right:15px;padding-bottom:15px;background-color:#ececec}.rsssl-sidebar-single-content-container{min-height:125px;padding-bottom:35px;margin-bottom:10px;background-color:#fff;width:100%;border-radius:3%}.rsssl-sidebar-single-content-container-pro{background-color:#fff;min-height:125px;padding-bottom:35px;margin-bottom:10px;width:100%;border-radius:3%}.rsssl-sidebar-title h3{font-size:.9em}.rsssl-sidebar-text-content-pro{font-weight:700;font-size:.8em;width:90%;margin:auto}.rsssl-sidebar-text-content{width:45%;padding-top:5px;padding-right:7px;font-weight:700;font-size:.8em;float:right;margin:10px auto}.rsssl-pro-image{height:30px;margin-top:6px}.rsssl-sidebar-image-pro{width:90%;margin:10px}.rsssl-sidebar-image{width:100px;float:left;padding:10px;height:100px}@media screen and (max-width:1024px) and (min-width:541px){.rsssl-main{width:100%}.rsssl-sidebar-title{text-align:center}.rsssl-container{flex-direction:column}.rsssl-sidebar{width:100%}.rsssl-really-simple-plugins-logo{width:40%}.rsssl-sidebar-single-content-container{background-color:#fff;width:40%;padding-left:25px;float:left;margin-right:25px}.rsssl-sidebar-single-content-container-pro{width:40%;padding-left:25px;margin:auto auto 25px}.rsssl-sidebar-um-text-content{width:40%}.rsssl-pro-image{display:none}}@media screen and (max-width:540px){.rsssl-main{width:100%}.rsssl-container{flex-direction:column}.rsssl-sidebar{display:grid;text-align:-webkit-center;width:70%}.rsssl-sidebar-um-text-content{width:45%}.rsssl-sidebar-single-content-container-pro{padding-bottom:10px}.rsssl-sidebar-single-content-container{padding-bottom:10px}}.rsssl-sidebar h4{font-size:14px;font-style:italic}.rsssl-wrapper{padding:30px}.rsssl-sidebar-list{font-size:.9em}#rsssl-premium-button-pro{display:inline-table;width:40%;text-align:center;float:right;font-size:inherit;height:25px;-webkit-border-radius:12px;-moz-border-radius:12px;border-radius:12px;border:0;background-color:#000;color:white;margin-right:5px}.rsssl-sidebar-content{float:left;padding-bottom:10px}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}.rsssl-container{display:flex}#rsssl-premium-button{display:inline-table;width:40%;text-align:center;float:right;font-size:inherit;height:25px;border-radius:12px;border:0;background-color:#000;color:white;margin-right:5px}.rsssl-more-info-button{border:0;border-radius:50px;clear:both;margin-top:10px}#TB_ajaxContent{text-align:center !important}#TB_window{height:370px !important}.rsssl-button-deactivate-keep-ssl{margin-right:15px}.rsssl-scan-completed .rsssl-scan-button{margin-top:17px}.rsssl-scan-button{float:left;margin-top:10px;margin-right:15px}.rsssl-switch{position:relative;display:inline-block;width:40px;height:21px}.rsssl-switch input{display:none}.rsssl-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:#ccc;-webkit-transition:.4s;transition:.4s}.rsssl-slider:before{position:absolute;content:"";height:15px;width:15px;left:4px;bottom:3px;background-color:white;-webkit-transition:.4s;transition:.4s}.rsssl-slider.rsssl-round{border-radius:20px}.rsssl-slider.rsssl-round:before{border-radius:50%}input:checked+.rsssl-slider{background-color:#2daae1}input:checked+.rsssl-slider:before{-webkit-transform:translateX(17px);-ms-transform:translateX(17px);transform:translateX(17px)}input:disabled+.rsssl-slider{background-color:#b3e0f4}input:focus+.rsssl-slider{box-shadow:0 0 1px #2daae1}.debug-log{width:90%}.rsssl-dismiss-text{font-size:1em;color:#0073aa;margin-left:6px}.rsssl-dashboard-plusone{margin-left:8px}.rsssl-highlight{border-left:4px solid #46b450;box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);background-image:none !important;-o-animation:fadeIt 5s ease-in-out;animation:fadeIt 5s ease-in-out}@-o-keyframes fadeIt{0{background-color:#fff}30%{background-color:#d6efd6}100%{background-color:inherit}}@keyframes fadeIt{0{background-color:#fff}30%{background-color:#d6efd6}100%{background-color:inherit}}.form-table th{padding-left:10px}.rsssl-dashboard-dismiss .close{all:initial}.rsssl-dashboard-dismiss span{font-size:1.5em;color:darkgrey;font-family:sans-serif}.rsssl-dashboard-dismiss span:hover{cursor:pointer;color:grey}
force-deactivate.txt CHANGED
@@ -115,13 +115,22 @@ function rl_deactivate_plugin( $plugin ) {
115
 
116
  }
117
 
 
 
 
118
  function find_wordpress_base_path() {
119
  $dir = dirname(__FILE__);
120
  do {
121
  //it is possible to check for other files here
122
- if( file_exists($dir."/wp-config.php") ) {
123
  return $dir;
124
  }
 
 
 
 
 
 
125
  } while( $dir = realpath("$dir/..") );
126
  return null;
127
  }
115
 
116
  }
117
 
118
+ /**
119
+ * Helper function to find Wordpress base path.
120
+ */
121
  function find_wordpress_base_path() {
122
  $dir = dirname(__FILE__);
123
  do {
124
  //it is possible to check for other files here
125
+ if( file_exists($dir."/wp-load.php") ) {
126
  return $dir;
127
  }
128
+ // The Bedrock wordpress structure's WP base path is not simply up the tree
129
+ // from the plugins directory; it's in the /web/wp directory.
130
+ // See https://roots.io/bedrock/docs/folder-structure/ for more info.
131
+ if (file_exists($dir."/wp")) {
132
+ return $dir."/wp";
133
+ }
134
  } while( $dir = realpath("$dir/..") );
135
  return null;
136
  }
readme.txt CHANGED
@@ -4,9 +4,9 @@ Donate link: https://www.paypal.me/reallysimplessl
4
  Tags: SSL, https, force SSL, mixed content, insecure content, secure website, website security, TLS, security, secure socket layers, HSTS
5
  Requires at least: 4.6
6
  License: GPL2
7
- Tested up to: 5.2
8
  Requires PHP: 5.4
9
- Stable tag: 3.2.6
10
 
11
  No setup required! You only need an SSL certificate, and this plugin will do the rest.
12
 
@@ -15,7 +15,7 @@ Really Simple SSL automatically detects your settings and configures your websit
15
  To keep it lightweight, the options are kept to a minimum. The entire site will move to SSL.
16
 
17
  = Three simple steps for setup: =
18
- * Get an SSL certificate (can't do that for you, sorry).
19
  * Activate this plugin
20
  * Enable SSL with one click
21
 
@@ -27,7 +27,7 @@ Any code suggestions? We're on [GitHub](https://github.com/rlankhorst/really-sim
27
  Hopefully this plugin saves you some hours of work. If you want to support the continuing development of this plugin, you might consider buying the [premium](https://www.really-simple-ssl.com/pro/), which includes
28
  some cool features.
29
  = Pro features =
30
- * The mixed content scan, which shows you what you have to do if you don't have the green lock yet
31
  * The option to enable HTTP Strict Transport Security
32
  * The option to configure your site for the HSTS preload list
33
  * Advanced security headers for additional security
@@ -39,10 +39,10 @@ some cool features.
39
  = What does the plugin actually do =
40
  * The plugin handles most issues that WordPress has with SSL, like when you're behind a reverse proxy/loadbalancer, or when no headers are passed which WordPress can use to detect SSL.
41
  * All incoming requests are redirected to https. Default with an internal WordPress redirect, but you can also enable a .htaccess redirect.
42
- * The site url and home url are changed to https.
43
- * Your insecure content is fixed by replacing all http:// urls with https://, except hyperlinks to other domains. Dynamically, so no database changes are made (except for the siteurl and homeurl).
44
 
45
- Check out other plugins developed by Really Simple Plugins as well: [Complianz](https://wordpress.org/plugins/complianz-gdpr/) and [Zip Recipes](https://wordpress.org/plugins/zip-recipes/).
46
 
47
  [contact](https://www.really-simple-ssl.com/contact/) me if you have any questions, issues, or suggestions. Really Simple SSL is developed by [Really Simple Plugins](https://www.really-simple-plugins.com).
48
 
@@ -72,7 +72,7 @@ The plugin checks your certificate before enabling, but if, for example, you mig
72
  If you can't deactivate, do not just remove the plugin folder to uninstall! Follow these [instructions](https://really-simple-ssl.com/knowledge-base/uninstall-websitebackend-not-accessible/).
73
 
74
  = Mixed content issues =
75
- Most mixed content issues are caused by urls in css or js files.
76
  For detailed instructions on how to find mixed content read this [article](https://really-simple-ssl.com/knowledge-base/how-to-track-down-mixed-content-or-insecure-content/).
77
 
78
  = Redirect loop issues =
@@ -82,6 +82,28 @@ If you are experiencing redirect loops on your site, try these [instructions](ht
82
  Yes. There is a dedicated network settings page where you can switch between network activated SSL and per page SSL. In the dedicated pro for multisite plugin, you can override all site settings for SSL on the network level, and can activate and deactivate SSL in the network menu for each site.
83
 
84
  == Changelog ==
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  = 3.2.6 =
86
  * Optimized plusone count function
87
  * Disabled Javascript redirect by default
@@ -555,6 +577,3 @@ Always back up before any upgrade. Especially .htaccess, wp-config.php and the p
555
  1. After activation, if SSL was detected, you can enable SSL.
556
  2. View your configuration on the settings page.
557
  3. Mixed content scan.
558
-
559
- == Frequently asked questions ==
560
- * Really Simple SSL maintains an extensive knowledge-base at https://www.really-simple-ssl.com.
4
  Tags: SSL, https, force SSL, mixed content, insecure content, secure website, website security, TLS, security, secure socket layers, HSTS
5
  Requires at least: 4.6
6
  License: GPL2
7
+ Tested up to: 5.4
8
  Requires PHP: 5.4
9
+ Stable tag: 3.3
10
 
11
  No setup required! You only need an SSL certificate, and this plugin will do the rest.
12
 
15
  To keep it lightweight, the options are kept to a minimum. The entire site will move to SSL.
16
 
17
  = Three simple steps for setup: =
18
+ * Get an SSL certificate (can't do that for you, sorry.) [See our recommendations for a free SSL certificate](https://really-simple-ssl.com/knowledge-base/how-to-install-a-free-ssl-certificate-on-your-wordpress-cpanel-hosting/).
19
  * Activate this plugin
20
  * Enable SSL with one click
21
 
27
  Hopefully this plugin saves you some hours of work. If you want to support the continuing development of this plugin, you might consider buying the [premium](https://www.really-simple-ssl.com/pro/), which includes
28
  some cool features.
29
  = Pro features =
30
+ * The mixed content scan, which shows you what you have to do if you don't have the secure lock yet
31
  * The option to enable HTTP Strict Transport Security
32
  * The option to configure your site for the HSTS preload list
33
  * Advanced security headers for additional security
39
  = What does the plugin actually do =
40
  * The plugin handles most issues that WordPress has with SSL, like when you're behind a reverse proxy/loadbalancer, or when no headers are passed which WordPress can use to detect SSL.
41
  * All incoming requests are redirected to https. Default with an internal WordPress redirect, but you can also enable a .htaccess redirect.
42
+ * The siteurl and homeurl are changed to https.
43
+ * Your insecure content is fixed by replacing all http:// URL's with https://, except hyperlinks to other domains. Dynamically, so no database changes are made (except for the siteurl and homeurl).
44
 
45
+ Check out other plugins developed by Really Simple Plugins as well: [Complianz](https://wordpress.org/plugins/complianz-gdpr/), [Zip Recipes](https://wordpress.org/plugins/zip-recipes/) and [WP Search Insights](https://wordpress.org/plugins/wp-search-insights/).
46
 
47
  [contact](https://www.really-simple-ssl.com/contact/) me if you have any questions, issues, or suggestions. Really Simple SSL is developed by [Really Simple Plugins](https://www.really-simple-plugins.com).
48
 
72
  If you can't deactivate, do not just remove the plugin folder to uninstall! Follow these [instructions](https://really-simple-ssl.com/knowledge-base/uninstall-websitebackend-not-accessible/).
73
 
74
  = Mixed content issues =
75
+ Most mixed content issues are caused by URL's in css or js files.
76
  For detailed instructions on how to find mixed content read this [article](https://really-simple-ssl.com/knowledge-base/how-to-track-down-mixed-content-or-insecure-content/).
77
 
78
  = Redirect loop issues =
82
  Yes. There is a dedicated network settings page where you can switch between network activated SSL and per page SSL. In the dedicated pro for multisite plugin, you can override all site settings for SSL on the network level, and can activate and deactivate SSL in the network menu for each site.
83
 
84
  == Changelog ==
85
+ = 3.3 =
86
+ * Updated SSL activated notice
87
+ * Updated readme
88
+
89
+ = 3.2.9 =
90
+ * Fixed a bug where the redirect to settings page would abort SSL activation, not writing the wp-config fix on new installs
91
+ * Fixed typo in force-deactivate notice
92
+
93
+ = 3.2.8 =
94
+ * Added redirect to settings page after activating SSL
95
+ * Improved dashboard SSL certificate check by using the is_valid() check from rsssl_certificate instead of relying on site_has_ssl
96
+ * Updated activation notice
97
+ * Updated settings page sidebar styling and links
98
+
99
+ = 3.2.7 =
100
+ * Updated switch_to_blog function in to a backwards compatible version for older WP installations
101
+ * Updated review notice
102
+ * Improved .htaccess not writeable notice for Bitnami installations to show htaccess.conf location
103
+ * Updated green lock to secure lock text
104
+ * Removed border for dashboard sidebar button
105
+ * Activate some security headers by default when pro is enabled
106
+
107
  = 3.2.6 =
108
  * Optimized plusone count function
109
  * Disabled Javascript redirect by default
577
  1. After activation, if SSL was detected, you can enable SSL.
578
  2. View your configuration on the settings page.
579
  3. Mixed content scan.
 
 
 
rlrsssl-really-simple-ssl.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Really Simple SSL
4
  * Plugin URI: https://www.really-simple-ssl.com
5
  * Description: Lightweight plugin without any setup to make your site SSL proof
6
- * Version: 3.2.6
7
  * Text Domain: really-simple-ssl
8
  * Domain Path: /languages
9
  * Author: Rogier Lankhorst, Mark Wolters
@@ -26,112 +26,113 @@ defined('ABSPATH') or die("you do not have access to this page!");
26
 
27
  class REALLY_SIMPLE_SSL
28
  {
29
- private static $instance;
30
- public $rsssl_front_end;
31
- public $rsssl_mixed_content_fixer;
32
- public $rsssl_multisite;
33
- public $rsssl_cache;
34
- public $rsssl_server;
35
- public $really_simple_ssl;
36
- public $rsssl_help;
37
- public $rsssl_certificate;
38
-
39
- private function __construct()
40
- {
41
- }
42
-
43
- public static function instance()
44
- {
45
- if (!isset(self::$instance) && !(self::$instance instanceof REALLY_SIMPLE_SSL)) {
46
- self::$instance = new REALLY_SIMPLE_SSL;
47
- self::$instance->setup_constants();
48
- self::$instance->includes();
49
- self::$instance->rsssl_front_end = new rsssl_front_end();
50
- self::$instance->rsssl_mixed_content_fixer = new rsssl_mixed_content_fixer();
51
-
52
-
53
- // Backwards compatibility for add-ons
54
- global $rsssl_front_end, $rsssl_mixed_content_fixer;
55
- $rsssl_front_end = self::$instance->rsssl_front_end;
56
- $rsssl_mixed_content_fixer = self::$instance->rsssl_mixed_content_fixer;
57
-
58
- $wpcli = defined( 'WP_CLI' ) && WP_CLI;
59
-
60
- if (is_admin() || is_multisite() || $wpcli) {
61
- if (is_multisite()) {
62
- self::$instance->rsssl_multisite = new rsssl_multisite();
63
- }
64
- self::$instance->rsssl_cache = new rsssl_cache();
65
- self::$instance->rsssl_server = new rsssl_server();
66
- self::$instance->really_simple_ssl = new rsssl_admin();
67
- self::$instance->rsssl_help = new rsssl_help();
68
- self::$instance->rsssl_certificate = new rsssl_certificate();
69
- self::$instance->rsssl_site_health = new rsssl_site_health();
70
-
71
- // Backwards compatibility for add-ons
72
- global $rsssl_cache, $rsssl_server, $really_simple_ssl, $rsssl_help;
73
- $rsssl_cache = self::$instance->rsssl_cache;
74
- $rsssl_server = self::$instance->rsssl_server;
75
- $really_simple_ssl = self::$instance->really_simple_ssl;
76
- $rsssl_help = self::$instance->rsssl_help;
77
-
78
- if ( $wpcli ) {
79
- self::$instance->rsssl_wp_cli = new rsssl_wp_cli();
80
- }
81
- }
82
-
83
- self::$instance->hooks();
84
- }
85
- return self::$instance;
86
- }
87
-
88
- private function setup_constants()
89
- {
90
- define('rsssl_url', plugin_dir_url(__FILE__));
91
- define('rsssl_path', trailingslashit(plugin_dir_path(__FILE__)));
92
- define('rsssl_plugin', plugin_basename(__FILE__));
93
- require_once(ABSPATH . 'wp-admin/includes/plugin.php');
94
- $plugin_data = get_plugin_data(__FILE__);
95
- define('rsssl_version', $plugin_data['Version']);
96
- }
97
-
98
- private function includes()
99
- {
100
- require_once(rsssl_path . 'class-front-end.php');
101
- require_once(rsssl_path . 'class-mixed-content-fixer.php');
102
-
103
- $wpcli = defined( 'WP_CLI' ) && WP_CLI;
104
-
105
- if ( $wpcli ) {
106
- require_once(rsssl_path . 'class-rsssl-wp-cli.php');
107
- }
108
-
109
- if (is_admin() || is_multisite() || $wpcli) {
110
- if (is_multisite()) {
111
- require_once(rsssl_path . 'class-multisite.php');
112
- require_once(rsssl_path . 'multisite-cron.php');
113
- }
114
- require_once(rsssl_path . 'class-admin.php');
115
- require_once(rsssl_path . 'class-cache.php');
116
- require_once(rsssl_path . 'class-server.php');
117
- require_once(rsssl_path . 'class-help.php');
118
- require_once(rsssl_path . 'class-certificate.php');
119
- require_once(rsssl_path . 'class-site-health.php');
120
- }
121
- }
122
-
123
- private function hooks()
124
- {
125
- add_action('wp_loaded', array(self::$instance->rsssl_front_end, 'force_ssl'), 20);
126
- if (is_admin() || is_multisite()) {
127
- add_action('plugins_loaded', array(self::$instance->really_simple_ssl, 'init'), 10);
128
- }
129
- }
 
130
  }
131
 
132
  function RSSSL()
133
  {
134
- return REALLY_SIMPLE_SSL::instance();
135
  }
136
 
137
  add_action('plugins_loaded', 'RSSSL', 8);
3
  * Plugin Name: Really Simple SSL
4
  * Plugin URI: https://www.really-simple-ssl.com
5
  * Description: Lightweight plugin without any setup to make your site SSL proof
6
+ * Version: 3.3
7
  * Text Domain: really-simple-ssl
8
  * Domain Path: /languages
9
  * Author: Rogier Lankhorst, Mark Wolters
26
 
27
  class REALLY_SIMPLE_SSL
28
  {
29
+ private static $instance;
30
+ public $rsssl_front_end;
31
+ public $rsssl_mixed_content_fixer;
32
+ public $rsssl_multisite;
33
+ public $rsssl_cache;
34
+ public $rsssl_server;
35
+ public $really_simple_ssl;
36
+ public $rsssl_help;
37
+ public $rsssl_certificate;
38
+
39
+ private function __construct()
40
+ {
41
+ }
42
+
43
+ public static function instance()
44
+ {
45
+ if (!isset(self::$instance) && !(self::$instance instanceof REALLY_SIMPLE_SSL)) {
46
+ self::$instance = new REALLY_SIMPLE_SSL;
47
+ self::$instance->setup_constants();
48
+ self::$instance->includes();
49
+ self::$instance->rsssl_front_end = new rsssl_front_end();
50
+ self::$instance->rsssl_mixed_content_fixer = new rsssl_mixed_content_fixer();
51
+
52
+
53
+ // Backwards compatibility for add-ons
54
+ global $rsssl_front_end, $rsssl_mixed_content_fixer;
55
+ $rsssl_front_end = self::$instance->rsssl_front_end;
56
+ $rsssl_mixed_content_fixer = self::$instance->rsssl_mixed_content_fixer;
57
+
58
+ $wpcli = defined( 'WP_CLI' ) && WP_CLI;
59
+
60
+ if (is_admin() || is_multisite() || $wpcli) {
61
+ if (is_multisite()) {
62
+ self::$instance->rsssl_multisite = new rsssl_multisite();
63
+ }
64
+ self::$instance->rsssl_cache = new rsssl_cache();
65
+ self::$instance->rsssl_server = new rsssl_server();
66
+ self::$instance->really_simple_ssl = new rsssl_admin();
67
+ self::$instance->rsssl_help = new rsssl_help();
68
+ self::$instance->rsssl_certificate = new rsssl_certificate();
69
+ self::$instance->rsssl_site_health = new rsssl_site_health();
70
+
71
+ // Backwards compatibility for add-ons
72
+ global $rsssl_cache, $rsssl_server, $really_simple_ssl, $rsssl_help;
73
+ $rsssl_cache = self::$instance->rsssl_cache;
74
+ $rsssl_server = self::$instance->rsssl_server;
75
+ $really_simple_ssl = self::$instance->really_simple_ssl;
76
+ $rsssl_help = self::$instance->rsssl_help;
77
+
78
+ if ( $wpcli ) {
79
+ self::$instance->rsssl_wp_cli = new rsssl_wp_cli();
80
+ }
81
+ }
82
+
83
+ self::$instance->hooks();
84
+ }
85
+ return self::$instance;
86
+ }
87
+
88
+ private function setup_constants()
89
+ {
90
+ define('rsssl_url', plugin_dir_url(__FILE__));
91
+ define('rsssl_path', trailingslashit(plugin_dir_path(__FILE__)));
92
+ define('rsssl_plugin', plugin_basename(__FILE__));
93
+ require_once(ABSPATH . 'wp-admin/includes/plugin.php');
94
+ $plugin_data = get_plugin_data(__FILE__);
95
+ define('rsssl_version', $plugin_data['Version']);
96
+ }
97
+
98
+ private function includes()
99
+ {
100
+ require_once(rsssl_path . 'class-front-end.php');
101
+ require_once(rsssl_path . 'class-mixed-content-fixer.php');
102
+
103
+ $wpcli = defined( 'WP_CLI' ) && WP_CLI;
104
+
105
+ if ( $wpcli ) {
106
+ require_once(rsssl_path . 'class-rsssl-wp-cli.php');
107
+ }
108
+
109
+ if (is_admin() || is_multisite() || $wpcli) {
110
+ if (is_multisite()) {
111
+ require_once(rsssl_path . 'class-multisite.php');
112
+ require_once(rsssl_path . 'multisite-cron.php');
113
+ }
114
+ require_once(rsssl_path . 'class-admin.php');
115
+ require_once(rsssl_path . 'class-cache.php');
116
+ require_once(rsssl_path . 'class-server.php');
117
+ require_once(rsssl_path . 'class-help.php');
118
+ require_once(rsssl_path . 'class-certificate.php');
119
+ require_once(rsssl_path . 'class-site-health.php');
120
+ }
121
+ }
122
+
123
+ private function hooks()
124
+ {
125
+
126
+ add_action('wp_loaded', array(self::$instance->rsssl_front_end, 'force_ssl'), 20);
127
+ if (is_admin() || is_multisite()) {
128
+ add_action('plugins_loaded', array(self::$instance->really_simple_ssl, 'init'), 10);
129
+ }
130
+ }
131
  }
132
 
133
  function RSSSL()
134
  {
135
+ return REALLY_SIMPLE_SSL::instance();
136
  }
137
 
138
  add_action('plugins_loaded', 'RSSSL', 8);
ssl-test-page.php CHANGED
@@ -35,7 +35,7 @@ if (!empty($_SERVER['HTTP_CLOUDFRONT_FORWARDED_PROTO']) && ($_SERVER['HTTP_CLOUD
35
  $ssl = TRUE;
36
  }
37
 
38
- if (!empty($_SERVER['HTTP_CF_VISITOR']) && ($_SERVER['HTTP_CF_VISITOR'] == 'https')) {
39
  echo "#CLOUDFLARE#<br>";
40
  $ssl = TRUE;
41
  }
@@ -61,7 +61,7 @@ if (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && ($_SERVER['HTTP_X_FORWARDED_SSL'
61
  }
62
 
63
  if ($ssl) {
64
- echo "<br>#SUCCESFULLY DETECTED SSL#";
65
  } else {
66
  echo "<br>#NO KNOWN SSL CONFIGURATION DETECTED#";
67
  }
35
  $ssl = TRUE;
36
  }
37
 
38
+ if (!empty($_SERVER['HTTP_CF_VISITOR']) && (strpos($_SERVER["HTTP_CF_VISITOR"], "https") !== false)) {
39
  echo "#CLOUDFLARE#<br>";
40
  $ssl = TRUE;
41
  }
61
  }
62
 
63
  if ($ssl) {
64
+ echo "<br>#SUCCESSFULLY DETECTED SSL#";
65
  } else {
66
  echo "<br>#NO KNOWN SSL CONFIGURATION DETECTED#";
67
  }