$_time) /* Auto-expire entries. */ if ($_time < strtotime ("-" . $concurrency)) unset ($entries[$_entry]); /**/ $ip = ($ip) ? $ip : "empty"; /* Allow empty IPs. */ $entries[$ip] = strtotime ("now"); /* Log this entry. */ set_transient ($transient_entries, $entries, 2 * (strtotime ("+" . $concurrency) - strtotime ("now"))); /**/ if (get_transient ($transient_security_breach)) /* Has this restriction already been breached? */ { c_ws_plugin__s2member_no_cache::no_cache_constants (true) . wp_clear_auth_cookie (); /**/ do_action ("ws_plugin__s2member_during_ip_restrictions_ok_no", get_defined_vars ()); /**/ status_header (503); /* Sends a status header; temporarily unavailable. */ /**/ echo _x ('503: Service Temporarily Unavailable
Too many IP addresses accessing one secure area!
Please contact Support if you need assistance.', "s2member-front", "s2member"); /**/ exit (); /* Clean exit. */ } else if (count ($entries) > $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction"]) { c_ws_plugin__s2member_no_cache::no_cache_constants (true) . wp_clear_auth_cookie (); /**/ set_transient ($transient_security_breach, 1, $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction_time"]); /**/ do_action ("ws_plugin__s2member_during_ip_restrictions_ok_no", get_defined_vars ()); /**/ status_header (503); /* Sends a status header; temporarily unavailable. */ /**/ echo _x ('503: Service Temporarily Unavailable
Too many IP addresses accessing one secure area!
Please contact Support if you need assistance.', "s2member-front", "s2member"); /**/ exit (); /* Clean exit. */ } else /* OK, this looks legitimate. Apply Filters here and return true. */ { eval ('foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;'); do_action ("ws_plugin__s2member_during_ip_restrictions_ok_yes", get_defined_vars ()); unset ($__refs, $__v); /* Unset defined __refs, __v. */ /**/ return apply_filters ("ws_plugin__s2member_ip_restrictions_ok", true, get_defined_vars ()); } } /**/ return apply_filters ("ws_plugin__s2member_ip_restrictions_ok", true, get_defined_vars ()); } /** * Queries Transients for specific IP Restrictions associated with a security breach. * * @package s2Member\IP_Restrictions * @since 3.5 * * @param str $restriction Unique IP Restriction name/identifier. Such as a Username, or a unique access code. * @return bool True if the specific IP Restriction is associated with a security breach, else false. */ public static function specific_ip_restriction_breached_security ($restriction = FALSE) { do_action ("ws_plugin__s2member_before_specific_ip_restriction_breached_security", get_defined_vars ()); /**/ $prefix = "s2m_ipr_"; /* s2Member Transient prefix for all IP Restrictions. */ $transient_security_breach = $prefix . md5 ("s2member_ip_restrictions_" . $restriction . "_security_breach"); $associated_with_security_breach = (get_transient ($transient_security_breach)) ? true : false; /**/ return apply_filters ("ws_plugin__s2member_before_specific_ip_restriction_breached_security", $associated_with_security_breach, get_defined_vars ()); } /** * Resets/deletes specific IP Restrictions. * * @package s2Member\IP_Restrictions * @since 3.5 * * @param str $restriction Unique IP Restriction name/identifier. Such as a Username, or a unique access code. * @return null */ public static function delete_reset_specific_ip_restrictions ($restriction = FALSE) { global $wpdb; /* Need global database object. */ /**/ do_action ("ws_plugin__s2member_before_delete_reset_specific_ip_restrictions", get_defined_vars ()); /**/ $prefix = "s2m_ipr_"; /* s2Member Transient prefix for all IP Restrictions. */ $transient_entries = $prefix . md5 ("s2member_ip_restrictions_" . $restriction . "_entries"); $transient_security_breach = $prefix . md5 ("s2member_ip_restrictions_" . $restriction . "_security_breach"); /**/ $wpdb->query ("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '%" . esc_sql (like_escape ($transient_entries)) . "'"); $wpdb->query ("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '%" . esc_sql (like_escape ($transient_security_breach)) . "'"); /**/ do_action ("ws_plugin__s2member_after_delete_reset_specific_ip_restrictions", get_defined_vars ()); /**/ return; /* Return for uniformity. */ } /** * Resets/deletes specific IP Restrictions via AJAX. * * @package s2Member\IP_Restrictions * @since 3.5 * * @attaches-to: ``add_action("wp_ajax_ws_plugin__s2member_delete_reset_specific_ip_restrictions_via_ajax");`` * * @return null Exits script execution after returning data for AJAX caller. */ public static function delete_reset_specific_ip_restrictions_via_ajax () { do_action ("ws_plugin__s2member_before_delete_reset_specific_ip_restrictions_via_ajax", get_defined_vars ()); /**/ if (current_user_can ("create_users")) /* Check priveledges as well. */ /**/ if (!empty ($_POST["ws_plugin__s2member_delete_reset_specific_ip_restrictions_via_ajax"])) if (($nonce = $_POST["ws_plugin__s2member_delete_reset_specific_ip_restrictions_via_ajax"])) if (wp_verify_nonce ($nonce, "ws-plugin--s2member-delete-reset-specific-ip-restrictions-via-ajax")) /**/ if (!empty ($_POST["ws_plugin__s2member_delete_reset_specific_ip_restriction"])) if (($restriction = trim (stripslashes ($_POST["ws_plugin__s2member_delete_reset_specific_ip_restriction"])))) /**/ if (c_ws_plugin__s2member_ip_restrictions::delete_reset_specific_ip_restrictions ($restriction) !== "nill") echo apply_filters ("ws_plugin__s2member_delete_reset_specific_ip_restrictions_via_ajax", 1, get_defined_vars ()); /**/ exit (); /* Clean exit. */ } /** * Resets/deletes all IP Restrictions. * * @package s2Member\IP_Restrictions * @since 3.5 * * @return null */ public static function delete_reset_all_ip_restrictions () { global $wpdb; /* Need global database object. */ /**/ do_action ("ws_plugin__s2member_before_delete_reset_all_ip_restrictions", get_defined_vars ()); /**/ $wpdb->query ("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '" . esc_sql (like_escape ("_transient_s2m_ipr_")) . "%'"); $wpdb->query ("DELETE FROM `" . $wpdb->options . "` WHERE `option_name` LIKE '" . esc_sql (like_escape ("_transient_timeout_s2m_ipr_")) . "%'"); /**/ do_action ("ws_plugin__s2member_after_delete_reset_all_ip_restrictions", get_defined_vars ()); /**/ return; /* Return for uniformity. */ } /** * Resets/deletes all IP Restrictions via AJAX. * * @package s2Member\IP_Restrictions * @since 3.5 * * @attaches-to: ``add_action("wp_ajax_ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax");`` * * @return null Exits script execution after returning data for AJAX caller. */ public static function delete_reset_all_ip_restrictions_via_ajax () { do_action ("ws_plugin__s2member_before_delete_reset_all_ip_restrictions_via_ajax", get_defined_vars ()); /**/ if (current_user_can ("create_users")) /* Check priveledges as well. */ /**/ if (!empty ($_POST["ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax"])) if (($nonce = $_POST["ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax"])) if (wp_verify_nonce ($nonce, "ws-plugin--s2member-delete-reset-all-ip-restrictions-via-ajax")) /**/ if (c_ws_plugin__s2member_ip_restrictions::delete_reset_all_ip_restrictions () !== "nill") echo apply_filters ("ws_plugin__s2member_delete_reset_all_ip_restrictions_via_ajax", 1, get_defined_vars ()); /**/ exit (); /* Clean exit. */ } } } ?>