$_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. */
}
}
}
?>