ÿØÿà 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ĤÚ;H2RÚ†õ\Ö·Ÿn'¾ ñ#ºI¤Å´%çÁ‚â7›‹qT3Iï¨ÖÚ5I7Ë!ÅOóŸ¶øÝñØôת¦$Tcö‘[«Ö³šÒ';Aþ ¸èíg A2Z"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Á.license = sanitize_title($_GET['license']); } if ( isset($_GET['item_id']) ) { $this->item_id = sanitize_title($_GET['item_id']); } if ( isset($_GET['plugin']) ) { $plugin = sanitize_title($_GET['plugin']); switch ($plugin) { case "rsssl_pro": $rsssl_admin_url = is_multisite() ? network_admin_url('settings.php') : admin_url("options-general.php"); $this->slug = is_multisite() ? "really-simple-ssl-pro-multisite/really-simple-ssl-pro-multisite.php" : "really-simple-ssl-pro/really-simple-ssl-pro.php"; $this->plugin_name = "Really Simple Security Pro"; $this->plugin_constant = "rsssl_pro"; $this->prefix = "rsssl_"; $this->api_url = "https://really-simple-ssl.com"; $this->dashboard_url = add_query_arg(["page" => "really-simple-security"], $rsssl_admin_url ); $this->account_url = 'https://really-simple-ssl.com/account'; $this->instructions = 'https://really-simple-ssl.com/knowledge-base/install-really-simple-ssl-pro'; break; case "burst_pro": $this->slug = "burst-pro/burst-pro.php"; $this->plugin_name = "Burst"; $this->plugin_constant = "burst_pro"; $this->prefix = "burst_"; $this->api_url = "https://burst-statistics.com"; $this->dashboard_url = add_query_arg(["page" => "burst"], admin_url( "index.php" )); $this->account_url = 'https://burst-statistics.com/account'; $this->instructions = 'https://burst-statistics.com/how-to-install-burst-premium'; break; case "cmplz_pro": default: $this->slug = is_multisite() ? "complianz-gdpr-premium-multisite/complianz-gpdr-premium.php" : "complianz-gdpr-premium/complianz-gpdr-premium.php"; $this->plugin_name = "Complianz"; $this->plugin_constant = "cmplz_premium"; $this->prefix = "cmplz_"; $this->api_url = "https://complianz.io"; $this->dashboard_url = add_query_arg(["page" => "complianz"], admin_url("admin.php") ); $this->account_url = 'https://complianz.io/account'; $this->instructions = 'https://complianz.io/how-to-install-complianz-gdpr-premium-plugin'; break; } } $this->steps = array( array( 'action' => 'rsp_upgrade_destination_clear', 'doing' => __("Checking if plugin folder exists...", "really-simple-ssl"), 'success' => __("Able to create destination folder", "really-simple-ssl"), 'error' => __("Destination folder already exists", "really-simple-ssl"), 'type' => 'folder', ), array( 'action' => 'rsp_upgrade_activate_license', 'doing' => __("Validating license...", "really-simple-ssl"), 'success' => __("License valid", "really-simple-ssl"), 'error' => __("License invalid", "really-simple-ssl"), 'type' => 'license', ), array( 'action' => 'rsp_upgrade_package_information', 'doing' => __("Retrieving package information...", "really-simple-ssl"), 'success' => __("Package information retrieved", "really-simple-ssl"), 'error' => __("Failed to gather package information", "really-simple-ssl"), 'type' => 'package', ), array( 'action' => 'rsp_upgrade_install_plugin', 'doing' => __("Installing plugin...", "really-simple-ssl"), 'success' => __("Plugin installed", "really-simple-ssl"), 'error' => __("Failed to install plugin", "really-simple-ssl"), 'type' => 'install', ), array( 'action' => 'rsp_upgrade_activate_plugin', 'doing' => __("Activating plugin...", "really-simple-ssl"), 'success' => __("Plugin activated", "really-simple-ssl"), 'error' => __("Failed to activate plugin", "really-simple-ssl"), 'type' => 'activate', ) ); // Set up hooks. $this->init(); } private function get_suggested_plugin($attr){ $plugin_to_be_installed = $current_plugin = false; if (isset($_GET['plugin']) && $_GET['plugin']==='cmplz_pro' ) { $plugin_to_be_installed = 'complianz-gdpr'; } else if (isset($_GET['plugin']) && $_GET['plugin']==='rsssl_pro' ) { $plugin_to_be_installed = 'really-simple-ssl'; } else if (isset($_GET['plugin']) && $_GET['plugin']==='burst_pro' ) { $plugin_to_be_installed = 'burst'; } $path = __FILE__; if (strpos($path, 'really-simple-ssl')!==false) { $current_plugin = 'really-simple-ssl'; } else if (strpos($path, 'complianz')!==false){ $current_plugin = 'complianz-gdpr'; } else if (strpos($path, 'burst')!==false){ $current_plugin = 'burst'; } $dir_url = plugin_dir_url(__FILE__).'img/'; $suggestion = $fallback_suggestion = [ 'icon_url' => $dir_url.'burst.png', 'constant' => 'burst_version', 'title' => 'Burst – Privacy Friendly Statistics', 'description_short' => __('Self-hosted and privacy-friendly analytics tool.', "really-simple-ssl"), 'disabled' => '', 'button_text' => __("Install", "really-simple-ssl"), 'slug' => 'burst-statistics', 'description' => __("Get detailed insights into visitors' behaviour with Burst Statistics, the privacy-friendly analytics dashboard from Really Simple Plugins.", "really-simple-ssl"), 'install_url' => 'burst%20statistics%20hesseldejong%20%20burst-statistics.com&tab=search&type=term', ]; if ( $plugin_to_be_installed === 'really-simple-ssl' || $plugin_to_be_installed === 'burst' ){ $suggestion = [ 'icon_url' => $dir_url.'complianz-gdpr.png', 'constant' => 'cmplz_version', 'title' => 'Complianz GDPR/CCPA', 'description_short' => __('GDPR/CCPA Privacy Suite', "really-simple-ssl"), 'disabled' => '', 'button_text' => __("Install", "really-simple-ssl"), 'slug' => 'complianz-gdpr', 'description' => __('Configure your Cookie Notice, Consent Management and Cookie Policy with our Wizard and Cookie Scan. Supports GDPR, DSGVO, TTDSG, LGPD, POPIA, RGPD, CCPA and PIPEDA.', "really-simple-ssl"), 'install_url' => 'complianz+gdpr+POPIA&tab=search&type=term', ]; if ($current_plugin==='complianz-gdpr') { $suggestion = $fallback_suggestion; } } if ( $plugin_to_be_installed === 'complianz-gdpr' ){ $suggestion = [ 'icon_url' => $dir_url.'really-simple-ssl.png', 'constant' => 'rsssl_version', 'title' => 'Really Simple Security', 'description_short' => __('One click SSL optimization', "really-simple-ssl"), 'disabled' => '', 'button_text' => __("Install", "really-simple-ssl"), 'slug' => 'really-simple-ssl', 'description' => __('Easily improve site security with WordPress Hardening, Two-Factor Authentication (2FA), Login Protection, Vulnerability Detection and SSL certificate generation.', "really-simple-ssl"), 'install_url' => 'ssl%20really%20simple%20plugins%20complianz+HSTS&tab=search&type=term', ]; if ( $current_plugin==='really-simple-ssl' ) { $suggestion = $fallback_suggestion; } } $admin_url = is_multisite() ? network_admin_url('plugin-install.php?s=') : admin_url('plugin-install.php?s='); $suggestion['install_url'] = $admin_url.$suggestion['install_url']; if (defined($suggestion['constant'])){ $suggestion['install_url'] = '#'; $suggestion['button_text'] = __("Installed", "really-simple-ssl"); $suggestion['disabled'] = 'disabled'; } return $suggestion[$attr]; } /** * Set up WordPress filters to hook into WP's update process. * * @uses add_filter() * * @return void */ public function init() { add_action( 'admin_footer', array( $this, 'print_install_modal' ) ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets') ); add_action( 'wp_ajax_rsp_upgrade_destination_clear', array($this, 'process_ajax_destination_clear') ); add_action( 'wp_ajax_rsp_upgrade_activate_license', array($this, 'process_ajax_activate_license') ); add_action( 'wp_ajax_rsp_upgrade_package_information', array($this, 'process_ajax_package_information') ); add_action( 'wp_ajax_rsp_upgrade_install_plugin', array($this, 'process_ajax_install_plugin') ); add_action( 'wp_ajax_rsp_upgrade_activate_plugin', array($this, 'process_ajax_activate_plugin') ); } /** * Enqueue javascript * @todo minification */ public function enqueue_assets( $hook ) { if ( $hook === "plugins.php" && isset($_GET['install_pro']) ) { $minified = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ? '' : '.min'; wp_register_style( 'rsp-upgrade-css', plugin_dir_url(__FILE__) . "upgrade-to-pro$minified.css", false, $this->version ); wp_enqueue_style( 'rsp-upgrade-css' ); wp_enqueue_script( 'rsp-ajax-js', plugin_dir_url(__FILE__) . "ajax$minified.js", array(), $this->version, true ); wp_enqueue_script( 'rsp-upgrade-js', plugin_dir_url(__FILE__) . "upgrade-to-pro$minified.js", array(), $this->version, true ); wp_localize_script( 'rsp-upgrade-js', 'rsp_upgrade', array( 'steps' => $this->steps, 'admin_url' => admin_url( 'admin-ajax.php' ), 'token' => wp_create_nonce( 'upgrade_to_pro_nonce'), 'cmplz_nonce' => wp_create_nonce( 'complianz_save'), 'finished_title' => __("Installation finished", "really-simple-ssl"), ) ); } } /** * Calls the API and, if successfull, returns the object delivered by the API. * * @uses get_bloginfo() * @uses wp_remote_post() * @uses is_wp_error() * * @return false|object */ private function api_request() { if ( !rsssl_user_can_manage() ) { return false; } global $edd_plugin_url_available; // Do a quick status check on this domain if we haven't already checked it. $store_hash = md5( $this->api_url ); if ( ! is_array( $edd_plugin_url_available ) || ! isset( $edd_plugin_url_available[ $store_hash ] ) ) { $test_url_parts = parse_url( $this->api_url ); $port = ! empty( $test_url_parts['port'] ) ? ':' . $test_url_parts['port'] : ''; $host = ! empty( $test_url_parts['host'] ) ? $test_url_parts['host'] : ''; $test_url = 'https://' . $host . $port; $response = wp_remote_get( $test_url, array( 'timeout' => $this->health_check_timeout, 'sslverify' => true ) ); $edd_plugin_url_available[ $store_hash ] = is_wp_error( $response ) ? false : true; } if ( false === $edd_plugin_url_available[ $store_hash ] ) { return false; } if( $this->api_url == trailingslashit ( home_url() ) ) { return false; // Don't allow a plugin to ping itself } $api_params = array( 'edd_action' => 'get_version', 'license' => ! empty( $this->license ) ? $this->license : '', 'item_id' => isset( $this->item_id ) ? $this->item_id : false, 'url' => home_url(), ); $request = wp_remote_post( $this->api_url, array( 'timeout' => 15, 'sslverify' => true, 'body' => $api_params ) ); if ( ! is_wp_error( $request ) ) { $request = json_decode( wp_remote_retrieve_body( $request ) ); } if ( $request && isset( $request->sections ) ) { $request->sections = maybe_unserialize( $request->sections ); } else { $request = false; } if ( $request && isset( $request->banners ) ) { $request->banners = maybe_unserialize( $request->banners ); } if ( $request && isset( $request->icons ) ) { $request->icons = maybe_unserialize( $request->icons ); } if( ! empty( $request->sections ) ) { foreach( $request->sections as $key => $section ) { $request->$key = (array) $section; } } return $request; } /** * Prints a modal with bullets for each step of the install process */ public function print_install_modal() { if ( !rsssl_user_can_manage() ) { return false; } if ( is_admin() && isset($_GET['install_pro']) && isset($_GET['license']) && isset($_GET['item_id']) && isset($_GET['plugin']) ) { $dashboard_url = $this->dashboard_url; $plugins_url = admin_url( "plugins.php" ); ?>