=== Artiman Guard ===
Contributors: hsmasoumi
Tags: anti-spam, security, seo, forms, woocommerce
Requires at least: 6.2
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 0.7.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Self-hosted form abuse protection, registration firewall, 404 bot shield and SEO crawl protection.

== Description ==

Artiman Guard protects WordPress and WooCommerce forms without sending CAPTCHA data or security reports to an external service.

Protection layers include:

* Local browser proof-of-work with a mathematical fallback.
* One-time signed challenges, dynamic honeypots and form timing checks.
* Local rate limiting and a managed IP blocklist.
* Registration firewall, one-time registration permits and account quarantine.
* Spam-username detection and registration-source monitoring.
* Content-risk scoring for links, repetition, advertising language, gibberish, language mismatch, disposable email, suspicious domains, invalid phone numbers and duplicate submissions.
* Block, quarantine, suspicious and allow-with-flag decisions.
* Review queues for comments, Elementor Pro Forms and Gravity Forms.
* 404 scanner detection, sensitive-path protection and repeated-request blocking.
* Internal broken-link reports, redirect suggestions and crawl-budget reports.
* Soft-404 and suspicious-200 reporting.
* Internal-search and WooCommerce-filter noindex protection.
* WordPress login, registration, lost-password and comment protection.
* WooCommerce login, registration and product-review protection.
* Dedicated Elementor Pro Forms and Gravity Forms fields.
* A local Security Center for suspicious events and managed IP blocks.
* Persian translation and support for WordPress language packs.

Artiman Guard is designed to cooperate with WordPress Core, WooCommerce, Yoast SEO, Rank Math, AIOSEO and SEOPress. SEO directives owned by an active SEO plugin are not replaced.

Developer website: https://artimanweb.com/

== Installation ==

1. Upload the plugin ZIP from Plugins > Add New > Upload Plugin, or install it from the WordPress Plugin Directory.
2. Activate Artiman Guard.
3. Open Artiman Guard > Settings.
4. Select the forms to protect and choose Smart or Mathematical mode.
5. Test protected forms in a private browser window before enabling stricter rules.
6. Review suspicious activity under Artiman Guard > Security Center.

== Frequently Asked Questions ==

= Does the plugin contact an external CAPTCHA service? =

No. Challenge generation, proof-of-work verification, reports and rate limiting are processed locally on the WordPress site.

= Is the mathematical answer visible in the page source? =

No. The answer is stored server-side in a short-lived, one-time challenge record. The signed browser token does not contain the answer.

= How long are security reports stored? =

The administrator can choose from 7 to 90 days. Expired records are removed automatically.

= How can protection be disabled after an accidental lockout? =

Add this line to `wp-config.php`:

`define( 'ARTIMAN_GUARD_SAFE_MODE', true );`

Remove the line or change it to false after correcting the settings.

= Does it support WooCommerce? =

Yes. It protects WooCommerce customer login, registration and product-review forms.

= Does it support Elementor forms? =

Yes. With Elementor Pro active, add the Artiman Guard field to the form. Validation runs in Elementor's Ajax submission flow.

= Does it support Gravity Forms? =

Yes. Add the Artiman Guard field from Advanced Fields to each form that should be protected.

= Does it conflict with SEO plugins? =

Artiman Guard uses provider-aware integration. It works with WordPress Core, Yoast SEO and Rank Math robots output, and defers robots control to AIOSEO or SEOPress when either plugin is active. Redirect cleanup is conservative and disabled by default after upgrading.

== Privacy ==

Artiman Guard does not send visitor data outside the website. When local reports are enabled, it stores the form context, result, reason, risk score, time, salted technical identifiers, and the IP address for suspicious or blocked activity. Routine successful checks are not stored. Security reports and temporary blocks expire automatically. A permanent IP block remains until a manager releases it.

The plugin registers WordPress personal-data exporter and eraser callbacks for locally stored security data.

== Changelog ==

= 0.7.2 =

* Added provider-aware robots integration for WordPress, Yoast SEO and Rank Math.
* Deferred robots control to AIOSEO and SEOPress when either plugin is active.
* Added an allowlist for intentionally indexable WooCommerce filter URLs.
* Removed search and add-to-cart requests from generic crawl-trap classification.
* Limited automatic query cleanup to the WordPress `replytocom` parameter and made cleanup opt-in after upgrade.
* Prevented high-confidence search crawler agents from being blocked for ordinary repeated 404 requests.
* Excluded sitemap, robots and standard icon paths from ordinary 404 blocking.
* Avoided blocking legitimate singular content and archive-like routes with generic sensitive words.
* Limited no-cache handling to sensitive or blocked scanner traffic.
* Paused automatic IP blocking when forwarding headers arrive from an untrusted proxy.
* Fixed Elementor editor previews and trusted-administrator submissions when the field is marked as required.

= 0.7.1 =

* Added a shared abuse counter and automatic blocking for repeated form failures, suspicious submissions and 404 requests.
* Added a managed IP blocklist with release and permanent-block actions.
* Stopped storing routine successful checks.

= 0.7.0 =

* Added a shared decision engine and administrator feedback to reduce false positives.
* Added one-time registration permits and quarantine for unverified public user creation.
* Suppressed notifications and feeds for locally quarantined submissions.

For the complete release history, see `changelog.txt`.

== Upgrade Notice ==

= 0.7.2 =

Compatibility and false-positive improvements for SEO plugins, WooCommerce filters, trusted proxies and legitimate crawler traffic.
