Really Simple SSL - Version 3.2.4

Version Description

  • Improved and added dashboard notices
  • Improved debug logging
  • Added option to dismiss all Really Simple SSL notices
  • Fixed a bug where other plugins buttons had their style reset
Download this release

Release Info

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

Code changes from version 3.2.3 to 3.2.4

Files changed (5) hide show
  1. class-admin.php +371 -112
  2. css/main.css +0 -6
  3. css/main.min.css +1 -1
  4. readme.txt +11 -4
  5. rlrsssl-really-simple-ssl.php +1 -1
class-admin.php CHANGED
@@ -49,7 +49,7 @@ class rsssl_admin extends rsssl_front_end
49
  function __construct()
50
  {
51
 
52
- if (isset(self::$_this))
53
  wp_die(sprintf(__('%s is a singleton class and you cannot create a second instance.', 'really-simple-ssl'), get_class($this)));
54
 
55
  self::$_this = $this;
@@ -663,6 +663,8 @@ class rsssl_admin extends rsssl_front_end
663
  /**
664
  * Log events during plugin execution
665
  *
 
 
666
  * @since 2.1
667
  *
668
  * @access public
@@ -672,8 +674,8 @@ class rsssl_admin extends rsssl_front_end
672
  public function trace_log($msg)
673
  {
674
  if (!$this->debug) return;
 
675
  $this->debug_log = $this->debug_log . "<br>" . $msg;
676
- $this->debug_log = strstr($this->debug_log, '** Detecting configuration **');
677
  error_log($msg);
678
  }
679
 
@@ -694,7 +696,7 @@ class rsssl_admin extends rsssl_front_end
694
  if (defined('RSSSL_SAFE_MODE') && RSSSL_SAFE_MODE) $safe_mode = RSSSL_SAFE_MODE;
695
 
696
  if (!current_user_can($this->capability)) return;
697
- $this->trace_log("** Configuring SSL **");
698
  if ($this->site_has_ssl) {
699
  //when one of the used server variables was found, test if the redirect works
700
 
@@ -1281,12 +1283,9 @@ class rsssl_admin extends rsssl_front_end
1281
 
1282
  public function detect_configuration()
1283
  {
1284
- $this->trace_log("** Detecting configuration **");
1285
- $this->trace_log("plugin version: " . rsssl_version);
1286
-
1287
  //if current page is on SSL, we can assume SSL is available, even when an errormsg was returned
1288
  if ($this->is_ssl_extended()) {
1289
- $this->trace_log("Already on SSL, start detecting configuration");
1290
  $this->site_has_ssl = TRUE;
1291
  } else {
1292
  //if certificate is valid
@@ -1344,7 +1343,6 @@ class rsssl_admin extends rsssl_front_end
1344
  }
1345
  }
1346
 
1347
- $this->trace_log("SSL type: " . $this->ssl_type);
1348
  }
1349
  $this->check_for_siteurl_in_wpconfig();
1350
 
@@ -1561,20 +1559,35 @@ class rsssl_admin extends rsssl_front_end
1561
  return $version;
1562
  }
1563
  }
1564
-
1565
- function htaccess_redirect_allowed()
 
 
 
 
 
 
 
 
 
1566
  {
1567
  if (is_multisite() && RSSSL()->rsssl_multisite->is_per_site_activated_multisite_subfolder_install()) {
1568
  return false;
1569
- } else {
1570
  return true;
 
 
1571
  }
1572
  }
1573
 
1574
-
1575
- /*
1576
- Checks if the htaccess contains redirect rules, either actual redirect or a rsssl marker.
1577
- */
 
 
 
 
1578
 
1579
  public function htaccess_contains_redirect_rules()
1580
  {
@@ -1619,11 +1632,13 @@ class rsssl_admin extends rsssl_front_end
1619
  }
1620
  }
1621
 
1622
- /*
1623
- * Checks if a 301 redirect is set
1624
- * this is the case if either the wp_redirect is set, or the htaccess redirect is set.
1625
  *
1626
- */
 
 
 
1627
 
1628
  public function has_301_redirect()
1629
  {
@@ -1728,6 +1743,14 @@ class rsssl_admin extends rsssl_front_end
1728
  }
1729
  }
1730
 
 
 
 
 
 
 
 
 
1731
 
1732
  public function update_htaccess_after_settings_save($oldvalue = false, $newvalue = false, $option = false)
1733
  {
@@ -1787,32 +1810,56 @@ class rsssl_admin extends rsssl_front_end
1787
  //check if the mixed content fixer is active
1788
  $response = wp_remote_get(home_url());
1789
 
1790
- if (is_array($response)) {
1791
- $status = wp_remote_retrieve_response_code($response);
1792
- $web_source = wp_remote_retrieve_body($response);
 
 
 
 
 
 
 
 
 
 
1793
  }
1794
 
1795
- if ($status != 200) {
1796
- $mixed_content_fixer_detected = 'no-response';
1797
- } elseif (strpos($web_source, "data-rsssl=") === false) {
1798
- $mixed_content_fixer_detected = 'not-found';
1799
- } else {
1800
- $mixed_content_fixer_detected = 'found';
 
1801
  }
1802
 
1803
  set_transient('rsssl_mixed_content_fixer_detected', $mixed_content_fixer_detected, 600);
1804
  }
1805
 
1806
  if ($mixed_content_fixer_detected === 'no-response'){
1807
- $this->trace_log("Could not connect to website");
 
1808
  $this->mixed_content_fixer_detected = FALSE;
1809
  }
1810
  if ($mixed_content_fixer_detected === 'not-found'){
1811
- $this->trace_log("Mixed content fixer marker not found in the websource");
 
1812
  $this->mixed_content_fixer_detected = FALSE;
1813
  }
 
 
 
 
 
 
 
 
 
 
1814
  if ($mixed_content_fixer_detected === 'found'){
1815
- $this->trace_log("Mixed content fixer was successfully detected on the front end.");
 
1816
  $this->mixed_content_fixer_detected = true;
1817
  }
1818
 
@@ -2061,7 +2108,9 @@ class rsssl_admin extends rsssl_front_end
2061
  show a notice when the .htaccess file does not contain redirect rules
2062
  */
2063
 
