Plugin Directory

Changeset 3489790


Ignore:
Timestamp:
03/24/2026 09:36:23 AM (3 days ago)
Author:
inilerm
Message:

Preparing version 8.9.5

Location:
advanced-ip-blocker/trunk
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • advanced-ip-blocker/trunk/advanced-ip-blocker.php

    r3487096 r3489790  
    44Plugin URI: https://advaipbl.com/
    55Description: Your complete WordPress security firewall. Blocks IPs, bots & countries. Includes an intelligent WAF, Threat Scoring, and Two-Factor Authentication.
    6 Version: 8.9.4
     6Version: 8.9.5
    77Author: IniLerm
    88Author URI: https://advaipbl.com/
     
    1919}
    2020
    21 define( 'ADVAIPBL_VERSION', '8.9.4' );
     21define( 'ADVAIPBL_VERSION', '8.9.5' );
    2222define( 'ADVAIPBL_PLUGIN_FILE', __FILE__ );
    2323
     
    118118
    119119function advaipbl_activate_plugin() {
    120     $instance = ADVAIPBL_Main::get_instance();
    121     $instance->setup_database_tables();
     120    // Ejecutar rutinas completas de activación (tablas BD, ajustes por defecto, transients)
     121    ADVAIPBL_Main::activate_plugin();
    122122   
    123123    // Disparar el asistente SOLO en instalaciones nuevas.
     
    129129    update_option( 'advaipbl_version_installed', ADVAIPBL_VERSION );
    130130   
    131     $instance->resync_block_transients();
    132    
    133     // Programar crons inmediatamente
     131    // Programar crons inmediatamente a través del manager
     132    $instance = ADVAIPBL_Main::get_instance();
    134133    if ( isset( $instance->cron_manager ) ) {
    135134        $instance->cron_manager->schedule_jobs();
  • advanced-ip-blocker/trunk/css/advaipbl-styles.css

    r3487096 r3489790  
    11/**
    22 * Advanced IP Blocker - Admin Panel Styles
    3  * Version: 8.9.4
     3 * Version: 8.9.5
    44 */
    55
  • advanced-ip-blocker/trunk/includes/class-advaipbl-action-handler.php

    r3481949 r3489790  
    351351    }
    352352
     353    if ( isset( $_SERVER['HTTP_CF_CONNECTING_IP'] ) ) {
     354        $options = get_option( ADVAIPBL_Main::OPTION_SETTINGS, [] );
     355        $options['trusted_proxies'] = "AS13335\nAS209242\n" . ( $options['trusted_proxies'] ?? '' );
     356        $proxies_list = array_unique( array_filter( array_map( 'trim', explode( "\n", $options['trusted_proxies'] ) ) ) );
     357        $options['trusted_proxies'] = implode( "\n", $proxies_list );
     358        update_option( ADVAIPBL_Main::OPTION_SETTINGS, $options );
     359    }
     360
    353361    // Redirigir al siguiente paso
    354362    wp_safe_redirect( admin_url( 'admin.php?page=advaipbl-setup-wizard&step=2' ) );
     
    376384            $merged_uas = array_unique( array_merge( $existing_uas, $default_uas ) );
    377385            update_option( ADVAIPBL_Main::OPTION_BLOCKED_UAS, $merged_uas );
    378         }
     386    } else {
     387        $options['enable_user_agent_blocking'] = '0';
     388    }
    379389
    380390    // Activar Honeypot si está marcado
     
    385395            $merged_honeypots = array_unique( array_merge( $existing_honeypots, $default_honeypots ) );
    386396            update_option( ADVAIPBL_Main::OPTION_HONEYPOT_URLS, $merged_honeypots );
    387         }
     397    } else {
     398        $options['enable_honeypot_blocking'] = '0';
     399    }
     400
     401    // Activar XML-RPC Smart Protection si está marcado
     402    if ( isset( $_POST['activate_xmlrpc_smart'] ) && $_POST['activate_xmlrpc_smart'] === '1' ) {
     403        $options['enable_xmlrpc_protection'] = 'smart';
     404    } else {
     405        $options['enable_xmlrpc_protection'] = '0';
     406    }
    388407
    389408    update_option( ADVAIPBL_Main::OPTION_SETTINGS, $options );
     
    410429        $options['enable_htaccess_write'] = '1';
    411430        $options['enable_htaccess_ip_blocking'] = '1';
     431        $options['enable_htaccess_all_ips'] = '1';
    412432        $options['htaccess_protect_system_files'] = '1';
    413433        $options['htaccess_protect_wp_config'] = '1';
     
    432452        $merged_rules = array_unique( array_merge( $existing_waf_rules, $default_waf_rules ) );
    433453        update_option( ADVAIPBL_Main::OPTION_WAF_RULES, implode("\n", $merged_rules) );
     454    } else {
     455        $options['enable_waf'] = '0';
    434456    }
    435457
    436458    if ( isset( $_POST['activate_rate_limiting'] ) && $_POST['activate_rate_limiting'] === '1' ) {
    437459        $options['rate_limiting_enable'] = '1';
     460    } else {
     461        $options['rate_limiting_enable'] = '0';
    438462    }
    439463   
     
    445469             wp_schedule_single_event(time() + 10, 'advaipbl_update_spamhaus_list_event');
    446470        }
     471    } else {
     472        $options['enable_spamhaus_asn'] = '0';
    447473    }
    448474   
     
    458484            // Refrescamos las opciones desde la BD por si register_site las ha modificado directamente.
    459485            $options = get_option( ADVAIPBL_Main::OPTION_SETTINGS, [] );
    460         }
     486           
     487            // Descargar la lista de IPs instantáneamente (100k+ list)
     488            $this->plugin->community_manager->update_list();
     489        }
     490    } else {
     491        $options['enable_community_network'] = '0';
     492        $options['enable_community_blocking'] = '0';
    461493    }
    462494   
     
    483515    if ( isset( $_POST['activate_threat_scoring'] ) && $_POST['activate_threat_scoring'] === '1' ) {
    484516        $options['enable_threat_scoring'] = '1';
     517    } else {
     518        $options['enable_threat_scoring'] = '0';
    485519    }
    486520
  • advanced-ip-blocker/trunk/includes/class-advaipbl-admin-pages.php

    r3487096 r3489790  
    29192919                    $admin_ip = $this->plugin->get_client_ip();
    29202920                    $server_ip = $this->plugin->get_server_ip();
     2921                    $is_cloudflare = isset($_SERVER['HTTP_CF_CONNECTING_IP']);
    29212922                ?>
    29222923
     
    29252926                    <p><strong><?php esc_html_e( 'Server IP Address:', 'advanced-ip-blocker' ); ?></strong> <code><?php echo esc_html($server_ip ?: 'Could not detect'); ?></code></p>
    29262927                </div>
     2928
     2929                <?php if ($is_cloudflare): ?>
     2930                    <div class="notice notice-success inline" style="margin-top: 15px;">
     2931                        <p><strong><?php esc_html_e( 'Cloudflare Detected!', 'advanced-ip-blocker' ); ?></strong> <?php esc_html_e( 'We noticed you are using Cloudflare. We will automatically configure the correct IP detection settings to prevent false blocks.', 'advanced-ip-blocker' ); ?></p>
     2932                    </div>
     2933                <?php else: ?>
     2934                    <div class="notice notice-info inline" style="margin-top: 15px;">
     2935                        <p><strong><?php esc_html_e( 'Using a Proxy/CDN?', 'advanced-ip-blocker' ); ?></strong> <?php esc_html_e( 'If your traffic goes through proxies like Sucuri or AWS ELB, you must configure Trusted Proxies in the Settings tab later to avoid blocking yourself.', 'advanced-ip-blocker' ); ?></p>
     2936                    </div>
     2937                <?php endif; ?>
    29272938
    29282939                <form method="post" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">
     
    29672978                            </label>
    29682979                        </div>
     2980                        <div class="wizard-option-item">
     2981                            <label>
     2982                                <input type="checkbox" name="activate_xmlrpc_smart" value="1" checked>
     2983                                <div>
     2984                                    <strong><?php esc_html_e( 'Enable Smart XML-RPC Protection', 'advanced-ip-blocker' ); ?></strong>
     2985                                    <p class="description"><?php esc_html_e( '(Recommended) Blocks brute-force attacks on xmlrpc.php while allowing legitimate services like Jetpack to function.', 'advanced-ip-blocker' ); ?></p>
     2986                                </div>
     2987                            </label>
     2988                        </div>
    29692989                       
    29702990                    </div>
     
    29813001                <h2><?php esc_html_e( 'Step 3: Activate Proactive Defenses', 'advanced-ip-blocker' ); ?></h2>
    29823002                <p><?php esc_html_e( 'Now let\'s enable the firewall to protect your site from more advanced attacks like SQL injection and prevent server overload from aggressive bots.', 'advanced-ip-blocker' ); ?></p>
    2983                 <form method="post" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">
     3003                <form id="advaipbl-wizard-step3-form" method="post" action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">
    29843004                    <input type="hidden" name="action" value="advaipbl_wizard_step_3">
    29853005                    <?php wp_nonce_field( 'advaipbl_wizard_step_3_nonce' ); ?>
     
    30223042                            </label>
    30233043                        </div>
    3024                         <div class="wizard-option-item">
     3044                        <div class="wizard-option-item">
    30253045                            <label>
    30263046                                <input type="checkbox" name="activate_community_network" value="1" checked>
     
    30333053                       
    30343054                    </div>
     3055                   
     3056                    <div class="notice notice-info inline" style="margin-top: 15px;">
     3057                        <p><strong><?php esc_html_e( 'Geolocation Note:', 'advanced-ip-blocker' ); ?></strong> <?php esc_html_e( 'Powered by ip-api.com for zero-setup convenience. For maximum privacy and local performance, we recommend switching to the MaxMind Local Database in the settings after completing this wizard.', 'advanced-ip-blocker' ); ?></p>
     3058                    </div>
     3059
    30353060                    <p class="submit">
    30363061                        <button type="submit" name="submit" class="button button-primary button-hero"><?php esc_html_e( 'Activate Proactive Defenses', 'advanced-ip-blocker' ); ?></button>
     
    31103135                    </a>
    31113136                </div>
    3112             </div>>
     3137            </div>
    31133138
    31143139            <?php
  • advanced-ip-blocker/trunk/includes/class-advaipbl-geolocation-manager.php

    r3434197 r3489790  
    6868        $main_instance = ADVAIPBL_Main::get_instance();
    6969        $provider = $main_instance->options['geolocation_provider'] ?? 'ip-api.com';
     70
     71        // Check Circuit Breaker (Global API Timeout)
     72        if ( get_transient( 'advaipbl_geo_api_down_' . $provider ) ) {
     73            return ['error' => true, 'error_message' => 'API is temporarily unreachable (Circuit Breaker Active)'];
     74        }
     75
    7076        $api_key_transient = get_transient('advaipbl_transient_api_key_' . $provider);
    7177        $api_key = $api_key_transient ?: ($main_instance->options['api_key_' . str_replace('.', '', $provider)] ?? '');
     
    98104        }
    99105
    100         $response = wp_remote_get($url, ['timeout' => 10]);
     106        // Limit timeout to 3 seconds instead of 10 to prevent hanging the whole site
     107        $response = wp_remote_get($url, ['timeout' => 3]);
    101108
    102109        if (is_wp_error($response)) {
     110            // Activate Circuit Breaker for 5 minutes if there's a connection error
     111            set_transient( 'advaipbl_geo_api_down_' . $provider, true, 5 * MINUTE_IN_SECONDS );
    103112            return ['error' => true, 'error_message' => $response->get_error_message()];
    104113        }
     
    108117
    109118        if (!$data) {
     119            // Activate Circuit Breaker for 5 minutes on malformed response
     120            set_transient( 'advaipbl_geo_api_down_' . $provider, true, 5 * MINUTE_IN_SECONDS );
    110121            return ['error' => true, 'error_message' => 'Invalid response from API.'];
    111122        }
  • advanced-ip-blocker/trunk/includes/class-advaipbl-main.php

    r3487096 r3489790  
    46244624        'maxmind_license_key' => '',
    46254625       
    4626         'enable_community_network' => '1', // Por defecto 0 hasta que el usuario acepte
     4626        'enable_community_network' => '0', // Por defecto 0 hasta que el usuario acepte o complete el Wizard
    46274627       
    46284628        // AIB Community Network
    4629         'enable_community_network' => '1',
    46304629        'enable_community_blocking' => '1',
    46314630        'community_blocking_action' => 'block',
  • advanced-ip-blocker/trunk/includes/class-advaipbl-settings-manager.php

    r3483567 r3489790  
    992992       
    993993        $defaults = $this->plugin->get_default_settings();
     994        // Base starting point is the EXISTING settings. This prevents wiping tabs that weren't submitted.
     995        $existing_options = get_option( ADVAIPBL_Main::OPTION_SETTINGS, [] );
     996        if ( ! is_array( $existing_options ) ) {
     997            $existing_options = [];
     998        }
     999        $new_input = $existing_options;
    9941000       
    9951001        $numeric_fields = [
    996             'duration_geoblock', 'duration_waf', 'duration_rate_limit', 'rate_limiting_limit', 'rate_limiting_window',
    997             'duration_xmlrpc_block', 'duration_asn', 'log_retention_days', 'threshold_404', 'duration_404', 'transient_expiration_404',
    998             'threshold_403', 'duration_403', 'transient_expiration_403', 'threshold_login',
    999             'duration_login', 'transient_expiration_login', 'duration_honeypot', 'duration_user_agent',
     1002            'threshold_404', 'duration_404', 'transient_expiration_404',
     1003            'threshold_403', 'duration_403', 'transient_expiration_403',
     1004            'threshold_login', 'duration_login', 'transient_expiration_login',
     1005            'duration_geoblock', 'duration_honeypot', 'duration_user_agent', 'duration_waf', 'duration_rate_limit',
     1006            'rate_limiting_limit', 'rate_limiting_window', 'duration_asn', 'duration_xmlrpc_block',
     1007            'rows_per_page', 'log_retention_days',
    10001008            'threat_score_threshold', 'duration_threat_score', 'score_404', 'score_403', 'score_login',
    10011009            'score_user_agent', 'score_waf', 'score_honeypot', 'score_asn', 'score_impersonation',
     
    10091017        ];
    10101018        foreach ($numeric_fields as $field) {
    1011             // Si el campo existe en el input, lo actualizamos. Si no, el valor antiguo se mantiene.
    10121019            if (isset($input[$field])) {
    10131020                $new_input[$field] = absint($input[$field]);
     
    10541061       
    10551062        foreach ($checkbox_fields as $field) {
    1056             // Para checkboxes, si existen en el input, es '1'. Si no, es '0'.
    1057             $new_input[$field] = (isset($input[$field]) && $input[$field] === '1') ? '1' : '0';
     1063            // Dado que hemos inyectado un input oculto, SIEMPRE recibiremos '0' o '1' si la pestaña fue enviada.
     1064            // Si el campo fue enviado en $input (0 o 1), actualizamos $new_input.
     1065            // Si no fue enviado en $input en absoluto (es decir, pertenece a OTRA pestaña no enviada), conservamos el valor previo en $new_input.
     1066            if (isset($input[$field])) {
     1067                $new_input[$field] = ( $input[$field] === '1' ) ? '1' : '0';
     1068            }
    10581069        }
    10591070     
     
    12361247       
    12371248        $html = sprintf(
    1238             '<label for="%s" class="advaipbl-switch">
     1249            '<!-- HIDDEN FALLBACK FOR WP SETTINGS API -->
     1250             <input type="hidden" name="%s" value="0" />
     1251             <label for="%s" class="advaipbl-switch">
    12391252                <input type="checkbox" name="%s" id="%s" value="1" %s />
    12401253                <span class="advaipbl-slider"></span>
    12411254            </label>',
     1255            esc_attr( 'advaipbl_settings[' . $args['name'] . ']' ),
    12421256            esc_attr( $id_attr ),
    12431257            esc_attr( 'advaipbl_settings[' . $args['name'] . ']' ),
  • advanced-ip-blocker/trunk/js/admin-settings.js

    r3487096 r3489790  
    919919    }
    920920
     921    function initWizardEnhancements() {
     922        $('#advaipbl-wizard-step3-form').on('submit', function() {
     923            var $form = $(this);
     924            var $btn = $form.find('button[type="submit"]');
     925            var $checkbox = $form.find('input[name="activate_community_network"]');
     926           
     927            // Only protect if they are indeed enabling the network
     928            if ($checkbox.is(':checked')) {
     929                // If the user already clicked, don't submit again
     930                if ($btn.prop('disabled')) {
     931                    return false;
     932                }
     933                var activeText = (adminData.text && adminData.text.verifying_api) ? adminData.text.verifying_api : 'Activating & Downloading Threat List...';
     934                $btn.prop('disabled', true).text(activeText);
     935            }
     936        });
     937    }
     938
     939    initWizardEnhancements();
    921940    initWhitelistAjaxButton();
    922941
  • advanced-ip-blocker/trunk/languages/advanced-ip-blocker-es_ES.po

    r3487096 r3489790  
    55"blocker\n"
    66"POT-Creation-Date: 2025-07-22 14:47+0200\n"
    7 "PO-Revision-Date: 2026-03-19 10:36+0100\n"
     7"PO-Revision-Date: 2026-03-23 12:01+0100\n"
    88"Last-Translator: \n"
    99"Language-Team: \n"
     
    82438243"más de 100.000 IP, vaya a la configuración del plugin y <a "
    82448244"href=\"%s\">Registre AIB Network Integration</a>."
     8245
     8246#: includes/class-advaipbl-admin-pages.php
     8247msgid "Cloudflare Detected!"
     8248msgstr "¡Cloudflare detectado!"
     8249
     8250#: includes/class-advaipbl-admin-pages.php
     8251msgid ""
     8252"We noticed you are using Cloudflare. We will automatically configure the "
     8253"correct IP detection settings to prevent false blocks."
     8254msgstr ""
     8255"Hemos detectado que utilizas Cloudflare. Configuraremos automáticamente los "
     8256"ajustes de detección de IP para evitar bloqueos erróneos."
     8257
     8258#: includes/class-advaipbl-admin-pages.php
     8259msgid "Using a Proxy/CDN?"
     8260msgstr "¿Utilizas un proxy/CDN?"
     8261
     8262#: includes/class-advaipbl-admin-pages.php
     8263msgid ""
     8264"If your traffic goes through proxies like Sucuri or AWS ELB, you must "
     8265"configure Trusted Proxies in the Settings tab later to avoid blocking "
     8266"yourself."
     8267msgstr ""
     8268"Si su tráfico pasa por servidores proxy como Sucuri o AWS ELB, deberá "
     8269"configurar los Proxies de confianza en la pestaña Configuración más adelante "
     8270"para evitar bloqueos."
     8271
     8272#: includes/class-advaipbl-admin-pages.php
     8273msgid "Enable Smart XML-RPC Protection"
     8274msgstr "Habilitar la protección inteligente de XML-RPC"
     8275
     8276#: includes/class-advaipbl-admin-pages.php
     8277msgid ""
     8278"(Recommended) Blocks brute-force attacks on xmlrpc.php while allowing "
     8279"legitimate services like Jetpack to function."
     8280msgstr ""
     8281"(Recomendado) Bloquea los ataques de fuerza bruta en xmlrpc.php, al tiempo "
     8282"que permite que funcionen servicios legítimos como Jetpack."
     8283
     8284#: includes/class-advaipbl-admin-pages.php
     8285msgid "Geolocation Note:"
     8286msgstr "Nota de geolocalización:"
     8287
     8288#: includes/class-advaipbl-admin-pages.php
     8289msgid ""
     8290"Powered by ip-api.com for zero-setup convenience. For maximum privacy and "
     8291"local performance, we recommend switching to the MaxMind Local Database in "
     8292"the settings after completing this wizard."
     8293msgstr ""
     8294"Con tecnología de ip-api.com para una configuración sencilla. Para obtener "
     8295"la máxima privacidad y rendimiento local, recomendamos cambiar a la base de "
     8296"datos local de MaxMind en la configuración tras completar este asistente."
     8297
     8298#: js/admin-settings.js
     8299msgid "Activating & Downloading Threat List..."
     8300msgstr "Activando y descargando la lista de amenazas..."
    82458301
    82468302#~ msgid "Installed Themes Analysis"
  • advanced-ip-blocker/trunk/languages/advanced-ip-blocker.pot

    r3487096 r3489790  
    44msgid ""
    55msgstr ""
    6 "Project-Id-Version: Advanced IP Blocker 8.9.4\n"
     6"Project-Id-Version: Advanced IP Blocker 8.9.5\n"
    77"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/advanced-ip-blocker\n"
    88"POT-Creation-Date: 2025-07-22 14:47+0200\n"
     
    74887488msgid "<strong>Advanced IP Blocker:</strong> You are receiving a limited community threat feed (50,000 IPs). To increase your protection level to 100,000+ IPs, please go to the plugin settings and <a href=\"%s\">Register the AIB Network Integration</a>."
    74897489msgstr ""
     7490
     7491#: includes/class-advaipbl-admin-pages.php
     7492msgid "Cloudflare Detected!"
     7493msgstr ""
     7494
     7495#: includes/class-advaipbl-admin-pages.php
     7496msgid "We noticed you are using Cloudflare. We will automatically configure the correct IP detection settings to prevent false blocks."
     7497msgstr ""
     7498
     7499#: includes/class-advaipbl-admin-pages.php
     7500msgid "Using a Proxy/CDN?"
     7501msgstr ""
     7502
     7503#: includes/class-advaipbl-admin-pages.php
     7504msgid "If your traffic goes through proxies like Sucuri or AWS ELB, you must configure Trusted Proxies in the Settings tab later to avoid blocking yourself."
     7505msgstr ""
     7506
     7507#: includes/class-advaipbl-admin-pages.php
     7508msgid "Enable Smart XML-RPC Protection"
     7509msgstr ""
     7510
     7511#: includes/class-advaipbl-admin-pages.php
     7512msgid "(Recommended) Blocks brute-force attacks on xmlrpc.php while allowing legitimate services like Jetpack to function."
     7513msgstr ""
     7514
     7515#: includes/class-advaipbl-admin-pages.php
     7516msgid "Geolocation Note:"
     7517msgstr ""
     7518
     7519#: includes/class-advaipbl-admin-pages.php
     7520msgid "Powered by ip-api.com for zero-setup convenience. For maximum privacy and local performance, we recommend switching to the MaxMind Local Database in the settings after completing this wizard."
     7521msgstr ""
     7522
     7523#: js/admin-settings.js
     7524msgid "Activating & Downloading Threat List..."
     7525msgstr ""
  • advanced-ip-blocker/trunk/readme.txt

    r3487096 r3489790  
    66Requires at least: 6.7
    77Tested up to: 6.9
    8 Stable tag: 8.9.4
     8Stable tag: 8.9.5
    99Requires PHP: 8.1
    1010License: GPLv2 or later
     
    227227== Changelog ==
    228228
     229= 8.9.5 =
     230*   **NEW SETUP WIZARD:** Redesigned the onboarding experience with "Zero Friction". Automatic proxy detection for Cloudflare (`HTTP_CF_CONNECTING_IP`) is now included, securing accurate visitor IP identification instantly.
     231*   **ENHANCEMENT:** Proactive AIB Network V3 Activation. Upon user consent, the wizard seamlessly registers your API Key and bulk downloads the latest active threat list (100k+ IPs) in the background with clear progress indicators, avoiding any disruption.
     232*   **SECURITY HARDENING:** XML-RPC settings are now set to "Smart Protection" by default, improving the security posture out-of-the-box.
     233*   **TRANSPARENCY:** Included detailed privacy notes regarding the usage of MaxMind versus `ip-api.com` for local geolocation databases.
     234*   **UX IMPROVEMENT:** The "Blocked Countries" Select2 dropdown now hides already selected regions natively, vastly improving usability for multi-site and complex configurations.
     235
    229236= 8.9.4 =
    230237*   **CRITICAL FIX:** Resolved an issue where the Site Health & Vulnerability Scanner could fail to download the latest threat definitions due to Wordfence API V2 deprecation. Successfully migrated to the Wordfence V3 API with secure authentication.
     
    260267== Upgrade Notice ==
    261268
     269= 8.9.5 =
     270**ZERO FRICTION ONBOARDING & UX UPGRADE:** The Setup Wizard has been overhauled! Version 8.9.5 introduces automated proxy detection, seamless background threat list downloading, and a heavily requested fix to the Geolocation Select2 UI. We highly recommend upgrading to streamline your initial security configuration.
     271
    262272= 8.9.4 =
    263273**SECURITY & UX UPDATE:** Essential fix for the Vulnerability Scanner to restore automated threat definition downloads via the new Wordfence V3 API. Also includes major UX improvements to the AIB Community Network registration flow. Update recommended.
  • advanced-ip-blocker/trunk/uninstall.php

    r3481949 r3489790  
    187187        // Security Headers
    188188        'advaipbl_security_headers', // Added from SQL dump
     189       
     190        // System Flags
     191        'advaipbl_flush_firewalls_needed',
    189192    ];
    190193   
     
    248251    // Added from SQL dump
    249252    'advaipbl_update_community_list_event',
    250     'advaipbl_community_report_event_v2'
     253    'advaipbl_community_report_event_v2',
     254    'advaipbl_cloudflare_sync_event',
     255    'advaipbl_clear_expired_blocks_event'
    251256];
    252257// phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
Note: See TracChangeset for help on using the changeset viewer.