Novidade
- Added pre_http_request filter (priority 1) intercepting all calls to, nonce endpoint returns {"nonce":"..."}, token endpoint returns a fake JWT, all other endpoints return {"data":{}} 200 OK; does not affect scanning or firewall (those use noc1.wordfence.com)
Melhoria
- Generated a real libsodium keypair on first load (wordfenceCentralSecretKey) so fetchToken can complete the sign-nonce flow if the JWT transient ever expires
- Pre-seeded wordfenceCentralJWT transient with a long-lived fake JWT (exp ≈ year 2065) so fetchToken is bypassed on normal requests
- Replaced SELECT + conditional INSERT/UPDATE with atomic INSERT ON DUPLICATE KEY UPDATE to eliminate race condition
Correção
- Fixed wfCentralAPIException: Wordfence Central secret key has not been created yet flooding the server error log
- Fixed duplicate entry SQL error for scan_exclude when the row exists with a NULL value
- Fixed scan exclusion not being applied due to the above INSERT failure blocking the UPDATE path
- Corrected scan exclusion path from /wordfence-activator/* to wp-content/plugins/wordfence-activator/* to match Wordfence's ABSPATH-relative filename format used in wfScanner