ÿØÿà JFIF    ÿÛ „  ( %"1!%)+...383,7(-.+  -+++--++++---+-+-----+---------------+---+-++7-----ÿÀ  ß â" ÿÄ     ÿÄ H    !1AQaq"‘¡2B±ÁÑð#R“Ò Tbr‚²á3csƒ’ÂñDS¢³$CÿÄ   ÿÄ %  !1AQa"23‘ÿÚ   ? ôÿ ¨pŸªáÿ —åYõõ\?àÒü©ŠÄï¨pŸªáÿ —åYõõ\?àÓü©ŠÄá 0Ÿªáÿ Ÿå[úƒ ú®ði~TÁbqÐ8OÕpÿ ƒOò¤Oè`–RÂáœá™êi€ßÉ< FtŸI“öÌ8úDf´°å}“¾œ6  öFá°y¥jñÇh†ˆ¢ã/ÃÐ:ªcÈ "Y¡ðÑl>ÿ ”ÏËte:qž\oäŠe÷󲍷˜HT4&ÿ ÓÐü6ö®¿øþßèô Ÿ•7Ñi’•j|“ñì>b…þS?*Óôÿ ÓÐü*h¥£ír¶ü UãS炟[AÐaè[ûª•õ&õj?†Éö+EzP—WeÒírJFt ‘BŒ†Ï‡%#tE Øz ¥OÛ«!1›üä±Í™%ºÍãö]°î(–:@<‹ŒÊö×òÆt¦ãº+‡¦%ÌÁ²h´OƒJŒtMÜ>ÀÜÊw3Y´•牋4ǍýʏTì>œú=Íwhyë,¾Ôò×õ¿ßÊa»«þˆѪQ|%6ž™A õ%:øj<>É—ÿ Å_ˆCbõ¥š±ý¯Ýƒï…¶|RëócÍf溪“t.СøTÿ *Ä¿-{†çàczůŽ_–^XþŒ±miB[X±d 1,é”zEù»& î9gœf™9Ð'.;—™i}!ôšåîqêÛ٤ёý£½ÆA–àôe"A$˝Úsäÿ ÷Û #°xŸëí(l »ý3—¥5m! rt`†0~'j2(]S¦¦kv,ÚÇ l¦øJA£Šƒ J3E8ÙiŽ:cÉžúeZ°€¯\®kÖ(79«Ž:¯X”¾³Š&¡* ….‰Ž(ÜíŸ2¥ª‡×Hi²TF¤ò[¨íÈRëÉ䢍mgÑ.Ÿ<öäS0í„ǹÁU´f#Vß;Õ–…P@3ío<ä-±»Ž.L|kªÀê›fÂ6@»eu‚|ÓaÞÆŸ…¨ááå>åŠ?cKü6ùTÍÆ”†sĤÚ;H2RÚ†õ\Ö·Ÿn'¾ ñ#ºI¤Å´%çÁ­‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"i¸vdÄ÷.iõ®§)¿]¤À†–‡É&ä{V¶iŽ”.Ó×Õÿ û?h¬Mt–íª[ÿ Ñÿ ÌV(í}=ibÔ¡›¥¢±b Lô¥‡piη_Z<‡z§èŒ)iÖwiÇ 2hÙ3·=’d÷8éŽ1¦¸c¤µ€7›7Ø ð\á)} ¹fËí›pAÃL%âc2 í§æQz¿;T8sæ°qø)QFMð‰XŒÂ±N¢aF¨…8¯!U  Z©RÊ ÖPVÄÀÍin™Ì-GˆªÅËŠ›•zË}º±ŽÍFò¹}Uw×#ä5B¤{î}Ð<ÙD é©¤&‡ïDbàÁôMÁ.admin->get_notices_list( array( 'dismiss_on_upgrade' => true, ) ); foreach ( $dismiss_options as $dismiss_option ) { if ( !is_string($dismiss_option) ) continue; update_option( 'rsssl_' . $dismiss_option . '_dismissed', true, false ); } delete_transient( 'rsssl_plusone_count' ); } if ( $prev_version && version_compare( $prev_version, '5.1.3', '<=' ) ) { if ( get_option( 'rsssl_disable_ocsp' ) ) { $options = get_option( 'rsssl_options_lets-encrypt' ); $options['disable_ocsp'] = true; update_option( 'rsssl_options_lets-encrypt', $options, false ); delete_option( 'rsssl_disable_ocsp' ); } } if ( $prev_version && version_compare( $prev_version, '5.3.0', '<=' ) ) { if ( file_exists( RSSSL()->admin->htaccess_file() ) && is_writable( RSSSL()->admin->htaccess_file() ) ) { $htaccess = file_get_contents( RSSSL()->admin->htaccess_file() ); $pattern_start = '/rlrssslReallySimpleSSL rsssl_version\[.*.]/'; if ( preg_match_all( $pattern_start, $htaccess ) ) { $htaccess = preg_replace( $pattern_start, 'Really Simple Security Redirect ' . rsssl_version, $htaccess ); $htaccess = str_replace( 'rlrssslReallySimpleSSL', 'Really Simple Security Redirect', $htaccess ); file_put_contents( RSSSL()->admin->htaccess_file(), $htaccess ); } } } if ( $prev_version && version_compare( $prev_version, '6.0.0', '<' ) ) { delete_option( 'rsssl_admin_notices' ); update_option( 'rsssl_show_onboarding', true, false ); //upgrade both site and network settings $options = get_option( 'rlrsssl_options' ); if ( is_multisite() && rsssl_is_networkwide_active() ) { $new_options = get_site_option( 'rsssl_options', [] ); } else { $new_options = get_option( 'rsssl_options', [] ); } $ssl_enabled = isset( $options['ssl_enabled'] ) ? $options['ssl_enabled'] : false; $new_options['ssl_enabled'] = (bool) $ssl_enabled; $autoreplace_insecure_links = isset( $options['autoreplace_insecure_links'] ) ? $options['autoreplace_insecure_links'] : true; $new_options['mixed_content_fixer'] = (bool) $autoreplace_insecure_links; $wp_redirect = isset( $options['wp_redirect'] ) ? $options['wp_redirect'] : false; $htaccess_redirect = isset( $options['htaccess_redirect'] ) ? $options['htaccess_redirect'] : false; $redirect = 'none;'; if ( $htaccess_redirect ) { $redirect = 'htaccess'; } elseif ( $wp_redirect ) { $redirect = 'wp_redirect'; } $new_options['redirect'] = sanitize_title( $redirect ); $do_not_edit_htaccess = isset( $options['do_not_edit_htaccess'] ) ? $options['do_not_edit_htaccess'] : false; $new_options['do_not_edit_htaccess'] = (bool) $do_not_edit_htaccess; $dismiss_all_notices = isset( $options['dismiss_all_notices'] ) ? $options['dismiss_all_notices'] : false; $new_options['dismiss_all_notices'] = (bool) $dismiss_all_notices; $switch_mixed_content_fixer_hook = isset( $options['switch_mixed_content_fixer_hook'] ) ? $options['switch_mixed_content_fixer_hook'] : false; $new_options['switch_mixed_content_fixer_hook'] = (bool) $switch_mixed_content_fixer_hook; delete_option( 'rsssl_upgraded_to_four' ); /** * Multisite */ if ( is_multisite() && rsssl_is_networkwide_active() ) { $network_options = get_site_option( 'rlrsssl_network_options' ); $enabled_network_wide = isset( $network_options['ssl_enabled_networkwide'] ) ? $network_options['ssl_enabled_networkwide'] : false; if ( $ssl_enabled && $enabled_network_wide ) { update_site_option( 'rsssl_network_activation_status', 'completed' ); } elseif ( $ssl_enabled ) { //convert entire site to SSL RSSSL()->multisite->start_ssl_activation(); } //ensure this doesn't run again $network_options['ssl_enabled_networkwide'] = false; update_site_option( 'rlrsssl_network_options', $network_options ); $dismiss_all_notices = isset( $network_options['dismiss_all_notices'] ) ? $network_options['dismiss_all_notices'] : false; $new_options['dismiss_all_notices'] = (bool) $dismiss_all_notices; $wp_redirect = isset( $network_options['wp_redirect'] ) ? $network_options['wp_redirect'] : false; if ( $wp_redirect ) { $redirect = 'wp_redirect'; } $htaccess_redirect = isset( $network_options['htaccess_redirect'] ) ? $network_options['htaccess_redirect'] : false; if ( $htaccess_redirect ) { $redirect = 'htaccess'; } $new_options['redirect'] = sanitize_title( $redirect ); $do_not_edit_htaccess = isset( $network_options['do_not_edit_htaccess'] ) ? $network_options['do_not_edit_htaccess'] : false; $new_options['do_not_edit_htaccess'] = (bool) $do_not_edit_htaccess; $autoreplace_mixed_content = isset( $network_options['autoreplace_mixed_content'] ) ? $network_options['autoreplace_mixed_content'] : false; $new_options['mixed_content_fixer'] = (bool) $autoreplace_mixed_content; //upgrade lets encrypt options $le_options = get_option( 'rsssl_options_lets-encrypt' ); $verification_type = get_option( 'rsssl_verification_type' ); if ( $verification_type ) { $new_options['verification_type'] = strtolower( sanitize_title( $verification_type ) ); } if ( ! empty( $le_options ) ) { foreach ( $options as $fieldname => $value ) { $new_options[ $fieldname ] = sanitize_text_field( $value ); } } } if ( is_multisite() && rsssl_is_networkwide_active() ) { update_site_option( 'rsssl_options', $new_options ); } else { update_option( 'rsssl_options', $new_options ); } update_option( 'rsssl_flush_rewrite_rules', time() ); } #clean up old rest api optimizer on upgrade if ( $prev_version && version_compare( $prev_version, '6.0.5', '<' ) ) { if ( file_exists( trailingslashit( WPMU_PLUGIN_DIR ) . 'rsssl_rest_api_optimizer.php' ) ) { unlink( trailingslashit( WPMU_PLUGIN_DIR ) . 'rsssl_rest_api_optimizer.php' ); } } #clear notices cache for multisite on upgrade, for the subsite notice if ( version_compare( $prev_version, '6.0.9', '<' ) ) { if ( is_multisite() ) { delete_option( 'rsssl_admin_notices' ); } } #ensure administrators have the manage_security capability if ( version_compare( $prev_version, '6.0.10', '<' ) ) { rsssl_add_manage_security_capability(); } #move notices transient to option, for better persistence if ( $prev_version && version_compare( $prev_version, '6.0.13', '<' ) ) { $notices = get_transient( 'rsssl_admin_notices' ); $plus_ones = get_transient( 'rsssl_plusone_count' ); update_option( 'rsssl_admin_notices', $notices ); update_option( 'rsssl_plusone_count', $plus_ones ); } if ( $prev_version && version_compare( $prev_version, '6.2.3', '<' ) ) { rsssl_update_option( 'send_notifications_email', 1 ); } if ( $prev_version && version_compare( $prev_version, '6.2.4', '<' ) ) { delete_option( 'rsssl_6_upgrade_completed' ); } if ( $prev_version && version_compare( $prev_version, '7.1.0', '<' ) ) { do_action( 'rsssl_update_rules' ); } // Update the config to auto prepend if ( $prev_version && version_compare( $prev_version, '8.0', '<' ) ) { RSSSL_SECURITY()->firewall_manager->update_wp_config_rule(); } //free if ( $prev_version && version_compare( $prev_version, '8.1.2', '<' ) ) { do_action('rsssl_update_rules'); } if ( $prev_version && version_compare( $prev_version, '8.3.0', '<' ) ) { wp_clear_scheduled_hook('rsssl_pro_every_hour_hook'); wp_clear_scheduled_hook('rsssl_pro_every_day_hook'); wp_clear_scheduled_hook('rsssl_pro_five_minutes_hook'); wp_clear_scheduled_hook('rsssl_le_every_week_hook'); wp_clear_scheduled_hook('rsssl_le_every_day_hook'); //split rsssl_key in two options so we can upgrade separately $key = get_option( 'rsssl_key'); $site_key = get_site_option( 'rsssl_key'); if ( $key ) { update_option( 'rsssl_license_key', $key, false ); } if ( $site_key ) { update_site_option( 'rsssl_le_key', $site_key ); } delete_site_option('rsssl_key'); delete_option('rsssl_key'); update_option('rsssl_upgrade_le_key', true, false); } if ( $prev_version && version_compare( $prev_version, '9.0', '<' ) ) { // Replace Really Simple SSL with Really Simple Security in wp-config.php, .htaccess, // advanced-headers.php RSSSL()->admin->update_branding_in_files(); RSSSL()->admin->clear_admin_notices_cache(); } if ( $prev_version && version_compare( $prev_version, '9.1.1', '<' ) ) { do_action('rsssl_update_rules'); } if ( $prev_version && version_compare( $prev_version, '9.1.1.1', '<=' ) ) { update_option('rsssl_reset_fix', true, false); } //don't clear on each update. //RSSSL()->admin->clear_admin_notices_cache(); //delete in future upgrade. We want to check the review notice dismissed as fallback still. //delete_option( 'rlrsssl_options' ); //delete_site_option( 'rlrsssl_network_options' ); //delete_option( 'rsssl_options_lets-encrypt' ); update_option( 'rsssl_previous_version', $prev_version, false ); do_action( 'rsssl_upgrade', $prev_version ); update_option( 'rsssl_current_version', rsssl_version, false ); }