2064
- if (!$this->wp_redirect && $this->ssl_enabled && !$this->htaccess_warning_shown && !$this->htaccess_contains_redirect_rules()) {
 
 
2065
 
2066
  add_action('admin_print_footer_scripts', array($this, 'insert_dismiss_htaccess'));
2067
  ?>
@@ -2093,7 +2142,7 @@ class rsssl_admin extends rsssl_front_end
2093
  SSL success message
2094
  */
2095
 
2096
- if ($this->ssl_enabled && $this->site_has_ssl && !$this->ssl_success_message_shown) {
2097
  if (!current_user_can("activate_plugins")) return;
2098
 
2099
  add_action('admin_print_footer_scripts', array($this, 'insert_dismiss_success'));
@@ -2233,6 +2282,11 @@ class rsssl_admin extends rsssl_front_end
2233
  <?php
2234
  }
2235
 
 
 
 
 
 
2236
  public function insert_dismiss_settings_script()
2237
  {
2238
  $ajax_nonce = wp_create_nonce("really-simple-ssl");
@@ -2501,17 +2555,23 @@ class rsssl_admin extends rsssl_front_end
2501
 
2502
  $enable = __("Enable", "really-simple-ssl");
2503
  $dismiss = __("dismiss", "really-simple-ssl");
2504
- $enable_link = add_query_arg(array("page"=>"rlrsssl_really_simple_ssl", "tab"=>"settings", "highlight"=>"1"),admin_url("options-general.php"));
 
 
 
 
 
 
2505
 
2506
  $notices = array(
2507
  'ssl_enabled' => array(
2508
  'callback' => 'rsssl_ssl_enabled',
2509
  'output' => array(
2510
- '1' => array(
2511
  'msg' =>__('SSL is enabled on your site.', 'really-simple-ssl'),
2512
  'icon' => 'success'
2513
  ),
2514
- '0' => array(
2515
  'msg' => __('SSL is not enabled yet', 'really-simple-ssl'),
2516
  'icon' => 'warning'
2517
  ),
@@ -2540,6 +2600,16 @@ class rsssl_admin extends rsssl_front_end
2540
  'icon' => 'warning',
2541
  'dismissible' => true
2542
  ),
 
 
 
 
 
 
 
 
 
 
2543
  ),
2544
  ),
2545
 
@@ -2561,35 +2631,45 @@ class rsssl_admin extends rsssl_front_end
2561
  ),
2562
  ),
2563
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2564
 
2565
  'check_redirect' => array(
2566
- 'callback' => 'rsssl_check_redirect',
2567
- 'condition' => array('rsssl_htaccess_redirect_allowed'),
2568
  'output' => array(
2569
  'htaccess-redirect-set' => array(
2570
  'msg' =>__('301 redirect to https set: .htaccess redirect.', 'really-simple-ssl'),
2571
- 'icon' => 'success',
2572
- 'dismissible' => true
2573
- ),
2574
- '301-wp-redirect' => array(
2575
- 'msg' => __('301 redirect to https set: WordPress redirect.', 'really-simple-ssl'),
2576
- 'icon' => 'success',
2577
- 'dismissible' => true
2578
  ),
 
 
2579
  'wp-redirect-to-htaccess' => array(
2580
  'msg' => __('WordPress 301 redirect enabled. We recommend to enable the 301 .htaccess redirect option on your specific setup.', 'really-simple-ssl') . " "
2581
- . "<span><a href='$enable_link'>$enable</a></span>" . " "
2582
  . __("or", "really-simple-ssl")
2583
  . "<span class='rsssl-dashboard-dismiss' data-dismiss_type='check_redirect'><a href='#' class='rsssl-dismiss-text rsssl-close-warning'>$dismiss</a></span>"
2584
  . "<span class='rsssl-dashboard-plusone update-plugins rsssl-update-count'><span class='update-count'>1</span></span>",
2585
  'icon' => 'warning',
2586
- 'plusone' => true,
2587
  'dismissible' => true
2588
  ),
2589
- 'no-redirect-enabled' => array(
2590
  'msg' => __('Enable a .htaccess redirect or WordPress redirect in the settings to create a 301 redirect.', 'really-simple-ssl'),
2591
  'icon' => 'warning',
2592
- 'dismissible' => true
2593
  ),
2594
  'htaccess-not-writeable' => array(
2595
  'msg' => __('.htaccess is not writable. Set 301 WordPress redirect, or set the .htaccess manually if you want to redirect in .htaccess.', 'really-simple-ssl'),
@@ -2597,7 +2677,7 @@ class rsssl_admin extends rsssl_front_end
2597
  'dismissible' => true
2598
  ),
2599
  'htaccess-cannot-be-set' => array(
2600
- 'msg' => __('Https redirect cannot be set in the .htaccess. Set the .htaccess redirect manually or enable WordPress redirect in the settings.', 'really-simple-ssl'),
2601
  'icon' => 'warning',
2602
  'dismissible' => true
2603
  ),
@@ -2609,8 +2689,22 @@ class rsssl_admin extends rsssl_front_end
2609
  ),
2610
  ),
2611
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2612
 
2613
  'hsts_enabled' => array(
 
2614
  'callback' => 'rsssl_hsts_enabled',
2615
  'output' => array(
2616
  'contains-hsts' => array(
@@ -2624,7 +2718,6 @@ class rsssl_admin extends rsssl_front_end
2624
  ),
2625
  ),
2626
 
2627
-
2628
  'secure_cookies_set' => array(
2629
  'callback' => 'rsssl_secure_cookies_set',
2630
  'output' => array(
@@ -2659,6 +2752,30 @@ class rsssl_admin extends rsssl_front_end
2659
  }
2660
 
2661
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2662
  private function notice_row($id, $notice){
2663
  if (!current_user_can('manage_options')) return;
2664
 
@@ -2694,14 +2811,29 @@ class rsssl_admin extends rsssl_front_end
2694
  <td><?php echo $icon?></td><td class="rsssl-table-td-main-content"><?php echo $msg?></td>
2695
  <td class="rsssl-dashboard-dismiss" data-dismiss_type="<?php echo $id?>"><?php echo $dismiss?></td>
2696
  </tr>
2697
-
2698
  <?php
2699
  }
2700
 
 
 
 
 
 
 
 
 
2701
  public function reset_plusone_cache(){
2702
  delete_transient('rsssl_plusone_count');
2703
  }
2704
 
 
 
 
 
 
 
 
 
2705
  public function count_plusones(){
2706
  if (!current_user_can('manage_options')) return 0;
2707
  $count = get_transient('rsssl_plusone_count');
@@ -2830,24 +2962,57 @@ class rsssl_admin extends rsssl_front_end
2830
  <?php
2831
  if ($this->debug) {
2832
  echo "<h2>" . __("Log for debugging purposes", "really-simple-ssl") . "</h2>";
2833
- echo "<p>" . __("Send me a copy of these lines if you have any issues. The log will be erased when debug is set to false", "really-simple-ssl") . "</p>";
2834
  echo "<div class='debug-log'>";
2835
  if (defined('RSSSL_SAFE_MODE') && RSSSL_SAFE_MODE) echo "SAFE MODE<br>";
2836
- echo "Options:<br>";
2837
- if ($this->htaccess_redirect) echo "* htaccess redirect<br>";
2838
- if ($this->wp_redirect) echo "* WordPress redirect<br>";
2839
- if ($this->autoreplace_insecure_links) echo "* Mixed content fixer<br>";
2840
 
2841
- echo "SERVER: " . RSSSL()->rsssl_server->get_server() . "<br>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2842
  if (is_multisite()) {
2843
  echo "MULTISITE<br>";
2844
  echo (!RSSSL()->rsssl_multisite->ssl_enabled_networkwide) ? "SSL is being activated per site<br>" : "SSL is activated network wide<br>";
2845
  }
2846
 
2847
- echo ($this->ssl_enabled) ? "SSL is enabled for this site<br>" : "SSL is not yet enabled for this site<br>";
2848
  echo $this->debug_log;
2849
- echo "</div>";
2850
- //$this->debug_log.="<br><b>-----------------------</b>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2851
  $this->debug_log = "";
2852
  $this->save_options();
2853
  } else {
@@ -2948,27 +3113,27 @@ class rsssl_admin extends rsssl_front_end
2948
  }
2949
  }
2950
 
2951
- if (defined("EDD_SL_PLUGIN_DIR") && (get_locale() === 'nl_NL')) {
2952
- $this->get_banner_html(array(
2953
- 'img' => 'edd-moneybird.jpg',
2954
- 'title' => 'EDD Moneybird',
2955
- 'description' => __("Export your Easy Digital Downloads sales directly to Moneybird.", "really-simple-ssl"),
2956
- 'url' => 'https://really-simple-plugins.com/download/edd-moneybird/',
2957
- )
2958
- );
2959
 
2960
- }
2961
 
2962
- if (defined('WC_PLUGIN_FILE') && (get_locale() === 'nl_NL')) {
2963
- $this->get_banner_html(array(
2964
- 'img' => 'woocommerce-moneybird.jpg',
2965
- 'title' => 'WooCommerce Moneybird',
2966
- 'description' => __("Export your WooCommerce sales directly to Moneybird.", "really-simple-ssl"),
2967
- 'url' => 'https://really-simple-plugins.com/download/woocommerce-moneybird/',
2968
- )
2969
- );
2970
 
2971
- }
2972
  ?>
2973
  </div>
2974
  <?php }
@@ -3014,7 +3179,6 @@ class rsssl_admin extends rsssl_front_end
3014
  return '<button type="button" class="close">
3015
  <span class="rsssl-close-warning">X</span>
3016
  </button>';
3017
-
3018
  }
