Title: Grey Rock Block Synchroniser for Wordfence and Cloudflare
Author: Greyscale Zone
Published: <strong>13 Juli 2026</strong>
Last modified: 28 September 2026

---

Cari plugin

![](https://ps.w.org/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/assets/
banner-772x250.png?rev=3607532)

![](https://ps.w.org/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/assets/
icon-256x256.png?rev=3607532)

# Grey Rock Block Synchroniser for Wordfence and Cloudflare

 Oleh [Greyscale Zone](https://profiles.wordpress.org/greyscalezone/)

[Unduh](https://downloads.wordpress.org/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare.1.3.10.zip)

 * [Detail](https://id.wordpress.org/plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/#description)
 * [Ulasan](https://id.wordpress.org/plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/#reviews)
 *  [Instalasi](https://id.wordpress.org/plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/#installation)
 * [Pengembangan](https://id.wordpress.org/plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/#developers)

 [Bantuan](https://wordpress.org/support/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/)

## Deskripsi

Grey Rock Block Synchroniser for Wordfence and Cloudflare sends qualifying Wordfence
firewall blocks to Cloudflare so hostile traffic can be stopped at Cloudflare’s 
network edge before it reaches the WordPress server.

#### Why Grey Rock?

The name Grey Rock is inspired by the grey rock method: becoming uninteresting and
unrewarding to someone seeking attention or a reaction.

Grey Rock applies that concept to hostile website traffic. Wordfence identifies 
qualifying blocked IP addresses, and Grey Rock synchronises them with Cloudflare.
Cloudflare can then stop those addresses at the network edge before their requests
reach WordPress.

The objective is simple: make your website boring to repeat attackers. Instead of
allowing the same hostile traffic to keep reaching the server, Grey Rock helps the
site respond with less exposure, less interaction and fewer consumed server resources.

Grey Rock does not replace Wordfence, Cloudflare or a layered security program. 
It connects them so qualifying Wordfence blocks can be enforced earlier, closer 
to the source of the traffic.

The plugin supports two Cloudflare destinations.

#### Zone Access Rules

Creates Cloudflare IP block rules for one zone.

Use this mode when Wordfence blocks should protect one Cloudflare zone.

#### Account IP List

Adds IP addresses to a reusable Cloudflare account-level IP list.

Use this mode when several domains or Cloudflare zones should share the same list.

An Account IP List does not block traffic by itself. You must create a Cloudflare
Custom Rule with the Block action in every zone that should use the list.

Example rule:

    ```
    ip.src in $wordfence_hot_blocklist
    ```

The recommended list name is:

    ```
    wordfence_hot_blocklist
    ```

#### Current and historical Wordfence blocks

The plugin can synchronise:

 * Current Wordfence IP blocks through `wfBlock::ipBlocks(true)`.
 * Historical Wordfence Web Application Firewall events recorded as `blocked:waf`.

Historical synchronisation is configurable:

 * Lookback period: 1, 3, 6, 12 or 24 hours.
 * Minimum blocked events per IP address: 1 through 100.
 * Default lookback: 24 hours.
 * Default threshold: 1 event.

Repeated events from the same address are deduplicated before synchronisation.

Invalid, private and reserved IP addresses are rejected during historical-event 
processing.

#### DDNS-resolved administrator allow list

The optional administrator allow list is intended for administrators
 whose public
address changes and is already maintained by a DDNS provider.

Enter a hostname only, for example:

    ```
    admin.example.com
    ```

Do not enter a URL, path or port.

Grey Rock does not create or update DNS records. It also does not provide a DDNS
service or require DNS editing permission.

If Cloudflare hosts the DDNS record, configure the dedicated hostname
 as DNS only.
A proxied hostname returns Cloudflare proxy addresses instead of the administrator’s
actual public address.

Grey Rock resolves public A and AAAA records. Private, loopback,
 link-local, reserved
and invalid addresses are rejected. Multiple valid public results are displayed 
and handled separately.

Configuration procedure:

 1. Confirm that the DDNS hostname returns the administrator’s current
     public address.
 2. Enter the hostname in **DDNS domain**.
 3. Select **Save settings and resolve now**.
 4. Confirm the read-only **Resolved addresses** values.
 5. Select **Administrator allow list**.
 6. Save the settings.
 7. Run synchronisation or wait for the next scheduled run.

When enabled, the resolved addresses are excluded from current and
 historical Wordfence
candidates.

During synchronisation, Grey Rock removes those addresses from the
 configured Cloudflare
Account IP List or Zone Access Rules destination. Related local synchronisation 
records are cleared only after Cloudflare confirms the required final state.

A failed Cloudflare removal causes the synchronisation to fail so a
 later run can
retry.

Grey Rock refreshes the lookup when settings are saved and before
 synchronisation
when the previous attempt is at least five minutes old.

A temporary DNS failure retains the last successful addresses for up
 to 24 hours.
After that period, no stored address remains effective until resolution succeeds.

A successful lookup replaces the old address set. Previous addresses
 are no longer
trusted after DNS returns a different set.

IPv4 and IPv6 addresses remain exact individual addresses. Grey Rock
 does not expand
IPv6 addresses to `/64` and does not create inferred CIDR allow-list entries.

In multisite, Network Admin may provide one shared DDNS hostname for
 all inheriting
sites. Site-specific configurations may use a separate hostname.

A DNS-only DDNS hostname exposes its current public address through
 DNS. Use a 
dedicated non-web hostname and consider that disclosure before enabling the feature.

#### Scheduling

Grey Rock supports three scheduling methods:

 * WordPress WP-Cron schedules synchronization inside WordPress.
 * External scheduler removes Grey Rock’s synchronization WP-Cron event and permits
   a system scheduler to invoke WP-CLI.
 * Manual synchronization only disables automatic synchronization while retaining
   the GUI buttons and forced WP-CLI commands.

Available intervals are every minute, every 5 minutes, every 15 minutes and hourly.

WP-Cron is request-driven. Selecting every minute makes synchronization eligible
every minute but does not guarantee execution at an exact minute boundary.

External scheduling does not require Docker. An ordinary WordPress installation 
can use:

    ```
    wp --path=/var/www/html grey-rock-block-synchroniser-for-wordfence-and-cloudflare sync-site --due
    ```

A multisite network can use:

    ```
    wp --path=/var/www/html grey-rock-block-synchroniser-for-wordfence-and-cloudflare sync-network --due

    sync-network processes only sites inheriting Network Admin settings. A selected multisite site can use `sync-site` with WP-CLI's `--url` parameter.
    ```

An external scheduler may check every minute. The `--due` command reads the GUI 
interval and exits successfully without synchronizing when the interval has not 
elapsed or External scheduler is not selected.

The GUI buttons and `--force` commands run immediately regardless of scheduling 
method or interval. Every attempt, including a manual or failed attempt, resets 
the due interval.

A site-level atomic lock prevents overlapping synchronization. An abandoned lock
becomes stale after 15 minutes.

Selecting External scheduler or Manual synchronization only removes only Grey Rock’s
synchronization event. It does not disable WordPress cron globally.

Cleanup is separate maintenance and remains scheduled hourly in all three modes.

Complete systemd, traditional cron, hosting control-panel and optional Docker Compose
examples are provided in the GitHub README.

#### Multisite support

When network activated:

 * Network Admin can provide shared Cloudflare settings.
 * Individual sites may inherit the network configuration.
 * Site-specific overrides can be permitted by Network Admin.
 * Network Admin provides a Synchronise Network Now action.
 * Each site has a Synchronisation Log containing only that site’s records, including
   when it inherits Network Admin configuration.
 * Network Admin provides a combined Synchronisation Log containing recent records
   from every site.
 * Individual sites retain their own synchronisation logs and manual IP block pages.
 * Sites using independent settings retain their own site-level controls.

#### Manual management and diagnostics

The plugin provides:

 * Cloudflare configuration validation.
 * A diagnostic add-and-remove test.
 * Manual account-list add and remove controls.
 * A required reason for manually added account-list entries.
 * Manual site-level IP blocking.
 * Synchronisation logs.
 * Cleanup and reconciliation where Cloudflare-entry ownership is isolated to one
   site.

#### Wordfence compatibility

Grey Rock supports only the current Wordfence release. Older Wordfence releases 
are intentionally unsupported.

At the time of this compatibility update, the supported Wordfence release is 9.0.0.

Active IP blocks are read through `wfBlock::ipBlocks(true)`. Historical WAF events
are read from the table returned by `wfDB::networkTable('wfHits')`, allowing Wordfence
to resolve the correct network prefix and table-name case.

Removed Wordfence interfaces such as `wfBlock::getBlocks()` are not used.

If a required current Wordfence interface is unavailable, Grey Rock reports synchronization
failure instead of silently continuing with partial Wordfence data.

A future Wordfence release may change these interfaces. Grey Rock will be updated
for the then-current Wordfence release rather than maintaining compatibility branches
for older Wordfence versions.

#### Independence and trademarks

Grey Rock Block Synchroniser for Wordfence and Cloudflare is developed independently
by Greyscale Zone.

This plugin is not affiliated with, endorsed by or sponsored by Wordfence or Cloudflare.
Wordfence and Cloudflare are trademarks of their respective owners.

### External services

This plugin connects to the Cloudflare API when an administrator:

 * Validates saved Cloudflare settings.
 * Runs a diagnostic block test.
 * Manually adds or removes an IP address.
 * Runs synchronisation, cleanup or reconciliation.
 * Allows a WP-Cron or external-scheduler synchronization, or an hourly cleanup 
   event, to run.
 * Resolves a configured DDNS hostname through the WordPress server’s DNS resolver.

The Cloudflare API is required because the plugin’s purpose is to create and remove
Cloudflare firewall entries.

Depending on the configured mode and operation, the plugin sends some or all of 
the following data to Cloudflare:

 * The Cloudflare API token in an HTTPS Authorization header.
 * Cloudflare Account ID.
 * Cloudflare Zone ID.
 * Cloudflare account-list name or internal list identifier.
 * Public IPv4 or IPv6 addresses blocked by Wordfence.
 * A short comment describing the Wordfence or manual block reason.
 * Cloudflare list-item or firewall-rule identifiers when removing entries.

The plugin retrieves Cloudflare account lists, list items and firewall access rules
so it can validate settings, avoid duplicates, reconcile state and remove entries.

Communication is sent directly from the WordPress server to Cloudflare over HTTPS
using the WordPress HTTP API.

DDNS lookups use the DNS resolver configured for the WordPress server. The resolver
operator may receive the queried hostname and ordinary DNS request metadata. The
DNS lookup does not include the Cloudflare API token and does not update the DNS
record.

The plugin does not send WordPress post content, user passwords, email addresses
or the Cloudflare token to Greyscale Zone. It does not provide Greyscale Zone with
telemetry or usage analytics.

By configuring and using Cloudflare functions in this plugin, the administrator 
directs the plugin to transmit the described information to Cloudflare.

Cloudflare Terms of Service:

https://www.cloudflare.com/terms/

Cloudflare Privacy Policy:

https://www.cloudflare.com/privacypolicy/

Cloudflare API documentation:

https://developers.cloudflare.com/api/

### Privacy

The plugin stores its configuration in the WordPress database. This includes the
Cloudflare API token and Cloudflare identifiers entered by an administrator.

The plugin stores synchronised public IP addresses, block reasons, timestamps, expiration
information and retry state in a site-specific WordPress database table.

When DDNS lookup is configured, the plugin also stores the hostname, the most recently
accepted public addresses, lookup timestamps, lookup status and a safe error message
in WordPress options.

IP addresses may constitute personal data under some privacy laws. Site administrators
are responsible for establishing a lawful basis, retention policy and appropriate
disclosure for their use of Wordfence, Cloudflare and this plugin.

Historical entries receive an expiration based on the configured lookback period.
Temporary active Wordfence blocks may use the Wordfence expiration time.

Manually added Cloudflare account-list entries remain until an authorised administrator
or another authorised Cloudflare operation removes them.

Uninstalling the plugin removes its local plugin options and tables according to
the included uninstall routine. It does not automatically remove every entry previously
sent to Cloudflare. Administrators should review the Cloudflare destination when
permanently discontinuing the plugin.

## Tangkapan Layar

[⌊Configure Cloudflare Account IP List mode, synchronisation interval, historical
WAF lookback, and block threshold from Network Admin.⌉⌊Configure Cloudflare Account
IP List mode, synchronisation interval, historical WAF lookback, and block threshold
from Network Admin.⌉[

Configure Cloudflare Account IP List mode, synchronisation interval, historical 
WAF lookback, and block threshold from Network Admin.

[⌊Validate the Cloudflare configuration, test blocking, manage list entries manually,
and synchronise the multisite network.⌉⌊Validate the Cloudflare configuration, test
blocking, manage list entries manually, and synchronise the multisite network.⌉[

Validate the Cloudflare configuration, test blocking, manage list entries manually,
and synchronise the multisite network.

[⌊Review recent site-specific synchronisation activity across the WordPress multisite
network.⌉⌊Review recent site-specific synchronisation activity across the WordPress
multisite network.⌉[

Review recent site-specific synchronisation activity across the WordPress multisite
network.

[⌊View the Cloudflare Account IP List created and maintained by Grey Rock Block 
Synchroniser.⌉⌊View the Cloudflare Account IP List created and maintained by Grey
Rock Block Synchroniser.⌉[

View the Cloudflare Account IP List created and maintained by Grey Rock Block Synchroniser.

[⌊Review synchronised and manually managed IP addresses stored in the configured
Cloudflare list.⌉⌊Review synchronised and manually managed IP addresses stored in
the configured Cloudflare list.⌉[

Review synchronised and manually managed IP addresses stored in the configured Cloudflare
list.

[⌊Configure a Cloudflare Custom Rule to block requests from addresses contained 
in the synchronised IP list.⌉⌊Configure a Cloudflare Custom Rule to block requests
from addresses contained in the synchronised IP list.⌉[

Configure a Cloudflare Custom Rule to block requests from addresses contained in
the synchronised IP list.

## Instalasi

 1. Install and activate the current Wordfence release.
 2. Install and activate Grey Rock Block Synchroniser for Wordfence and Cloudflare.
 3. Open **Grey Rock Block Synchroniser** in WordPress Admin.
 4. For shared multisite settings, open the plugin in Network Admin.

#### Recommended Account IP List setup

 1.  In Cloudflare, open **Settings  Configurations  Lists**.
 2.  Select **Create new list**.
 3.  Create an IP list named `wordfence_hot_blocklist`.
 4.  Create a restricted Cloudflare custom API token.
 5.  Add **Account  Account Filter Lists  Edit**.
 6.  Restrict the token to the account that owns the list.
 7.  Copy the API token.
 8.  Copy the Account ID from the Cloudflare account or zone Overview page.
 9.  In Grey Rock, select **Account IP List**.
 10. Enter the API token, Account ID and List Name.
 11. Enter the List Name without the dollar sign.
 12. Select the scheduling method, interval, historical lookback and event threshold.
 13. Optionally enter a DNS-only hostname in **DDNS domain**.
 14. Optionally select **Administrator allow list**.
 15. Save the settings and confirm the read-only resolved addresses.
 16. Select **Validate Saved Cloudflare Configuration**.
 17. Run a test block using a safe public IP address.

The token does not need DNS editing permission. Do not use a Global API Key.

#### Create the Cloudflare blocking rule

An Account IP List does not block traffic by itself.

Repeat these steps in every protected Cloudflare zone:

 1. Open **Security rules  Create rule  Custom rules**.
 2. Enter a descriptive rule name.
 3. Enter `ip.src in $wordfence_hot_blocklist`.
 4. Select **Block** as the action.
 5. Deploy the rule.

In the older Cloudflare dashboard, use **Security  WAF  Custom rules**.

#### Verify operation

 1. Select **Sync Now** or **Synchronise Network Now**.
 2. Confirm that qualifying addresses appear in the Cloudflare list.
 3. Open **Synchronisation Log**.
 4. Confirm that Site Admin shows only the current site’s records.
 5. Confirm that Network Admin combines records from every site.

A site keeps its own Synchronisation Log when it uses Network Admin configuration.
Configuration inheritance does not expose another site’s records in Site Admin.

#### Zone Access Rules alternative

For one zone, select **Zone Access Rules** and create a token with:

 * Zone  Firewall Services  Edit
 * Zone  Zone  Read

Enter the token and Zone ID in Grey Rock. This mode does not use an account list
or a Custom Rule.

## Tanya Jawab

### Does Grey Rock update my DDNS record?

No. The existing DDNS provider remains responsible for updating DNS.
 Grey Rock 
only reads the hostname’s public A and AAAA results.

### Why must a Cloudflare-hosted DDNS hostname be DNS only?

A proxied hostname returns Cloudflare proxy addresses. Grey Rock needs
 the administrator’s
actual public address, so the dedicated DDNS hostname must be DNS only.

### When is a trusted address removed from Cloudflare?

Saving the settings performs the DNS lookup. Removal occurs during the
 next synchronisation.
The address is also excluded from future current and historical Wordfence candidates.

### What happens when DNS temporarily fails?

The last successful public addresses remain trusted for up to 24
 hours. After that
grace period, no stored address remains effective until a lookup succeeds.

### What happens when the DDNS address changes?

A successful lookup replaces the previous address set. The new exact
 addresses 
become trusted and the old addresses are no longer included in the administrator
allow list.

### Does Grey Rock create an IPv6 /64 allow-list entry?

No. Each resolved IPv6 address remains an exact individual address.

### Does the plugin require a Cloudflare Global API Key?

No. Use a restricted Cloudflare API token.

### Does an Account IP List block traffic by itself?

No. Create a Cloudflare Custom Rule with the Block action in every zone that should
use the list.

### Can one Cloudflare list protect several domains?

Yes. Account IP List mode can maintain one reusable account-level list. Each Cloudflare
zone must have a Custom Rule that references the list.

### Does the plugin synchronise historical Wordfence firewall events?

Yes. It reads qualifying Wordfence WAF events recorded as `blocked:waf` within the
configured lookback period.

### What historical lookback periods are available?

1, 3, 6, 12 and 24 hours.

### Can I require several Wordfence block events before an IP is sent to Cloudflare?

Yes. The historical block threshold accepts whole numbers from 1 through 100.

### What happens if the required Wordfence interface is unavailable?

Synchronization fails and reports the compatibility problem. Grey Rock supports 
only the current Wordfence release and does not fall back to removed interfaces 
from older Wordfence versions.

### Does the plugin support WordPress multisite?

Yes. It supports shared Network Admin settings, optional site-specific overrides,
network synchronisation for inheriting sites and a combined Network Admin synchronisation
log.

### Why are cleanup and reconciliation unavailable on some inheriting sites?

An inheriting site may share a Cloudflare destination with other sites. Its local
log cannot determine whether another site still requires the same Cloudflare entry.

### Does the every-minute interval run at an exact time?

Not necessarily when WordPress WP-Cron is selected. WP-Cron is request-driven and
may run late. Use External scheduler with a reliable system scheduler when timing
must not depend on WordPress traffic.

### Is Docker required for external scheduling?

No. The plugin provides ordinary WP-CLI commands. Docker Compose is only an optional
deployment-specific wrapper.

### How does an external scheduler use the GUI interval?

The scheduler may invoke `sync-site --due` or `sync-network --due` every minute.
Grey Rock reads the selected GUI interval and exits successfully without synchronizing
until that interval has elapsed.

### What is the difference between –due and –force?

–due works only with External scheduler and obeys the configured interval. `--force`
runs immediately regardless of the scheduling method or interval.

### What happens after a manual or failed synchronization attempt?

Grey Rock records the start of every attempt. The next `--due` invocation waits 
until the configured interval has elapsed, even when the previous attempt failed
or was started manually.

### How are overlapping runs prevented?

Each site acquires an atomic synchronization lock. An abandoned lock becomes stale
after 15 minutes.

### Does External scheduler disable all WordPress cron events?

No. It removes only Grey Rock’s synchronization event. Hourly Grey Rock cleanup 
remains scheduled, and other WordPress cron events are unaffected.

### How do I return to WordPress WP-Cron?

Disable the external system timer or cron job, select WordPress WP-Cron in Grey 
Rock settings, select the required interval and save the settings.

### Does uninstalling the plugin remove Cloudflare entries?

No. Review and remove unwanted Cloudflare rules or list entries separately after
uninstalling the plugin.

### Is the plugin affiliated with Wordfence or Cloudflare?

No.

## Ulasan

![](https://secure.gravatar.com/avatar/85850270d87acffbb3f90f09162d4c6c8446aa12bccf376bd4e3dc2357a70bee?
s=60&d=retro&r=g)

### 󠀁[Great plugin for Wordfence and Cloudflare! 🚀](https://wordpress.org/support/topic/great-plugin-for-wordfence-and-cloudflare-%f0%9f%9a%80/)󠁿

 [Stefan](https://profiles.wordpress.org/futterlino/) 9 Oktober 2026

Makes working with Wordfence and Cloudflare much easier. A practical solution that
saves time and helps improve website security. Thanks to the developer for the great
work and continued improvements!

 [ Baca semua 1 ulasan ](https://wordpress.org/support/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/reviews/)

## Kontributor & Pengembang

“Grey Rock Block Synchroniser for Wordfence and Cloudflare” adalah perangkat lunak
open source. Berikut ini mereka yang sudah berkontribusi pada plugin ini.

Kontributor

 *   [ Greyscale Zone ](https://profiles.wordpress.org/greyscalezone/)

“Grey Rock Block Synchroniser for Wordfence and Cloudflare” telah diterjemahkan 
dalam 2 bahasa. Terima kasih kepada [para penerjemah](https://translate.wordpress.org/projects/wp-plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/contributors)
untuk kontribusi-nya.

[Terjemahkan “Grey Rock Block Synchroniser for Wordfence and Cloudflare” dalam bahasa Anda.](https://translate.wordpress.org/projects/wp-plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare)

### Tertarik mengembangkan?

[Lihat kode](https://plugins.trac.wordpress.org/browser/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/),
periksa [repositori SVN ](https://plugins.svn.wordpress.org/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/),
atau mendaftar ke [log pengembangan](https://plugins.trac.wordpress.org/log/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/)
melalui [RSS](https://plugins.trac.wordpress.org/log/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/?limit=100&mode=stop_on_copy&format=rss).

## Log Perubahan

#### 1.3.10

 * Fixed historical Wordfence WAF evidence being suppressed by a successful synchronization
   timestamp, which could cause still-valid Wordfence-owned blocks to be removed
   from Cloudflare during ownership reconciliation.
 * Preserved explicit reset-watermark behavior so intentionally cleared evidence
   remains suppressed while current historical evidence continues to represent Wordfence
   desired state.
 * Expanded historical-evidence regression coverage and renamed the regression test
   to reflect its current purpose.

#### 1.3.9

 * Fixed permanent synchronization records being stored with a zero-date expiration
   instead of SQL NULL, which could cause successful permanent blocks to disappear
   from the Synchronisation Log during cleanup.
 * Added explicit handling for synchronization-log database write failures so Cloudflare
   success is not reported as a complete synchronization when local state could 
   not be recorded.
 * Added regression and WordPress/MariaDB integration coverage for permanent synchronization
   persistence.

#### 1.3.8

 * Fixed synchronization of permanent manual Wordfence IP blocks and added ownership
   tracking for Wordfence, manual and shared-network block sources.
 * Removed Cloudflare blocks when the corresponding Wordfence block is removed, 
   while preserving blocks still required by another legitimate owner.
 * Fixed Sync Now, Run Cleanup Now and Run Reconciliation Now buttons being incorrectly
   disabled when WP-Cron scheduling is selected.
 * Added persistent Last Sync Status and Last Sync Error reporting so scheduled 
   WP-Cron failures remain visible after the cron request completes.
 * Preserved DDNS trusted-address removal and expanded regression, integration and
   live Cloudflare coverage for ownership and removal behavior.
 * Updated the security workflow to upgrade Semgrep before scanning and include 
   untracked source files in pre-release SAST coverage.

#### 1.3.7

 * Fixed multisite attribution for active Wordfence automatic and rate-limit blocks.
 * Active network-wide Wordfence blocks are now logged only for the site with matching
   Wordfence request evidence.
 * Preserved network-wide Cloudflare enforcement while preventing false synchronization-
   log attribution across unrelated sites.
 * Added regression coverage for active-block multisite attribution.

#### 1.3.6

 * Added sortable Synchronisation Log columns for Site, IP Address, Reason and Recorded
   time in Network Admin, with IP Address, Reason and Recorded sorting in Site Admin.
 * Added filtering by site, IP address, reason and recorded-date range in Network
   Admin, with equivalent IP, reason and date filtering in individual site logs.
 * Added Reset controls that restore the unfiltered newest-record-first view.
 * Corrected IP-address sorting so IPv4 and IPv6 addresses are ordered by address
   value rather than lexical text order.
 * Added regression coverage for Synchronisation Log sorting, filtering, reset behavior
   and IP-address ordering.

#### 1.3.5

 * Added contextual success and error feedback beside administrative action buttons
   while retaining the standard WordPress top-of-page notices.
 * Corrected the Cloudflare Validate and Test controls so their form ownership is
   preserved when the administration JavaScript relocates them for presentation.
 * Added responsive inline WordPress notice presentation with status and alert semantics
   for clearer and more accessible action feedback.
 * Added mandatory regression coverage for contextual feedback, action-to-message
   correlation and relocated Cloudflare controls.

#### 1.3.4

 * Corrected multisite historical Wordfence WAF attribution by matching each shared`
   wfHits` event only to the exact attacked site hostname.
 * Added evidence-aware re-synchronization so stale evidence cannot recreate a removed
   Account IP List entry, while newer qualifying attacks can restore it.
 * Added optional stale-local-record cleanup for Account IP List mode through `purge_local_records_missing_in_cloudflare`;
   it is disabled by default.
 * Added reset-watermark protection and fail-closed destructive reconciliation requiring
   retained evidence boundaries and complete synchronization evaluation.
 * Distinguished proven-empty Cloudflare inventory from failed or incomplete inventory
   reads.
 * Canonicalized equivalent IPv4-mapped IPv6 forms consistently across PHP 8.1 through
   8.4 while retaining the existing embedded-IPv4 denial policy.
 * Expanded regressions for multisite attribution, shared lists, recidivism, reset
   safety, expiry cleanup, inventory failures, Wordfence 9 and cross-PHP address
   handling.

#### 1.3.3

 * Restored current active-block synchronisation with Wordfence 9.0.0 using `wfBlock::
   ipBlocks(true)` and the current `wfBlock` object interface.
 * Resolves the historical Wordfence `wfHits` table through `wfDB::networkTable('
   wfHits')` so Wordfence controls the network prefix and table-name case.
 * Supports only the current Wordfence release and reports synchronisation failure
   when required current interfaces are unavailable.
 * Added a Wordfence 9 compatibility regression test to the mandatory release validation
   gate.
 * Updated Semgrep to 1.172.0.
 * Updated WordPress Coding Standards to 3.4.1 and PHP_CodeSniffer to 3.13.6 with
   their required compatible dependencies.
 * Remediated two high-severity development-tool dependency advisories reported 
   by GitHub Dependabot.

#### 1.3.1

 * Added a DNS-resolved administrator allow list for existing DDNS hostnames.
 * Added read-only public A and AAAA lookup results.
 * Excluded trusted addresses from current and historical Wordfence candidates.
 * Automatically removes trusted addresses from the configured Cloudflare block 
   destination.
 * Clears related local synchronisation records after confirmed removal.
 * Added five-minute refresh control and a 24-hour DNS-failure grace period.
 * Added exact IPv6 handling, multisite support, tests and full user documentation.

#### 1.2.2

 * Corrected Synchronisation Log table rendering.
 * Standardised Site Admin and Network Admin log labels and headings.
 * Kept Site Admin logs site-specific when network settings are inherited.
 * Retained the combined Network Admin log across all sites.
 * Updated Cloudflare permission terminology and dashboard navigation.
 * Added step-by-step Cloudflare setup and verification instructions.
 * Added a static log and documentation regression test.

#### 1.2.1

 * Corrected GitHub release automation to use the authoritative plugin entry point
   and Makefile release process.
 * Added continuous integration across PHP 8.1, 8.2, 8.3 and 8.4.
 * Corrected repository documentation for the plugin directory, main plugin file
   and release process.
 * Updated the security policy to identify 1.2.x as the supported release series.
 * Updated release commands so the release ZIP is built and verified before a release
   tag is created.
 * No synchronisation, Wordfence or Cloudflare runtime behaviour changed.

#### 1.2.0

 * Hardened synchronization locking with unique ownership tokens, atomic stale-lock
   replacement and owner-only release.
 * Added centralized validation for publicly routable IPv4 and IPv6 addresses.
 * Added centralized validation and normalization for Cloudflare API tokens, Zone
   IDs, Account IDs, List IDs and List Names.
 * Rejected private, reserved, loopback, link-local, documentation, benchmarking,
   multicast and unspecified addresses.
 * Unified Cloudflare JSON parsing and required valid response envelopes with `success:
   true`.
 * Added strict Cloudflare response-result and pagination validation.
 * Corrected current-block retrieval so HTTP failures and malformed responses fail
   closed.
 * Limited Cloudflare response bodies to 1 MiB before JSON decoding.
 * Added explicit HTTPS transport settings, including TLS verification, a 30-second
   timeout, a three-redirect limit and unsafe-URL rejection.
 * Normalized and length-limited Cloudflare comments, access-rule notes and synchronization-
   log reasons.
 * Hardened Cloudflare identifiers returned by the API before using or caching them.
 * Audited all administrative actions for capability checks, action-specific nonces,
   sanitized input and safe redirects.

#### 1.1.12

 * Added an every-minute synchronization interval.
 * Added WordPress WP-Cron, external scheduler and manual-only scheduling modes.
 * Added plugin-specific WP-CLI commands for due and forced site or network synchronization.
 * Added synchronization due-time enforcement and overlap locking.
 * Separated hourly cleanup maintenance from the synchronization interval.
 * Centralized multisite network synchronization for the GUI and WP-CLI.
 * Added deployment-neutral scheduling documentation, including standard WP-CLI,
   systemd, traditional cron, hosting control-panel and optional Docker Compose 
   examples.

#### 1.1.11

 * Added a Why Grey Rock explanation to the plugin directory description.
 * Updated the short description to explain the goal of making the site less rewarding
   to repeat attackers.
 * Added six screenshot captions for the WordPress.org Plugin Directory.

#### 1.1.10

 * Moved Cloudflare Account ID before Cloudflare API Token.
 * Left-aligned the Cloudflare Tests controls.
 * Moved Validate Saved Cloudflare Configuration above the test IP field.
 * Moved Run Test Block directly below the test IP field.
 * Updated documentation to match the administration interface.

#### 1.1.9

 * Renamed the plugin to Grey Rock Block Synchroniser for Wordfence and Cloudflare.
 * Changed the plugin slug and text domain to `grey-rock-block-synchroniser-for-
   wordfence-and-cloudflare`.
 * Renamed the main plugin file to `grey-rock-block-synchroniser-for-wordfence-and-
   cloudflare.php`.
 * Moved administration JavaScript to `assets/admin.js`.
 * Enqueued administration JavaScript through WordPress.
 * Updated repository URLs, release packaging and translation metadata.

#### 1.1.8

 * Changed all branding from Grey Rock to Grey Rock.
 * Changed the plugin slug and text domain to `grey-rock-block-synchroniser-for-
   wordfence-and-cloudflare`.
 * Changed the release ZIP and plugin directory name to `grey-rock-block-synchroniser-
   for-wordfence-and-cloudflare`.
 * Renamed the translation template to match the new text domain.
 * Changed PHP global prefixes from `grey_rock_` to `grey_rock_`.
 * Updated repository and documentation URLs for the Grey Rock name.

#### 1.1.7

 * Added direct-access protection to the synchronisation log table.
 * Corrected log-table pagination input handling and output escaping.
 * Added required translator comments for placeholder strings.
 * Sanitised submitted settings arrays before configuration processing.
 * Documented nonce verification for the shared scope helper.
 * Removed obsolete manual translation-domain loading.

#### 1.1.6

 * Added WordPress.org-compatible licensing and metadata.
 * Added Cloudflare external-service documentation.
 * Added privacy and data-retention documentation.
 * Aligned the translation domain with the proposed WordPress.org slug.
 * Added separate GitHub-compatible and WordPress.org-compatible release packages.
 * Included `readme.txt` in release packages.

#### 1.1.5

 * Added configurable historical Wordfence WAF lookback.
 * Added a configurable minimum historical-event threshold.
 * Added numeric validation for historical settings.
 * Added Network Admin synchronisation for sites inheriting shared settings.
 * Added a combined Network Admin synchronisation log.
 * Added reasons for manually added Cloudflare account-list entries.
 * Prevented fatal errors when Wordfence does not expose `wfBlock::getBlocks()`.
 * Updated compatibility metadata for WordPress 7.0.

#### 1.1.2

 * Added Cloudflare Account IP List mode.
 * Added automatic list-identifier resolution from the visible list name.
 * Added manual account-list add and remove controls.
 * Added Cloudflare configuration validation and diagnostic block testing.
 * Corrected Cloudflare account-list item deletion.
 * Updated Grey Rock branding and release packaging.

## Meta

 *  Versi **1.3.10**
 *  Diperbarui **3 minggu yang lalu**
 *  Instalasi Aktif **10+**
 *  Versi WordPress ** 6.0 atau yang terbaru **
 *  Diuji hingga **7.1.3**
 *  Versi PHP ** 8.1 atau yang terbaru **
 *  Bahasa
 * [Dutch](https://nl.wordpress.org/plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/),
   [English (UK)](https://en-gb.wordpress.org/plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/),
   dan [English (US)](https://wordpress.org/plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/).
 *  [Terjemahkan dalam bahasa Anda](https://translate.wordpress.org/projects/wp-plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare)
 * Tag
 * [cloudflare](https://id.wordpress.org/plugins/tags/cloudflare/)[firewall](https://id.wordpress.org/plugins/tags/firewall/)
   [multisite](https://id.wordpress.org/plugins/tags/multisite/)[security](https://id.wordpress.org/plugins/tags/security/)
   [wordfence](https://id.wordpress.org/plugins/tags/wordfence/)
 *  [Tampilan lanjut](https://id.wordpress.org/plugins/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/advanced/)

## Rating

 5 dari 5 bintang.

 *  [  1 ulasan 5-bintang     ](https://wordpress.org/support/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/reviews/?filter=5)
 *  [  0 ulasan 4-bintang     ](https://wordpress.org/support/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/reviews/?filter=4)
 *  [  0 ulasan 3-bintang     ](https://wordpress.org/support/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/reviews/?filter=3)
 *  [  0 ulasan 2-bintang     ](https://wordpress.org/support/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/reviews/?filter=2)
 *  [  0 ulasan 1-bintang     ](https://wordpress.org/support/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/reviews/?filter=1)

[Your review](https://wordpress.org/support/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/reviews/#new-post)

[Lihat semua ulasan](https://wordpress.org/support/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/reviews/)

## Kontributor

 *   [ Greyscale Zone ](https://profiles.wordpress.org/greyscalezone/)

## Bantuan

Masalah yang diselesaikan dua bulan terakhir:

     1 dari 1

 [Lihat forum bantuan](https://wordpress.org/support/plugin/grey-rock-block-synchroniser-for-wordfence-and-cloudflare/)