Udp.Code. frontend_data logger - #864
Conversation
There was a problem hiding this comment.
Pull request overview
This PR refactors bot-detector “frontend data log” collection/transfer into a consolidated browser state payload (apbct_browser_state) that is injected into frontend requests, then parsed server-side and exposed via apbct__bot_detector_get_fd_log(). It also updates AltSessions allow-listing and expands PHPUnit coverage for transport-specific state retrieval.
Changes:
- Replace periodic “save log to AltSessions” JS with an
ApbctBrowserStatecollector and request-injection (apbct_browser_state) across XHR/fetch/FormData/string bodies. - Update PHP to return
apbct_browser_state(with defaults/error handling) and add helpers to parse state from RequestParameters/POST. - Expand standalone tests to cover AltSessions/NoCookie/POST transports and default-filling behavior.
Reviewed changes
Copilot reviewed 15 out of 23 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/StandaloneFunctions/TestBotDetectorLogGathering.php | Reworked tests to validate new browser-state transport behavior and defaults. |
| lib/Cleantalk/ApbctWP/Variables/AltSessions.php | Allow-list apbct_browser_state as JSON in AltSessions validation. |
| js/src/public-3-bot-detector-log.js | Introduces ApbctBrowserState + apbctGetBrowserStatePair() for request injection. |
| js/src/public-1-main.js | Injects apbct_browser_state into multiple request interception paths (XHR/fetch/etc.). |
| js/src/public-1-functions.js | Includes browser state into NoCookie hidden-field payload / storage data array. |
| js/prebuild/apbct-public-bundle.js | Prebuilt bundle updated with browser state injection logic. |
| js/prebuild/apbct-public-bundle_int-protection.js | Prebuilt bundle updated with browser state injection logic. |
| js/prebuild/apbct-public-bundle_int-protection_gathering.js | Prebuilt bundle updated with browser state injection logic. |
| js/prebuild/apbct-public-bundle_gathering.js | Prebuilt bundle updated with browser state injection logic. |
| js/prebuild/apbct-public-bundle_full-protection.js | Prebuilt bundle updated with browser state injection logic. |
| js/prebuild/apbct-public-bundle_full-protection_gathering.js | Prebuilt bundle updated with browser state injection logic. |
| js/prebuild/apbct-public-bundle_ext-protection.js | Prebuilt bundle updated with browser state injection logic. |
| js/prebuild/apbct-public-bundle_ext-protection_gathering.js | Prebuilt bundle updated with browser state injection logic. |
| js/apbct-public-bundle.min.js | Minified public bundle updated to match new browser state behavior. |
| inc/cleantalk-common.php | Server-side browser state parsing + updated fd-log return structure. |
| cleantalk.php | Changes bot detector wrapper script URL constant. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…ontend_data-logger.ab
# Conflicts: # js/apbct-public-bundle.min.js # js/apbct-public-bundle_ext-protection.min.js # js/apbct-public-bundle_ext-protection_gathering.min.js # js/apbct-public-bundle_full-protection.min.js # js/apbct-public-bundle_full-protection_gathering.min.js # js/apbct-public-bundle_gathering.min.js # js/apbct-public-bundle_int-protection.min.js # js/apbct-public-bundle_int-protection_gathering.min.js
|
Please, fix autotests first. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## dev #864 +/- ##
============================================
+ Coverage 29.20% 29.28% +0.08%
- Complexity 6443 6446 +3
============================================
Files 287 287
Lines 26064 26071 +7
============================================
+ Hits 7611 7634 +23
+ Misses 18453 18437 -16 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
https://app.doboard.com/1/task/51081