3019
 
3020
  /**
@@ -3028,7 +3192,6 @@ class rsssl_admin extends rsssl_front_end
3028
 
3029
  private function get_banner_html($args)
3030
  {
3031
-
3032
  $default = array(
3033
  'pro' => false,
3034
  );
@@ -3119,7 +3282,6 @@ class rsssl_admin extends rsssl_front_end
3119
 
3120
  add_settings_field('id_deactivate_keep_ssl', __("Deactivate plugin and keep SSL", "really-simple-ssl"), array($this, 'get_option_deactivate_keep_ssl'), 'rlrsssl', 'rlrsssl_settings');
3121
 
3122
-
3123
  }
3124
 
3125
  /**
@@ -3317,7 +3479,6 @@ class rsssl_admin extends rsssl_front_end
3317
 
3318
  public function get_option_htaccess_redirect()
3319
  {
3320
-
3321
  $options = get_option('rlrsssl_options');
3322
 
3323
  $htaccess_redirect = $this->htaccess_redirect;
@@ -3334,7 +3495,7 @@ class rsssl_admin extends rsssl_front_end
3334
  }
3335
 
3336
  ?>
3337
- <label class="rsssl-switch" id="rsssl-maybe-highlight">
3338
  <input id="rlrsssl_options" name="rlrsssl_options[htaccess_redirect]" size="40" value="1"
3339
  type="checkbox" <?php checked(1, $this->htaccess_redirect, true) ?> />
3340
  <span class="rsssl-slider rsssl-round"></span>
@@ -3426,6 +3587,16 @@ class rsssl_admin extends rsssl_front_end
3426
  RSSSL()->rsssl_help->get_help_tip(__("If this option is set to true, the mixed content fixer will fire on the init hook instead of the template_redirect hook. Only use this option when you experience problems with the mixed content fixer.", "really-simple-ssl"));
3427
  }
3428
 
 
 
 
 
 
 
 
 
 
 
3429
  public function get_option_dismiss_all_notices()
3430
  {
3431
  ?>
@@ -3490,6 +3661,12 @@ class rsssl_admin extends rsssl_front_end
3490
 
3491
  }
3492
 
 
 
 
 
 
 
3493
  public function get_option_autoreplace_insecure_links()
3494
  {
3495
  //$options = get_option('rlrsssl_options');
@@ -3546,7 +3723,7 @@ class rsssl_admin extends rsssl_front_end
3546
  }
3547
  if (!defined("rsssl_pro_version")) {
3548
  if (!class_exists('RSSSL_PRO')) {
3549
- $premium_link = '<a target="_blank" href="https://really-simple-ssl.com/premium-support">' . __('Premium Support', 'really-simple-ssl') . '</a>';
3550
  array_unshift($links, $premium_link);
3551
  }
3552
  }
@@ -3639,10 +3816,12 @@ class rsssl_admin extends rsssl_front_end
3639
  return false;
3640
  }
3641
 
3642
- /*
 
 
3643
  * Retrieve the contents of the test page
3644
- */
3645
-
3646
 
3647
  protected function get_test_page_contents()
