=== Peneira Disposable Email Blocker ===
Contributors: amieiro
Tags: disposable email, temporary email, fake email, email validation, spam
Requires at least: 6.3
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html

Block disposable/throwaway email addresses across registration, comments, and the major contact and commerce form plugins.

== Description ==

Peneira Disposable Email Blocker rejects throwaway email addresses everywhere a visitor can submit one:

* WordPress registration, login, profile email change, and password reset
* The native comment form
* Contact Form 7, WooCommerce, Gravity Forms, WPForms, Forminator, Ninja Forms, and Fluent Forms (each loaded only when active)

The block list and a companion allowlist come from the open-source amieiro/disposable-email-domains project. Domains are stored in indexed database tables and imported without PHP timeouts. The bundled list works out of the box with no external requests. Optionally, enable automatic list updates (off by default) on a schedule you choose (daily/weekly/biweekly/monthly), or refresh on demand from the settings page. Subdomains of blocked domains are also blocked; an allowlist (upstream plus your own) prevents false positives.

== External services ==

This plugin connects to the GitHub REST API (api.github.com) to download the disposable-domain block list and allowlist from the amieiro/disposable-email-domains repository.

* What is sent: a standard HTTPS GET request (and a conditional-request ETag header). No personal data, site data, or user data is transmitted.
* When: only when you click "Check for updates now", or on your chosen schedule after you enable automatic list updates (a setting that is off by default). No requests are made otherwise; the plugin is fully functional with the bundled lists.
* Endpoints: https://api.github.com/repos/amieiro/disposable-email-domains/contents/denyDomains.txt , .../allowDomains.txt

GitHub's terms: https://docs.github.com/site-policy/github-terms/github-terms-of-service
GitHub's privacy statement: https://docs.github.com/site-policy/privacy-policies/github-privacy-statement

== Installation ==

1. Upload the plugin to `/wp-content/plugins/peneira-disposable-email-blocker` or install from the Plugins screen.
2. Activate it. On activation the bundled list imports immediately; on slow servers any remainder finishes in the background within moments.
3. Visit Settings → Peneira Disposable Email Blocker to choose surfaces, optionally enable automatic list updates, and manage local lists.

== Frequently Asked Questions ==

= Does it block subdomains? =
Yes. If `mailinator.com` is blocked, `anything.mailinator.com` is blocked too.

= How do I prevent a legitimate domain from being blocked? =
Add it to the Local allow list in the settings page; allowlist entries always win.

= Will the import time out on large sites? =
No. The ~200k-entry list imports in batches within a strict time budget (about 10 seconds); anything left over continues via WP-Cron and the result is swapped in atomically.

== Screenshots ==

1. The settings page: surfaces, update frequency, and status.
2. A blocked registration attempt.

== Changelog ==

= 1.0.1 =
* Domain imports now work on non-MySQL databases (the SQLite integration and WordPress Playground): inserts are chunked to 500 rows per statement and staging tables are created with portable DDL.
* A stalled import (for example after a mid-import failure or on hosts without working cron loopback requests) no longer blocks "Check for updates now" forever; it is detected and resumed inline.

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.0.1 =
Fixes domain imports on SQLite/Playground and recovers automatically from stalled imports.

= 1.0.0 =
Initial release.
