{"id":339178,"date":"2026-07-13T00:44:17","date_gmt":"2026-07-13T00:44:17","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/grey-rock-wordfence-cloudflare-synchroniser\/"},"modified":"2026-07-13T00:44:03","modified_gmt":"2026-07-13T00:44:03","slug":"grey-rock-block-synchroniser-for-wordfence-and-cloudflare","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/","author":23531346,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.11","stable_tag":"1.1.11","tested":"7.0.1","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"Grey Rock Block Synchroniser for Wordfence and Cloudflare","header_author":"Greyscale Zone","header_description":"Synchronises current and historical Wordfence firewall blocks with Cloudflare Zone Access Rules or an account-level IP list.","assets_banners_color":"474747","last_updated":"2026-07-13 00:44:03","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/Linus-007\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare","header_author_uri":"https:\/\/greyscale.zone\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":23,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.11":{"tag":"1.1.11","author":"greyscalezone","date":"2026-07-13 00:44:03"}},"upgrade_notice":{"1.1.9":"<p>Renames the plugin and technical identifiers to satisfy WordPress.org naming and plugin-structure requirements.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3605301,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3605301,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3605301,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3605301,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.11"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3605301,"resolution":"1","location":"assets","locale":"","width":1585,"height":835},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3605301,"resolution":"2","location":"assets","locale":"","width":825,"height":840},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3605301,"resolution":"3","location":"assets","locale":"","width":1544,"height":266},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3605301,"resolution":"4","location":"assets","locale":"","width":739,"height":151},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3605301,"resolution":"5","location":"assets","locale":"","width":780,"height":420},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3605301,"resolution":"6","location":"assets","locale":"","width":950,"height":580}},"screenshots":{"1":"Configure Cloudflare Account IP List mode, synchronisation interval, historical WAF lookback, and block threshold from Network Admin.","2":"Validate the Cloudflare configuration, test blocking, manage list entries manually, and synchronise the multisite network.","3":"Review recent site-specific synchronisation activity across the WordPress multisite network.","4":"View the Cloudflare Account IP List created and maintained by Grey Rock Block Synchroniser.","5":"Review synchronised and manually managed IP addresses stored in the configured Cloudflare list.","6":"Configure a Cloudflare Custom Rule to block requests from addresses contained in the synchronised IP list."}},"plugin_section":[],"plugin_tags":[3882,1174,441,600,14385],"plugin_category":[51,54],"plugin_contributors":[271302],"plugin_business_model":[],"class_list":["post-339178","plugin","type-plugin","status-publish","hentry","plugin_tags-cloudflare","plugin_tags-firewall","plugin_tags-multisite","plugin_tags-security","plugin_tags-wordfence","plugin_category-multisite","plugin_category-security-and-spam-protection","plugin_contributors-greyscalezone","plugin_committers-greyscalezone"],"banners":{"banner":"https:\/\/ps.w.org\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/assets\/banner-772x250.png?rev=3605301","banner_2x":"https:\/\/ps.w.org\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/assets\/banner-1544x500.png?rev=3605301","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/assets\/icon-128x128.png?rev=3605301","icon_2x":"https:\/\/ps.w.org\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/assets\/icon-256x256.png?rev=3605301","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/assets\/screenshot-1.png?rev=3605301","caption":"Configure Cloudflare Account IP List mode, synchronisation interval, historical WAF lookback, and block threshold from Network Admin."},{"src":"https:\/\/ps.w.org\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/assets\/screenshot-2.png?rev=3605301","caption":"Validate the Cloudflare configuration, test blocking, manage list entries manually, and synchronise the multisite network."},{"src":"https:\/\/ps.w.org\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/assets\/screenshot-3.png?rev=3605301","caption":"Review recent site-specific synchronisation activity across the WordPress multisite network."},{"src":"https:\/\/ps.w.org\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/assets\/screenshot-4.png?rev=3605301","caption":"View the Cloudflare Account IP List created and maintained by Grey Rock Block Synchroniser."},{"src":"https:\/\/ps.w.org\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/assets\/screenshot-5.png?rev=3605301","caption":"Review synchronised and manually managed IP addresses stored in the configured Cloudflare list."},{"src":"https:\/\/ps.w.org\/grey-rock-block-synchroniser-for-wordfence-and-cloudflare\/assets\/screenshot-6.png?rev=3605301","caption":"Configure a Cloudflare Custom Rule to block requests from addresses contained in the synchronised IP list."}],"raw_content":"<!--section=description-->\n<p>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.<\/p>\n\n<h4>Why Grey Rock?<\/h4>\n\n<p>The name Grey Rock is inspired by the grey rock method: becoming uninteresting and unrewarding to someone seeking attention or a reaction.<\/p>\n\n<p>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.<\/p>\n\n<p>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.<\/p>\n\n<p>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.<\/p>\n\n<p>The plugin supports two Cloudflare destinations.<\/p>\n\n<h4>Zone Access Rules<\/h4>\n\n<p>Creates Cloudflare IP block rules for one zone.<\/p>\n\n<p>Use this mode when Wordfence blocks should protect one Cloudflare zone.<\/p>\n\n<h4>Account IP List<\/h4>\n\n<p>Adds IP addresses to a reusable Cloudflare account-level IP list.<\/p>\n\n<p>Use this mode when several domains or Cloudflare zones should share the same list.<\/p>\n\n<p>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.<\/p>\n\n<p>Example rule:<\/p>\n\n<pre><code>ip.src in $wordfence_hot_blocklist\n<\/code><\/pre>\n\n<p>The recommended list name is:<\/p>\n\n<pre><code>wordfence_hot_blocklist\n<\/code><\/pre>\n\n<h4>Current and historical Wordfence blocks<\/h4>\n\n<p>The plugin can synchronise:<\/p>\n\n<ul>\n<li>Current Wordfence blocks when the installed Wordfence version exposes its active-block interface.<\/li>\n<li>Historical Wordfence Web Application Firewall events recorded as <code>blocked:waf<\/code>.<\/li>\n<\/ul>\n\n<p>Historical synchronisation is configurable:<\/p>\n\n<ul>\n<li>Lookback period: 1, 3, 6, 12 or 24 hours.<\/li>\n<li>Minimum blocked events per IP address: 1 through 100.<\/li>\n<li>Default lookback: 24 hours.<\/li>\n<li>Default threshold: 1 event.<\/li>\n<\/ul>\n\n<p>Repeated events from the same address are deduplicated before synchronisation.<\/p>\n\n<p>Invalid, private and reserved IP addresses are rejected during historical-event processing.<\/p>\n\n<h4>Multisite support<\/h4>\n\n<p>When network activated:<\/p>\n\n<ul>\n<li>Network Admin can provide shared Cloudflare settings.<\/li>\n<li>Individual sites may inherit the network configuration.<\/li>\n<li>Site-specific overrides can be permitted by Network Admin.<\/li>\n<li>Network Admin provides a Synchronise Network Now action.<\/li>\n<li>Network Admin provides a combined Synchronisation Log.<\/li>\n<li>Individual sites retain their own synchronisation logs and manual IP block pages.<\/li>\n<li>Sites using independent settings retain their own site-level controls.<\/li>\n<\/ul>\n\n<h4>Manual management and diagnostics<\/h4>\n\n<p>The plugin provides:<\/p>\n\n<ul>\n<li>Cloudflare configuration validation.<\/li>\n<li>A diagnostic add-and-remove test.<\/li>\n<li>Manual account-list add and remove controls.<\/li>\n<li>A required reason for manually added account-list entries.<\/li>\n<li>Manual site-level IP blocking.<\/li>\n<li>Synchronisation logs.<\/li>\n<li>Cleanup and reconciliation where Cloudflare-entry ownership is isolated to one site.<\/li>\n<\/ul>\n\n<h4>Wordfence compatibility<\/h4>\n\n<p>Wordfence does not provide a stable public API for every block source used by this plugin.<\/p>\n\n<p>Grey Rock checks whether the installed Wordfence active-block interface is available before using it. When that interface is unavailable, historical WAF synchronisation continues through the Wordfence event table.<\/p>\n\n<p>A future Wordfence release could change its internal class or database schema. Such a change may require a Grey Rock compatibility update.<\/p>\n\n<h4>Independence and trademarks<\/h4>\n\n<p>Grey Rock Block Synchroniser for Wordfence and Cloudflare is developed independently by Greyscale Zone.<\/p>\n\n<p>This plugin is not affiliated with, endorsed by or sponsored by Wordfence or Cloudflare. Wordfence and Cloudflare are trademarks of their respective owners.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to the Cloudflare API when an administrator:<\/p>\n\n<ul>\n<li>Validates saved Cloudflare settings.<\/li>\n<li>Runs a diagnostic block test.<\/li>\n<li>Manually adds or removes an IP address.<\/li>\n<li>Runs synchronisation, cleanup or reconciliation.<\/li>\n<li>Allows a scheduled synchronisation or cleanup event to run.<\/li>\n<\/ul>\n\n<p>The Cloudflare API is required because the plugin's purpose is to create and remove Cloudflare firewall entries.<\/p>\n\n<p>Depending on the configured mode and operation, the plugin sends some or all of the following data to Cloudflare:<\/p>\n\n<ul>\n<li>The Cloudflare API token in an HTTPS Authorization header.<\/li>\n<li>Cloudflare Account ID.<\/li>\n<li>Cloudflare Zone ID.<\/li>\n<li>Cloudflare account-list name or internal list identifier.<\/li>\n<li>Public IPv4 or IPv6 addresses blocked by Wordfence.<\/li>\n<li>A short comment describing the Wordfence or manual block reason.<\/li>\n<li>Cloudflare list-item or firewall-rule identifiers when removing entries.<\/li>\n<\/ul>\n\n<p>The plugin retrieves Cloudflare account lists, list items and firewall access rules so it can validate settings, avoid duplicates, reconcile state and remove entries.<\/p>\n\n<p>Communication is sent directly from the WordPress server to Cloudflare over HTTPS using the WordPress HTTP API.<\/p>\n\n<p>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.<\/p>\n\n<p>By configuring and using Cloudflare functions in this plugin, the administrator directs the plugin to transmit the described information to Cloudflare.<\/p>\n\n<p>Cloudflare Terms of Service:<\/p>\n\n<p>https:\/\/www.cloudflare.com\/terms\/<\/p>\n\n<p>Cloudflare Privacy Policy:<\/p>\n\n<p>https:\/\/www.cloudflare.com\/privacypolicy\/<\/p>\n\n<p>Cloudflare API documentation:<\/p>\n\n<p>https:\/\/developers.cloudflare.com\/api\/<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>The plugin stores its configuration in the WordPress database. This includes the Cloudflare API token and Cloudflare identifiers entered by an administrator.<\/p>\n\n<p>The plugin stores synchronised public IP addresses, block reasons, timestamps, expiration information and retry state in a site-specific WordPress database table.<\/p>\n\n<p>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.<\/p>\n\n<p>Historical entries receive an expiration based on the configured lookback period. Temporary active Wordfence blocks may use the Wordfence expiration time.<\/p>\n\n<p>Manually added Cloudflare account-list entries remain until an authorised administrator or another authorised Cloudflare operation removes them.<\/p>\n\n<p>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.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate Wordfence.<\/li>\n<li>Install and activate Grey Rock Block Synchroniser for Wordfence and Cloudflare.<\/li>\n<li>Open Grey Rock Block Synchroniser in WordPress administration.<\/li>\n<li>Select Zone Access Rules or Account IP List mode.<\/li>\n<li>Create a restricted Cloudflare API token.<\/li>\n<li>Enter the Cloudflare identifiers required for the selected mode.<\/li>\n<li>Save the settings.<\/li>\n<li>Validate the saved Cloudflare configuration.<\/li>\n<li>Run the diagnostic test block.<\/li>\n<li>Configure the historical WAF lookback and event threshold.<\/li>\n<li>Run synchronisation.<\/li>\n<\/ol>\n\n<p>For multisite installations, network activate the plugin and configure shared settings from Network Admin when appropriate.<\/p>\n\n<h4>Zone Access Rules mode<\/h4>\n\n<p>Required settings:<\/p>\n\n<ul>\n<li>Cloudflare API Token<\/li>\n<li>Cloudflare Zone ID<\/li>\n<\/ul>\n\n<p>Required Cloudflare token permissions:<\/p>\n\n<ul>\n<li>Zone - Firewall Services: Edit<\/li>\n<li>Zone - Zone: Read<\/li>\n<\/ul>\n\n<h4>Account IP List mode<\/h4>\n\n<p>Required settings:<\/p>\n\n<ul>\n<li>Cloudflare Account ID<\/li>\n<li>Cloudflare API Token<\/li>\n<li>Cloudflare List Name<\/li>\n<\/ul>\n\n<p>Required Cloudflare token permission:<\/p>\n\n<ul>\n<li>Account - Account Rule Lists: Edit<\/li>\n<\/ul>\n\n<p>The plugin resolves the Cloudflare list's internal identifier automatically.<\/p>\n\n<p>After configuring the list, create a Cloudflare Custom Rule with the Block action in every zone that should use it.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20require%20a%20cloudflare%20global%20api%20key%3F\"><h3>Does the plugin require a Cloudflare Global API Key?<\/h3><\/dt>\n<dd><p>No. Use a restricted Cloudflare API token.<\/p><\/dd>\n<dt id=\"does%20an%20account%20ip%20list%20block%20traffic%20by%20itself%3F\"><h3>Does an Account IP List block traffic by itself?<\/h3><\/dt>\n<dd><p>No. Create a Cloudflare Custom Rule with the Block action in every zone that should use the list.<\/p><\/dd>\n<dt id=\"can%20one%20cloudflare%20list%20protect%20several%20domains%3F\"><h3>Can one Cloudflare list protect several domains?<\/h3><\/dt>\n<dd><p>Yes. Account IP List mode can maintain one reusable account-level list. Each Cloudflare zone must have a Custom Rule that references the list.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20synchronise%20historical%20wordfence%20firewall%20events%3F\"><h3>Does the plugin synchronise historical Wordfence firewall events?<\/h3><\/dt>\n<dd><p>Yes. It reads qualifying Wordfence WAF events recorded as <code>blocked:waf<\/code> within the configured lookback period.<\/p><\/dd>\n<dt id=\"what%20historical%20lookback%20periods%20are%20available%3F\"><h3>What historical lookback periods are available?<\/h3><\/dt>\n<dd><p>1, 3, 6, 12 and 24 hours.<\/p><\/dd>\n<dt id=\"can%20i%20require%20several%20wordfence%20block%20events%20before%20an%20ip%20is%20sent%20to%20cloudflare%3F\"><h3>Can I require several Wordfence block events before an IP is sent to Cloudflare?<\/h3><\/dt>\n<dd><p>Yes. The historical block threshold accepts whole numbers from 1 through 100.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20wordfence%20does%20not%20expose%20its%20active-block%20interface%3F\"><h3>What happens if Wordfence does not expose its active-block interface?<\/h3><\/dt>\n<dd><p>The plugin continues using historical Wordfence WAF events instead of terminating synchronisation.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20wordpress%20multisite%3F\"><h3>Does the plugin support WordPress multisite?<\/h3><\/dt>\n<dd><p>Yes. It supports shared Network Admin settings, optional site-specific overrides, network synchronisation for inheriting sites and a combined Network Admin synchronisation log.<\/p><\/dd>\n<dt id=\"why%20are%20cleanup%20and%20reconciliation%20unavailable%20on%20some%20inheriting%20sites%3F\"><h3>Why are cleanup and reconciliation unavailable on some inheriting sites?<\/h3><\/dt>\n<dd><p>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.<\/p><\/dd>\n<dt id=\"does%20uninstalling%20the%20plugin%20remove%20cloudflare%20entries%3F\"><h3>Does uninstalling the plugin remove Cloudflare entries?<\/h3><\/dt>\n<dd><p>No. Review and remove unwanted Cloudflare rules or list entries separately after uninstalling the plugin.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20affiliated%20with%20wordfence%20or%20cloudflare%3F\"><h3>Is the plugin affiliated with Wordfence or Cloudflare?<\/h3><\/dt>\n<dd><p>No.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.11<\/h4>\n\n<ul>\n<li>Added a Why Grey Rock explanation to the plugin directory description.<\/li>\n<li>Updated the short description to explain the goal of making the site less rewarding to repeat attackers.<\/li>\n<li>Added six screenshot captions for the WordPress.org Plugin Directory.<\/li>\n<\/ul>\n\n<h4>1.1.10<\/h4>\n\n<ul>\n<li>Moved Cloudflare Account ID before Cloudflare API Token.<\/li>\n<li>Left-aligned the Cloudflare Tests controls.<\/li>\n<li>Moved Validate Saved Cloudflare Configuration above the test IP field.<\/li>\n<li>Moved Run Test Block directly below the test IP field.<\/li>\n<li>Updated documentation to match the administration interface.<\/li>\n<\/ul>\n\n<h4>1.1.9<\/h4>\n\n<ul>\n<li>Renamed the plugin to Grey Rock Block Synchroniser for Wordfence and Cloudflare.<\/li>\n<li>Changed the plugin slug and text domain to <code>grey-rock-block-synchroniser-for-wordfence-and-cloudflare<\/code>.<\/li>\n<li>Renamed the main plugin file to <code>grey-rock-block-synchroniser-for-wordfence-and-cloudflare.php<\/code>.<\/li>\n<li>Moved administration JavaScript to <code>assets\/admin.js<\/code>.<\/li>\n<li>Enqueued administration JavaScript through WordPress.<\/li>\n<li>Updated repository URLs, release packaging and translation metadata.<\/li>\n<\/ul>\n\n<h4>1.1.8<\/h4>\n\n<ul>\n<li>Changed all branding from Grey Rock to Grey Rock.<\/li>\n<li>Changed the plugin slug and text domain to <code>grey-rock-block-synchroniser-for-wordfence-and-cloudflare<\/code>.<\/li>\n<li>Changed the release ZIP and plugin directory name to <code>grey-rock-block-synchroniser-for-wordfence-and-cloudflare<\/code>.<\/li>\n<li>Renamed the translation template to match the new text domain.<\/li>\n<li>Changed PHP global prefixes from <code>grey_rock_<\/code> to <code>grey_rock_<\/code>.<\/li>\n<li>Updated repository and documentation URLs for the Grey Rock name.<\/li>\n<\/ul>\n\n<h4>1.1.7<\/h4>\n\n<ul>\n<li>Added direct-access protection to the synchronisation log table.<\/li>\n<li>Corrected log-table pagination input handling and output escaping.<\/li>\n<li>Added required translator comments for placeholder strings.<\/li>\n<li>Sanitised submitted settings arrays before configuration processing.<\/li>\n<li>Documented nonce verification for the shared scope helper.<\/li>\n<li>Removed obsolete manual translation-domain loading.<\/li>\n<\/ul>\n\n<h4>1.1.6<\/h4>\n\n<ul>\n<li>Added WordPress.org-compatible licensing and metadata.<\/li>\n<li>Added Cloudflare external-service documentation.<\/li>\n<li>Added privacy and data-retention documentation.<\/li>\n<li>Aligned the translation domain with the proposed WordPress.org slug.<\/li>\n<li>Added separate GitHub-compatible and WordPress.org-compatible release packages.<\/li>\n<li>Included <code>readme.txt<\/code> in release packages.<\/li>\n<\/ul>\n\n<h4>1.1.5<\/h4>\n\n<ul>\n<li>Added configurable historical Wordfence WAF lookback.<\/li>\n<li>Added a configurable minimum historical-event threshold.<\/li>\n<li>Added numeric validation for historical settings.<\/li>\n<li>Added Network Admin synchronisation for sites inheriting shared settings.<\/li>\n<li>Added a combined Network Admin synchronisation log.<\/li>\n<li>Added reasons for manually added Cloudflare account-list entries.<\/li>\n<li>Prevented fatal errors when Wordfence does not expose <code>wfBlock::getBlocks()<\/code>.<\/li>\n<li>Updated compatibility metadata for WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Added Cloudflare Account IP List mode.<\/li>\n<li>Added automatic list-identifier resolution from the visible list name.<\/li>\n<li>Added manual account-list add and remove controls.<\/li>\n<li>Added Cloudflare configuration validation and diagnostic block testing.<\/li>\n<li>Corrected Cloudflare account-list item deletion.<\/li>\n<li>Updated Grey Rock branding and release packaging.<\/li>\n<\/ul>","raw_excerpt":"Make your WordPress site boring to repeat attackers by synchronising qualifying Wordfence firewall blocks with Cloudflare.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/339178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=339178"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/greyscalezone"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=339178"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=339178"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=339178"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=339178"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=339178"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=339178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}