Plugin Directory

Changeset 3412936


Ignore:
Timestamp:
12/06/2025 11:54:41 AM (4 months ago)
Author:
loghin
Message:

1.2.996.2

Location:
dynamic-front-end-heartbeat-control
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • dynamic-front-end-heartbeat-control/tags/1.2.996.2/heartbeat-async.php

    r3412927 r3412936  
    144144    return $load_pct;
    145145}
    146 
    147 function dfehc_get_server_load_ajax_handler(): void
    148 {
    149     $cap = apply_filters('dfehc_required_capability', DFEHC_CAPABILITY);
    150     $allow_public = (bool) apply_filters('dfehc_allow_public_server_load', false);
    151     if (!$allow_public) {
    152         $nonce_action = 'dfehc-get_server_load';
    153         $valid = function_exists('check_ajax_referer')
    154             ? check_ajax_referer($nonce_action, 'nonce', false)
    155             : wp_verify_nonce(isset($_REQUEST['nonce']) ? (string) $_REQUEST['nonce'] : '', $nonce_action);
    156         if (!$valid) {
    157             wp_send_json_error(['message' => 'dfehc/get_server_load: invalid nonce'], 403);
    158         }
    159         if (!current_user_can($cap)) {
    160             wp_send_json_error(['message' => 'dfehc/get_server_load: not authorized'], 403);
    161         }
    162     } else {
    163         $limit = absint(apply_filters('dfehc_public_rate_limit', 30));
    164         $window = absint(apply_filters('dfehc_public_rate_window', 60));
    165         $ip = dfehc_client_ip();
    166         $rl_key = dfehc_scoped_key('dfehc_rl_' . md5($ip));
    167         $cnt = (int) get_transient($rl_key);
    168         if ($cnt >= $limit) {
    169             wp_send_json_error(['message' => 'dfehc/get_server_load: rate limited'], 429);
    170         }
    171         dfehc_set_transient_noautoload($rl_key, $cnt + 1, $window);
    172     }
    173     $load = dfehc_get_or_calculate_server_load();
    174     if ($load === false) {
    175         wp_send_json_success(dfehc_fallback_interval());
    176     }
    177     $interval = dfehc_calculate_recommended_interval_user_activity((float) $load);
    178     if ($interval <= 0) {
    179         $interval = dfehc_fallback_interval();
    180     }
    181     wp_send_json_success($interval);
    182 }
    183 dfehc_register_ajax('get_server_load', 'dfehc_get_server_load_ajax_handler');
    184146
    185147function dfehc_calculate_server_load()
  • dynamic-front-end-heartbeat-control/trunk/heartbeat-async.php

    r3412927 r3412936  
    144144    return $load_pct;
    145145}
    146 
    147 function dfehc_get_server_load_ajax_handler(): void
    148 {
    149     $cap = apply_filters('dfehc_required_capability', DFEHC_CAPABILITY);
    150     $allow_public = (bool) apply_filters('dfehc_allow_public_server_load', false);
    151     if (!$allow_public) {
    152         $nonce_action = 'dfehc-get_server_load';
    153         $valid = function_exists('check_ajax_referer')
    154             ? check_ajax_referer($nonce_action, 'nonce', false)
    155             : wp_verify_nonce(isset($_REQUEST['nonce']) ? (string) $_REQUEST['nonce'] : '', $nonce_action);
    156         if (!$valid) {
    157             wp_send_json_error(['message' => 'dfehc/get_server_load: invalid nonce'], 403);
    158         }
    159         if (!current_user_can($cap)) {
    160             wp_send_json_error(['message' => 'dfehc/get_server_load: not authorized'], 403);
    161         }
    162     } else {
    163         $limit = absint(apply_filters('dfehc_public_rate_limit', 30));
    164         $window = absint(apply_filters('dfehc_public_rate_window', 60));
    165         $ip = dfehc_client_ip();
    166         $rl_key = dfehc_scoped_key('dfehc_rl_' . md5($ip));
    167         $cnt = (int) get_transient($rl_key);
    168         if ($cnt >= $limit) {
    169             wp_send_json_error(['message' => 'dfehc/get_server_load: rate limited'], 429);
    170         }
    171         dfehc_set_transient_noautoload($rl_key, $cnt + 1, $window);
    172     }
    173     $load = dfehc_get_or_calculate_server_load();
    174     if ($load === false) {
    175         wp_send_json_success(dfehc_fallback_interval());
    176     }
    177     $interval = dfehc_calculate_recommended_interval_user_activity((float) $load);
    178     if ($interval <= 0) {
    179         $interval = dfehc_fallback_interval();
    180     }
    181     wp_send_json_success($interval);
    182 }
    183 dfehc_register_ajax('get_server_load', 'dfehc_get_server_load_ajax_handler');
    184146
    185147function dfehc_calculate_server_load()
Note: See TracChangeset for help on using the changeset viewer.