3648
  {
@@ -3664,10 +3843,8 @@ class rsssl_admin extends rsssl_front_end
3664
  $this->trace_log("test page url, enter in browser to check manually: " . $testpage_url);
3665
 
3666
  if (!is_wp_error($response) && (strpos($filecontents, "#SSL TEST PAGE#") !== false)) {
3667
-
3668
  $this->trace_log("SSL test page loaded successfully");
3669
  } else {
3670
-
3671
  $error = "";
3672
  if (is_wp_error($response)) $error = $response->get_error_message();
3673
  $this->trace_log("Could not open testpage " . $error);
@@ -3700,7 +3877,6 @@ class rsssl_admin extends rsssl_front_end
3700
  *
3701
  * Determine the htaccess file. This can be either the regular .htaccess file, or an htaccess.conf file on bitnami installations.
3702
  *
3703
- *
3704
  */
3705
 
3706
  public function htaccess_file() {
@@ -3713,21 +3889,48 @@ class rsssl_admin extends rsssl_front_end
3713
  return $htaccess_file;
3714
  }
3715
 
 
 
 
 
 
 
 
 
 
 
3716
  public function highlight_js(){
3717
  ?>
3718
  <script>
3719
  jQuery(document).ready(function ($) {
3720
  'use strict';
3721
- $(function() {
3722
- if (document.location.href.indexOf('&highlight') > -1 ) {
3723
- $('#rsssl-maybe-highlight').closest('tr').addClass('rsssl-highlight');
 
3724
  }
 
 
 
 
 
 
3725
  });
3726
  });
3727
  </script>
3728
  <?php
3729
  }
3730
 
 
 
 
 
 
 
 
 
 
 
3731
  public function maybe_remove_highlight_from_url() {
3732
 
3733
  $http_referrer = isset($_POST['_wp_http_referer']) ? $_POST['_wp_http_referer'] : false;
@@ -3761,38 +3964,43 @@ function rsssl_autoreplace_insecure_links(){
3761
  }
3762
 
3763
  function rsssl_ssl_enabled(){
3764
- return RSSSL()->really_simple_ssl->ssl_enabled;
 
 
 
 
3765
  }
3766
 
3767
  function rsssl_ssl_detected(){
3768
- if (!RSSSL()->really_simple_ssl->wpconfig_ok()) {
3769
- return 'fail';
3770
- } elseif (!RSSSL()->really_simple_ssl->site_has_ssl) {
3771
- return 'no-ssl-detected';
3772
- } else {
3773
- return 'ssl-detected';
3774
- }
 
 
3775
 
3776
  return false;
3777
  }
3778
 
3779
  function rsssl_check_redirect(){
 
 
 
3780
  if (RSSSL()->really_simple_ssl->has_301_redirect() && RSSSL()->rsssl_server->uses_htaccess() && RSSSL()->really_simple_ssl->htaccess_contains_redirect_rules()) {
3781
  return 'htaccess-redirect-set';
3782
  }
3783
  if (RSSSL()->really_simple_ssl->has_301_redirect() && RSSSL()->really_simple_ssl->wp_redirect && RSSSL()->rsssl_server->uses_htaccess() && !RSSSL()->really_simple_ssl->htaccess_redirect) {
3784
  return 'wp-redirect-to-htaccess';
3785
  }
3786
- if (RSSSL()->really_simple_ssl->has_301_redirect() && RSSSL()->really_simple_ssl->wp_redirect) {
3787
- return '301-wp-redirect';
3788
- } elseif (RSSSL()->rsssl_server->uses_htaccess() && (!is_multisite() || !RSSSL()->rsssl_multisite->is_per_site_activated_multisite_subfolder_install())) {
3789
- if (is_writable(RSSSL()->really_simple_ssl->htaccess_file())) {
3790
- return 'no-redirect-enabled';
3791
- } elseif (!is_writable(RSSSL()->really_simple_ssl->htaccess_file())) {
3792
- return 'htaccess-not-writeable';
3793
- } else {
3794
- return 'htaccess-cannot-be-set';
3795
- }
3796
  } else {
3797
  return 'default';
3798
  }
@@ -3825,3 +4033,54 @@ function rsssl_htaccess_redirect_allowed()
3825
  {
3826
  return RSSSL()->really_simple_ssl->htaccess_redirect_allowed();
3827
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
  function __construct()
50
  {
51
 
52
+ if (isset(self::$_this))
53
  wp_die(sprintf(__('%s is a singleton class and you cannot create a second instance.', 'really-simple-ssl'), get_class($this)));
54
 
55
  self::$_this = $this;
663
  /**
664
  * Log events during plugin execution
665
  *
666
+ * @param string $msg
667
+ *
668
  * @since 2.1
669
  *
670
  * @access public
674
  public function trace_log($msg)
675
  {
676
  if (!$this->debug) return;
677
+ if (strpos($this->debug_log, $msg)) return;
678
  $this->debug_log = $this->debug_log . "<br>" . $msg;
 
679
  error_log($msg);
680
  }
681
 
696
  if (defined('RSSSL_SAFE_MODE') && RSSSL_SAFE_MODE) $safe_mode = RSSSL_SAFE_MODE;
697
 
698
  if (!current_user_can($this->capability)) return;
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
 
1283
 
1284
  public function detect_configuration()
1285
  {
1286
+ $this->trace_log("<b>" . "Detecting configuration" . "</b>");
 
 
1287
  //if current page is on SSL, we can assume SSL is available, even when an errormsg was returned
1288
  if ($this->is_ssl_extended()) {
 
1289
  $this->site_has_ssl = TRUE;
1290
  } else {
1291
  //if certificate is valid
1343
  }
1344
  }
1345
 
 
1346
  }
1347
  $this->check_for_siteurl_in_wpconfig();
1348
 
1559
  return $version;
1560
  }
1561
  }
1562
+
1563
+ /**
1564
+ * @return bool
1565
+ *
1566
+ * Check if the .htaccess redirect is allowed on this setup
1567
+ *
1568
+ * @since 2.0
1569
+ *
1570
+ */
1571
+
1572
+ public function htaccess_redirect_allowed()
1573
  {
1574
  if (is_multisite() && RSSSL()->rsssl_multisite->is_per_site_activated_multisite_subfolder_install()) {
1575
  return false;
1576
+ } if (RSSSL()->rsssl_server->uses_htaccess()) {
1577
  return true;
1578
+ } else {
1579
+ return false;
1580
  }
1581
  }
1582
 
1583
+ /**
1584
+ * @return bool
1585
+ *
1586
+ * Checks if the htaccess contains redirect rules, either actual redirect or a rsssl marker.
1587
+ *
1588
+ * @since 2.0
1589
+ *
1590
+ */
1591
 
1592
  public function htaccess_contains_redirect_rules()
1593
  {
1632
  }
1633
  }
1634
 
1635
+ /**
1636
+ * @return bool
 
1637
  *
1638
+ * Checks if a 301 redirect is set
1639
+ * this is the case if either the wp_redirect is set, or the htaccess redirect is set.
1640
+ *
1641
+ */
1642
 
1643
  public function has_301_redirect()
1644
  {
1743
  }
1744
  }
1745
 
1746
+ /**
1747
+ * @param bool $oldvalue
1748
+ * @param bool $newvalue
1749
+ * @param bool $option
1750
+ *
1751
+ * Update the .htaccess file after saving settings
1752
+ *
1753
+ */
1754
 
1755
  public function update_htaccess_after_settings_save($oldvalue = false, $newvalue = false, $option = false)
1756
  {
1810
  //check if the mixed content fixer is active
1811
  $response = wp_remote_get(home_url());
1812
 
1813
+ if (!is_wp_error($response)) {
1814
+ if ( is_array( $response ) ) {
1815
+ $status = wp_remote_retrieve_response_code( $response );
1816
+ $web_source = wp_remote_retrieve_body( $response );
1817
+ }
1818
+
1819
+ if ( $status != 200 ) {
1820
+ $mixed_content_fixer_detected = 'no-response';
1821
+ } elseif ( strpos( $web_source, "data-rsssl=" ) === false ) {
1822
+ $mixed_content_fixer_detected = 'not-found';
1823
+ } else {
1824
+ $mixed_content_fixer_detected = 'found';
1825
+ }
1826
  }
1827
 
1828
+ if (is_wp_error($response)) {
1829
+ $mixed_content_fixer_detected = 'error';
1830
+ $error = $response->get_error_message();
1831
+ set_transient('rsssl_curl_error' , $error, 600);
1832
+ if (!empty($error) && (strpos($error, "cURL error") !== false) ) {
1833
+ $mixed_content_fixer_detected = 'curl-error';
1834
+ }
1835
  }
1836
 
1837
  set_transient('rsssl_mixed_content_fixer_detected', $mixed_content_fixer_detected, 600);
1838
  }
1839
 
1840
  if ($mixed_content_fixer_detected === 'no-response'){
1841
+ //Could not connect to website
1842
+ $this->trace_log("Could not connect to webpage to detect mixed content fixer");
1843
  $this->mixed_content_fixer_detected = FALSE;
1844
  }
1845
  if ($mixed_content_fixer_detected === 'not-found'){
1846
+ //Mixed content fixer marker not found in the websource
1847
+ $this->trace_log("Mixed content marker not found in websource");
1848
  $this->mixed_content_fixer_detected = FALSE;
1849
  }
1850
+ if ($mixed_content_fixer_detected === 'error'){
1851
+ $this->trace_log("Mixed content marker not found: unknown error");
1852
+ //Error encountered while retrieving the webpage. Fallback since most errors should be cURL errors
1853
+ $this->mixed_content_fixer_detected = FALSE;
1854
+ }
1855
+ if ($mixed_content_fixer_detected === 'curl-error'){
1856
+ //Site has has a cURL error
1857
+ $this->trace_log("Mixed content fixer could not be detected: cURL error");
1858
+ $this->mixed_content_fixer_detected = FALSE;
1859
+ }
1860
  if ($mixed_content_fixer_detected === 'found'){
1861
+ $this->trace_log("Mixed content fixer succesfully detected");
1862
+ //Mixed content fixer was successfully detected on the front end
1863
  $this->mixed_content_fixer_detected = true;
1864
  }
1865
 
2108
  show a notice when the .htaccess file does not contain redirect rules
2109
  */
2110
 
2111
+ $options = get_option('rlrsssl_options');
2112
+
2113
+ if (!$this->wp_redirect && $this->ssl_enabled && !$this->htaccess_warning_shown && !$this->htaccess_contains_redirect_rules() && $options['dismiss_all_notices'] !== true) {
2114
 
2115
  add_action('admin_print_footer_scripts', array($this, 'insert_dismiss_htaccess'));
2116
  ?>
2142
  SSL success message
2143
  */
2144
 
2145
+ if ($this->ssl_enabled && $this->site_has_ssl && !$this->ssl_success_message_shown && $options['dismiss_all_notices'] !== true) {
2146
  if (!current_user_can("activate_plugins")) return;
2147
 
2148
  add_action('admin_print_footer_scripts', array($this, 'insert_dismiss_success'));
2282
  <?php
2283
  }
2284
 
2285
+ /**
2286
+ *
2287
+ * Insert the script to dismiss dashboard notices
2288
+ */
2289
+
2290
  public function insert_dismiss_settings_script()
2291
  {
2292
  $ajax_nonce = wp_create_nonce("really-simple-ssl");
2555
 
2556
  $enable = __("Enable", "really-simple-ssl");
2557
  $dismiss = __("dismiss", "really-simple-ssl");
2558
+ $curl_error = get_transient('rsssl_curl_error');
2559
+
2560
+ if (RSSSL()->rsssl_server->uses_htaccess()) {
2561
+ $redirect_plusone = true;
2562
+ } else {
2563
+ $redirect_plusone = false;
2564
+ }
2565
 
2566
  $notices = array(
2567
  'ssl_enabled' => array(
2568
  'callback' => 'rsssl_ssl_enabled',
2569
  'output' => array(
2570
+ 'ssl-enabled' => array(
2571
  'msg' =>__('SSL is enabled on your site.', 'really-simple-ssl'),
2572
  'icon' => 'success'
2573
  ),
2574
+ 'ssl-not-enabled' => array(
2575
  'msg' => __('SSL is not enabled yet', 'really-simple-ssl'),
2576
  'icon' => 'warning'
2577
  ),
2600
  'icon' => 'warning',
2601
  'dismissible' => true
2602
  ),
2603
+ 'error' => array(
2604
+ 'msg' =>__('Error occured when retrieving the webpage.', 'really-simple-ssl'),
2605
+ 'icon' => 'warning',
2606
+ 'dismissible' => true
2607
+ ),
2608
+ 'curl-error' => array(
2609
+ 'msg' =>sprintf(__("The mixed content fixer could not be detected due to a cURL error: %s. cURL errors are often caused by an outdated version of PHP or cURL and don't affect the front-end of your site. Contact your hosting provider for a fix. %sMore information about this warning%s", 'really-simple-ssl'), "<b>" . $curl_error . "</b>", '<a target="_blank" href="https://www.really-simple-ssl.com/knowledge-base/curl-errors/">', '</a>' ),
2610
+ 'icon' => 'warning',
2611
+ 'dismissible' => true
2612
+ ),
2613
  ),
2614
  ),
2615
 
2631
  ),
2632
  ),
2633
 
2634
+ 'wordpress_redirect' => array(
2635
+ 'condition' => array('rsssl_wp_redirect_condition'),
2636
+ 'callback' => 'rsssl_wordpress_redirect',
2637
+ 'output' => array(
2638
+ '301-wp-redirect' => array(
2639
+ 'msg' => __('301 redirect to https set: WordPress redirect.', 'really-simple-ssl'),
2640
+ 'icon' => 'success'
2641
+ ),
2642
+ 'no-redirect' => array(
2643
+ 'msg' => __('No 301 redirect is set. Enable the WordPress 301 redirect in the settings to get a 301 permanent redirect.', 'really-simple-ssl'),
2644
+ 'icon' => 'warning'
2645
+ ),
2646
+ )
2647
+ ),
2648
 
2649
  'check_redirect' => array(
2650
+ 'condition' => array('rsssl_ssl_enabled' , 'rsssl_htaccess_redirect_allowed', 'rsssl_no_multisite'),
2651
+ 'callback' => 'rsssl_check_redirect',
2652
  'output' => array(
2653
  'htaccess-redirect-set' => array(
2654
  'msg' =>__('301 redirect to https set: .htaccess redirect.', 'really-simple-ssl'),
2655
+ 'icon' => 'success'
 
 
 
 
 
 
2656
  ),
2657
+ //generate an enable link to highlight the setting, setting name is same as array key
2658
+ $enable_link = $this->generate_enable_link($setting_name = 'wp-redirect-to-htaccess'),
2659
  'wp-redirect-to-htaccess' => array(
2660
  'msg' => __('WordPress 301 redirect enabled. We recommend to enable the 301 .htaccess redirect option on your specific setup.', 'really-simple-ssl') . " "
2661
+ . "<span><a href=$enable_link>$enable</a></span>" . " "
2662
  . __("or", "really-simple-ssl")
2663
  . "<span class='rsssl-dashboard-dismiss' data-dismiss_type='check_redirect'><a href='#' class='rsssl-dismiss-text rsssl-close-warning'>$dismiss</a></span>"
2664
  . "<span class='rsssl-dashboard-plusone update-plugins rsssl-update-count'><span class='update-count'>1</span></span>",
2665
  'icon' => 'warning',
2666
+ 'plusone' => $redirect_plusone,
2667
  'dismissible' => true
2668
  ),
2669
+ 'no-redirect-set' => array(
2670
  'msg' => __('Enable a .htaccess redirect or WordPress redirect in the settings to create a 301 redirect.', 'really-simple-ssl'),
2671
  'icon' => 'warning',
2672
+ 'dismissible' => false
2673
  ),
2674
  'htaccess-not-writeable' => array(
2675
  'msg' => __('.htaccess is not writable. Set 301 WordPress redirect, or set the .htaccess manually if you want to redirect in .htaccess.', 'really-simple-ssl'),
2677
  'dismissible' => true
2678
  ),
2679
  'htaccess-cannot-be-set' => array(
2680
+ 'msg' => __('Https redirect cannot be set in the .htaccess file. Set the .htaccess redirect manually or enable the WordPress 301 redirect in the settings.', 'really-simple-ssl'),
2681
  'icon' => 'warning',
2682
  'dismissible' => true
2683
  ),
2689
  ),
2690
  ),
2691
 
2692
+ 'elementor' => array(
2693
+ 'condition' => array('uses_elementor' , 'ssl_activation_time_no_longer_then_3_days_ago'),
2694
+ 'callback' => 'rsssl_elementor_notice',
2695
+ 'output' => array(
2696
+ 'elementor-notice' => array(
2697
+ 'msg' => sprintf(__("Your site uses Elementor. This can require some additional steps before getting the secure lock. %sSee our guide for detailed instructions%s ", "really-simple-ssl"), '<a target="_blank" href="https://really-simple-ssl.com/knowledge-base/how-to-fix-mixed-content-in-elementor-after-moving-to-ssl/">', '</a>')
2698
+ . __("or", "really-simple-ssl")
2699
+ . "<span class='rsssl-dashboard-dismiss' data-dismiss_type='elementor'><a href='#' class='rsssl-dismiss-text rsssl-close-warning'>$dismiss</a></span>",
2700
+ 'icon' => 'warning',
2701
+ 'dismissible' => true
2702
+ ),
2703
+ ),
2704
+ ),
2705
 
2706
  'hsts_enabled' => array(
2707
+ 'condition' => array('rsssl_no_multisite'),
2708
  'callback' => 'rsssl_hsts_enabled',
2709
  'output' => array(
2710
  'contains-hsts' => array(
2718
  ),
2719
  ),
2720
 
 
2721
  'secure_cookies_set' => array(
2722
  'callback' => 'rsssl_secure_cookies_set',
2723
  'output' => array(
2752
  }
2753
 
2754
 
2755
+ /**
2756
+ * @param $setting_name
2757
+ *
2758
+ * @return string
2759
+ *
2760
+ * Generate an enable link for the specific setting, redirects to settings page and highlights the setting.
2761
+ *
2762
+ */
2763
+
2764
+ public function generate_enable_link($setting_name)
2765
+ {
2766
+ return add_query_arg(array("page"=>"rlrsssl_really_simple_ssl", "tab"=>"settings", "highlight"=>"$setting_name"),admin_url("options-general.php"));
2767
+ }
2768
+
2769
+ /**
2770
+ * @param $id
2771
+ * @param $notice
2772
+ *
2773
+ * Generate a notice row in the configuration dashboard tab
2774
+ *
2775
+ * @since 3.2
2776
+ *
2777
+ */
2778
+
2779
  private function notice_row($id, $notice){
2780
  if (!current_user_can('manage_options')) return;
2781
 
2811
  <td><?php echo $icon?></td><td class="rsssl-table-td-main-content"><?php echo $msg?></td>
2812
  <td class="rsssl-dashboard-dismiss" data-dismiss_type="<?php echo $id?>"><?php echo $dismiss?></td>
2813
  </tr>
 
2814
  <?php
2815
  }
2816
 
2817
+ /**
2818
+ *
2819
+ * Reset the plusone count transient
2820
+ *
2821
+ * @since 3.2
2822
+ *
2823
+ */
2824
+
2825
  public function reset_plusone_cache(){
2826
  delete_transient('rsssl_plusone_count');
2827
  }
2828
 
2829
+ /**
2830
+ * @return int|mixed
2831
+ *
2832
+ * Count the plusones
2833
+ *
2834
+ * @since 3.2
2835
+ */
2836
+
2837
  public function count_plusones(){
2838
  if (!current_user_can('manage_options')) return 0;
2839
  $count = get_transient('rsssl_plusone_count');
2962
  <?php
2963
  if ($this->debug) {
2964
  echo "<h2>" . __("Log for debugging purposes", "really-simple-ssl") . "</h2>";
2965
+ echo "<p>" . __("Send us a copy of these lines if you have any issues. The log will be erased when debug is set to false", "really-simple-ssl") . "</p>";
2966
  echo "<div class='debug-log'>";
2967
  if (defined('RSSSL_SAFE_MODE') && RSSSL_SAFE_MODE) echo "SAFE MODE<br>";
 
 
 
 
2968
 
2969
+ echo "<b>General</b><br>";
2970
+ echo "Plugin version: " . rsssl_version ."<br>";
2971
+
2972
+ if (RSSSL()->rsssl_certificate->is_valid()) {
2973
+ echo "SSL certificate is valid<br>";
2974
+ } else {
2975
+ echo "Invalid SSL certificate<br>";
2976
+ }
2977
+ echo ($this->ssl_enabled) ? "SSL is enabled<br><bR>" : "SSL is not yet enabled<br><br>";
2978
+
2979
+ echo "<b>Options</b><br>";
2980
+ if ($this->autoreplace_insecure_links) echo "* Mixed content fixer<br>";
2981
+ if ($this->wp_redirect) echo "* WordPress redirect<br>";
2982
+ if ($this->htaccess_redirect) echo "* htaccess redirect<br>";
2983
+ if ($this->do_not_edit_htaccess) echo "* Stop editing the .htaccess file<br>";
2984
+ if ($this->switch_mixed_content_fixer_hook) echo "* Use alternative method to fix mixed content<br>";
2985
+ if ($this->dismiss_all_notices) echo "* Dismiss all Really Simple SSL notices<br>";
2986
+ echo "<br>";
2987
+
2988
+ echo "<b>Server information</b><br>";
2989
+ echo "Server: " . RSSSL()->rsssl_server->get_server() . "<br>";
2990
+ echo "SSL Type: $this->ssl_type<br>";
2991
  if (is_multisite()) {
2992
  echo "MULTISITE<br>";
2993
  echo (!RSSSL()->rsssl_multisite->ssl_enabled_networkwide) ? "SSL is being activated per site<br>" : "SSL is activated network wide<br>";
2994
  }
2995
 
 
2996
  echo $this->debug_log;
2997
+
2998
+ echo "<br><br><b>Constants</b><br>";
2999
+
3000
+ if (defined('RSSSL_FORCE_ACTIVATE')) echo "RSSSL_FORCE_ACTIVATE defined";
3001
+ if (defined('RSSSL_NO_FLUSH')) echo "RSSSL_NO_FLUSH defined";
3002
+ if (defined('RSSSL_DISMISS_ACTIVATE_SSL_NOTICE')) echo "RSSSL_DISMISS_ACTIVATE_SSL_NOTICE defined";
3003
+ if (defined('RLRSSSL_DO_NOT_EDIT_HTACCESS')) echo "RLRSSSL_DO_NOT_EDIT_HTACCESS defined";
3004
+ if (defined('RSSSL_SAFE_MODE')) echo "RSSSL_SAFE_MODE defined";
3005
+ if (defined("RSSSL_SERVER_OVERRIDE")) echo "RSSSL_SERVER_OVERRIDE defined";
3006
+
3007
+ if( !defined('RSSSL_FORCE_ACTIVATE')
3008
+ && !defined('RSSSL_NO_FLUSH')
3009
+ && !defined('RSSSL_DISMISS_ACTIVATE_SSL_NOTICE')
3010
+ && !defined('RLRSSSL_DO_NOT_EDIT_HTACCESS')
3011
+ && !defined('RSSSL_SAFE_MODE')
3012
+ && !defined("RSSSL_SERVER_OVERRIDE")
3013
+ ) echo "No constants defined";
3014
+
3015
+ echo "</div>";
3016
  $this->debug_log = "";
3017
  $this->save_options();
3018
  } else {
3113
  }
3114
  }
3115
 
3116
+ if (defined("EDD_SL_PLUGIN_DIR") && (get_locale() === 'nl_NL')) {
3117
+ $this->get_banner_html(array(
3118
+ 'img' => 'edd-moneybird.jpg',
3119
+ 'title' => 'EDD Moneybird',
3120
+ 'description' => __("Export your Easy Digital Downloads sales directly to Moneybird.", "really-simple-ssl"),
3121
+ 'url' => 'https://really-simple-plugins.com/download/edd-moneybird/',
3122
+ )
3123
+ );
3124
 
3125
+ }
3126
 
3127
+ if (defined('WC_PLUGIN_FILE') && (get_locale() === 'nl_NL')) {
3128
+ $this->get_banner_html(array(
3129
+ 'img' => 'woocommerce-moneybird.jpg',
3130
+ 'title' => 'WooCommerce Moneybird',
3131
+ 'description' => __("Export your WooCommerce sales directly to Moneybird.", "really-simple-ssl"),
3132
+ 'url' => 'https://really-simple-plugins.com/download/woocommerce-moneybird/',
3133
+ )
3134
+ );
3135
 
3136
+ }
3137
  ?>
3138
  </div>
3139
  <?php }
3179
  return '<button type="button" class="close">
3180
  <span class="rsssl-close-warning">X</span>
3181
  </button>';
 
3182
  }
3183
 
3184
  /**
3192
 
3193
  private function get_banner_html($args)
3194
  {
 
3195
  $default = array(
3196
  'pro' => false,
3197
  );
3282
 
3283
  add_settings_field('id_deactivate_keep_ssl', __("Deactivate plugin and keep SSL", "really-simple-ssl"), array($this, 'get_option_deactivate_keep_ssl'), 'rlrsssl', 'rlrsssl_settings');
3284
 
 
3285
  }
3286
 
3287
  /**
3479
 
3480
  public function get_option_htaccess_redirect()
3481
  {
 
3482
  $options = get_option('rlrsssl_options');
3483
 
3484
  $htaccess_redirect = $this->htaccess_redirect;
3495
  }
3496
 
3497
  ?>
3498
+ <label class="rsssl-switch" id="rsssl-maybe-highlight-wp-redirect-to-htaccess">
3499
  <input id="rlrsssl_options" name="rlrsssl_options[htaccess_redirect]" size="40" value="1"
3500
  type="checkbox" <?php checked(1, $this->htaccess_redirect, true) ?> />
3501
  <span class="rsssl-slider rsssl-round"></span>
3587
  RSSSL()->rsssl_help->get_help_tip(__("If this option is set to true, the mixed content fixer will fire on the init hook instead of the template_redirect hook. Only use this option when you experience problems with the mixed content fixer.", "really-simple-ssl"));
3588
  }
3589
 
3590
+ /**
3591
+ *
3592
+ * Get the option to dismiss all Really Simple SSL notices
3593
+ *
3594
+ * @since 3.2
3595
+ *
3596
+ * @access public
3597
+ *
3598
+ */
3599
+
3600
  public function get_option_dismiss_all_notices()
3601
  {
3602
  ?>
3661
 
3662
  }
3663
 
3664
+ /**
3665
+ *
3666
+ * Mixed content fixer option
3667
+ *
3668
+ */
3669
+
3670
  public function get_option_autoreplace_insecure_links()
3671
  {
3672
  //$options = get_option('rlrsssl_options');
3723
  }
3724
  if (!defined("rsssl_pro_version")) {
3725
  if (!class_exists('RSSSL_PRO')) {
3726
+ $premium_link = '<a target="_blank" href="https://really-simple-ssl.com/downloads/really-simple-ssl-pro/">' . __('Premium Support', 'really-simple-ssl') . '</a>';
3727
  array_unshift($links, $premium_link);
3728
  }
3729
  }
3816
  return false;
3817
  }
3818
 
3819
+ /**
3820
+ * @return mixed|string
3821
+ *
3822
  * Retrieve the contents of the test page
3823
+ *
3824
+ */
3825
 
3826
  protected function get_test_page_contents()
3827
  {
3843
  $this->trace_log("test page url, enter in browser to check manually: " . $testpage_url);
3844
 
3845
  if (!is_wp_error($response) && (strpos($filecontents, "#SSL TEST PAGE#") !== false)) {
 
3846
  $this->trace_log("SSL test page loaded successfully");
3847
  } else {
 
3848
  $error = "";
3849
  if (is_wp_error($response)) $error = $response->get_error_message();
3850
  $this->trace_log("Could not open testpage " . $error);
3877
  *
3878
  * Determine the htaccess file. This can be either the regular .htaccess file, or an htaccess.conf file on bitnami installations.
3879
  *
 
3880
  */
3881
 
3882
  public function htaccess_file() {
3889
  return $htaccess_file;
3890
  }
3891
 
3892
+ /**
3893
+ *
3894
+ * Insert script to highlight option after dashboard click
3895
+ *
3896
+ * @since 3.2
3897
+ *
3898
+ * @access public
3899
+ *
3900
+ */
3901
+
3902
  public function highlight_js(){
3903
  ?>
3904
  <script>
3905
  jQuery(document).ready(function ($) {
3906
  'use strict';
3907
+ <?php
3908
+ if (isset($_GET['highlight'])) {
3909
+ $setting_name = sanitize_text_field( $_GET['highlight'] );
3910
+ echo "var setting_name = '$setting_name'" . ";";
3911
  }
3912
+ ?>
3913
+
3914
+ $(function() {
3915
+ if (document.location.href.indexOf('&highlight=' + setting_name) > -1 ) {
3916
+ $('#rsssl-maybe-highlight-' + setting_name).closest('tr').addClass('rsssl-highlight');
3917
+ }
3918
  });
3919
  });
3920
  </script>
3921
  <?php
3922
  }
3923
 
3924
+ /**
3925
+ *
3926
+ * Determine whether or not to remove the &highlight= parameter from URL
3927
+ *
3928
+ * @since 3.2
3929
+ *
3930
+ * @access public
3931
+ *
3932
+ */
3933
+
3934
  public function maybe_remove_highlight_from_url() {
3935
 
3936
  $http_referrer = isset($_POST['_wp_http_referer']) ? $_POST['_wp_http_referer'] : false;
3964
  }
3965
 
3966
  function rsssl_ssl_enabled(){
3967
+ if (RSSSL()->really_simple_ssl->ssl_enabled) {
3968
+ return 'ssl-enabled';
3969
+ } else {
3970
+ return 'ssl-not-enabled';
3971
+ }
3972
  }
3973
 
3974
  function rsssl_ssl_detected(){
3975
+ if (!RSSSL()->really_simple_ssl->wpconfig_ok()) {
3976
+ return 'fail';
3977
+ }
3978
+ if (!RSSSL()->really_simple_ssl->site_has_ssl) {
3979
+ return 'no-ssl-detected';
3980
+ }
3981
+ if (RSSSL()->really_simple_ssl->site_has_ssl) {
3982
+ return 'ssl-detected';
3983
+ }
3984
 
3985
  return false;
3986
  }
3987
 
3988
  function rsssl_check_redirect(){
3989
+ if (!RSSSL()->really_simple_ssl->has_301_redirect()) {
3990
+ return 'no-redirect-set';
3991
+ }
3992
  if (RSSSL()->really_simple_ssl->has_301_redirect() && RSSSL()->rsssl_server->uses_htaccess() && RSSSL()->really_simple_ssl->htaccess_contains_redirect_rules()) {
3993
  return 'htaccess-redirect-set';
3994
  }
3995
  if (RSSSL()->really_simple_ssl->has_301_redirect() && RSSSL()->really_simple_ssl->wp_redirect && RSSSL()->rsssl_server->uses_htaccess() && !RSSSL()->really_simple_ssl->htaccess_redirect) {
3996
  return 'wp-redirect-to-htaccess';
3997
  }
3998
+ if (RSSSL()->rsssl_server->uses_htaccess() && (!is_multisite() || !RSSSL()->rsssl_multisite->is_per_site_activated_multisite_subfolder_install())) {
3999
+ if (!is_writable(RSSSL()->really_simple_ssl->htaccess_file())) {
4000
+ return 'htaccess-not-writeable';
4001
+ } else {
4002
+ return 'htaccess-cannot-be-set';
4003
+ }
 
 
 
 
4004
  } else {
4005
  return 'default';
4006
  }
4033
  {
4034
  return RSSSL()->really_simple_ssl->htaccess_redirect_allowed();
4035
  }
4036
+
4037
+ function uses_elementor()
4038
+ {
4039
+ if (defined('ELEMENTOR_VERSION') || defined('ELEMENTOR_PRO_VERSION')) {
4040
+ return true;
4041
+ } else {
4042
+ return false;
4043
+ }
4044
+ }
4045
+
4046
+ function ssl_activation_time_no_longer_then_3_days_ago()
4047
+ {
4048
+
4049
+ $activation_time = get_option('rsssl_activation_timestamp');
4050
+ $three_days_after_activation = $activation_time + 3 * DAY_IN_SECONDS;
4051
+
4052
+ if (time() < $three_days_after_activation) {
4053
+ return true;
4054
+ } else {
4055
+ return false;
4056
+ }
4057
+ }
4058
+
4059
+ function rsssl_elementor_notice()
4060
+ {
4061
+ return 'elementor-notice';
4062
+ }
4063
+
4064
+ function rsssl_wp_redirect_condition() {
4065
+ if (RSSSL()->really_simple_ssl->has_301_redirect() && RSSSL()->really_simple_ssl->wp_redirect && !RSSSL()->really_simple_ssl->htaccess_redirect) {
4066
+ return true;
4067
+ } else {
4068
+ return false;
4069
+ }
4070
+ }
4071
+
4072
+ function rsssl_wordpress_redirect() {
4073
+ if (RSSSL()->really_simple_ssl->has_301_redirect() && RSSSL()->really_simple_ssl->wp_redirect) {
4074
+ return '301-wp-redirect';
4075
+ } else {
4076
+ return 'no-redirect';
4077
+ }
4078
+ }
4079
+
4080
+ function rsssl_no_multisite(){
4081
+ if (!is_multisite()) {
4082
+ return true;
4083
+ } else {
4084
+ return false;
4085
+ }
4086
+ }
css/main.css CHANGED
@@ -607,12 +607,6 @@ input:focus + .rsssl-slider {
607
  padding-left: 10px;
608
  }
609
 
610
- /*Reset the bootstrap styling to make dashboard dismiss buttons identical*/
611
-
612
- button {
613
- all: initial;
614
- }
615
-
616
  .rsssl-dashboard-dismiss .close {
617
  all: initial;
618
  }
607
  padding-left: 10px;
608
  }
609
 
 
 
 
 
 
 
610
  .rsssl-dashboard-dismiss .close {
611
  all: initial;
612
  }
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}button{all:initial}.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 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}
readme.txt CHANGED
@@ -6,7 +6,7 @@ Requires at least: 4.6
6
  License: GPL2
7
  Tested up to: 5.2
8
  Requires PHP: 5.4
9
- Stable tag: 3.2.3
10
 
11
  No setup required! You only need an SSL certificate, and this plugin will do the rest.
12
 
@@ -30,9 +30,10 @@ some cool 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
  * Mixed Content Fixer for the back-end
34
- * More detailed feedback on the configuration page.
35
- * Certificate expiration check: get an email when your SSL certificate is about to expire.
36
  * Premium support
37
 
38
  = What does the plugin actually do =
@@ -81,6 +82,12 @@ If you are experiencing redirect loops on your site, try these [instructions](ht
81
  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.
82
 
83
  == Changelog ==
 
 
 
 
 
 
84
  = 3.2.3 =
85
  * Added right-to-left text support
86
  * Show a plusone behind the notice that generated it
@@ -90,7 +97,7 @@ Yes. There is a dedicated network settings page where you can switch between net
90
  * Added site health notice
91
 
92
  = 3.2.2 =
93
- * Fix: some single sites setup were having issues with multisite files being include.
94
 
95
  = 3.2.1 =
96
  * Fix: error in regex, cause a fatal error in cases where a plus one already was showing in the settings menu
6
  License: GPL2
7
  Tested up to: 5.2
8
  Requires PHP: 5.4
9
+ Stable tag: 3.2.4
10
 
11
  No setup required! You only need an SSL certificate, and this plugin will do the rest.
12
 
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
34
  * Mixed Content Fixer for the back-end
35
+ * More detailed feedback on the configuration page
36
+ * Certificate expiration check: get an email when your SSL certificate is about to expire
37
  * Premium support
38
 
39
  = What does the plugin actually do =
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.4 =
86
+ * Improved and added dashboard notices
87
+ * Improved debug logging
88
+ * Added option to dismiss all Really Simple SSL notices
89
+ * Fixed a bug where other plugins buttons had their style reset
90
+
91
  = 3.2.3 =
92
  * Added right-to-left text support
93
  * Show a plusone behind the notice that generated it
97
  * Added site health notice
98
 
99
  = 3.2.2 =
100
+ * Fix: some single sites setup were having issues with multisite files being included.
101
 
102
  = 3.2.1 =
103
  * Fix: error in regex, cause a fatal error in cases where a plus one already was showing in the settings menu
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.3
7
  * Text Domain: really-simple-ssl
8
  * Domain Path: /languages
9
  * Author: Rogier Lankhorst, Mark Wolters
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.4
7
  * Text Domain: really-simple-ssl
8
  * Domain Path: /languages
9
  * Author: Rogier Lankhorst, Mark Wolters