Repository navigation
Disclose external services and remove ip-api.com lookup - #165
alimuzzaman wants to merge 2 commits into
Conversation
The opt-in usage tracker looked up the requesting admin's IP at ip-api.com over plain HTTP on its first send, and neither the readme nor the opt-in notice mentioned it. The country it returned was only forwarded to WPInsight, which already tolerates reports without one, so the lookup is removed rather than moved to HTTPS. - readme.txt: add an External services section for WPInsight (send.wpinsight.com): what is sent, when, and the Terms and Privacy links. - Opt-in notice now lists every field the tracker sends, the host, the deactivation feedback and the server IP, with a Privacy Policy link. - Smoke scenario 23 intercepts the tracker's requests and checks nothing goes out before consent, only send.wpinsight.com over HTTPS after it, and that the notice and readme disclose it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The admin email is read from the current user on every send, so the daily cron report carries none and the deactivation report carries the email of whoever deactivates. Say so in the readme and the notice, add text direction to the notice, and note that daily reports send only changed fields. The smoke scenario now also covers the deactivation report (nothing without consent, then the reason, note and email it discloses), removes the payload the stubbed send stores, restores wpins_block_notice, and skips in-repo sandboxes in its source scan. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
❌ Heads-up @alim (Tufan) bhai on disable-comments PR #165 (the #164 external-services / ip-api.com disclosure fix) It's opened on the public repo (WPDevelopers/disable-comments → master), but our dev flow for Disable Comments is agent-ready → dev, with public being sync-only (dev → public on release, internal files stripped). The catch 👉 the fix currently lives only on public. agent-ready/dev still has the ip-api.com HTTP call, no == External services == section, and no Scenario 23. So the next dev → public sync will overwrite #165 and re-introduce the issue — the #164 fix would silently disappear. ✅ Fix: Please land this in agent-ready dev (re-do it as a PR there, or mirror #165 across) so it ships durably and survives the sync. What has been verified Reviewed and verified — a solid, correct fix for #164. I checked the claims independently rather than taking them on trust. ✅ Verified
Minor notes (non-blocking)
Net: the compliance gap is genuinely closed and well-guarded. 👍 |
|
Closing: this repo is the public mirror, and the next release sync would overwrite this change. The same fix for #164 is going through the development repo and will land here with the next release. |
Summary
Closes the WordPress.org Guidelines 6/7 disclosure gap reported in #164. The opt-in usage tracker sent the admin's IP to
ip-api.comover plain HTTP, and neither the readme nor the opt-in notice mentioned it or the WPInsight endpoint.Changes
ip-api.comlookup from the tracker's first send. Its result only filled acountryfield in the WPInsight report. Nothing in the plugin reads that field, and the report already went out without it whenever the lookup failed or the IP was 127.0.0.1.== External services ==section toreadme.txtfor WPInsight (send.wpinsight.com). It covers what is sent, when (opt-in only: on consent, about daily by cron with only changed fields, and on deactivation), and links the Terms and Privacy Policy.wp_kses_post().tests/smoke/scenario-external-services.php) intercepts every tracker request. It checks:https://send.wpinsight.comis contacted;http://remote call;Outbound hosts swept in shipped PHP and JS: only
send.wpinsight.comand the removedip-api.com. The theme conflict scanner requests the site's own pages, and the readme says so.Verification
Head:
146c67f2d78e92f71535a84a9482997850a6eafe99728ee): 12 failures, including a realhttp://ip-api.com/json/…request.Review note
This changes what personal data the plugin discloses and sends: admin email, server IP and site details. Human review is required before merge.
Open items:
languages/disable-comments.potstill holds the old notice string until the release build regenerates it.Refs #164
🤖 Generated with Claude Code