=== Aepto Domain Expiry, SSL, DNS & PHP Security ===
Contributors: limitlesshosting
Tags: domain expiry, ssl monitor, dns monitor, php security, uptime
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.1.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

CVE-2026-109618 / CVE-2026-109619 (php2shell) PHP alerts + host ticket. Free Domain Anchor: domain & SSL expiry, DNS, email auth.

== Description ==

WordPress Site Health watches PHP, cron, and plugins. It does **not** watch whether your **domain** is about to expire, whether DNS still points at this install, or whether SPF/DKIM/DMARC will dump order email into spam.

**Domain Anchor** (free, no Aepto account) watches that layer for *this* site only — and when a critical PHP RCE hits (starting with **CVE-2026-109618 / CVE-2026-109619 — php2shell**), it emails your contacts and gives you a **copy-ready hosting support ticket**.

= Free — works the moment you activate =

* **Domain registration expiry** — days left + registrar when the registry publishes it
* **SSL / TLS certificate expiry** — days left + issuer
* **DNS snapshot** — A / AAAA / NS (and change journal when records move)
* **Tether check** — confirms the public hostname still serves *this* WordPress (not “A record equals server IP”, which breaks behind Cloudflare)
* **Email authentication grade** — SPF, DKIM, DMARC, MX from public DNS
* **PHP security** — checks this server’s PHP version against critical advisories (starting with php2shell); admin notice + **copy-ready support ticket** for your host; repeat emails until patched
* **Email alerts** — choose up to 10 recipients; toggle domain / SSL / tether / DNS / Mail Pulse / PHP alerts; pick reminder days (30 / 14 / 7 / 1)
* **Mail Pulse** — weekly delivery probe with click-to-confirm; catches silent wp_mail failures; loud wp-admin warning when mail is dead
* **Test email** — Settings → Send test email to all recipients (if it fails, use an SMTP plugin — many hosts block PHP mail())
* **Admin bar chip** — quick Domain / SSL countdown (or PHP: critical when an advisory hits)
* **Dashboard widget** — at-a-glance risks
* **Continuity report (PDF)** — dense client-ready PDF (expiry, tether, DNS, email auth, Mail Pulse, PHP security); Connected adds outside uptime %, stability, latency, downtime history

No account. No API key. No front-end scripts on your public site.

= Optional — Connect free with Aepto =

Sign in with Aepto (OAuth, no pasted secrets) to protect this WordPress from the **outside**:

* Outside **uptime board** in Protection — live status, 24h/7d/30d/90d uptime %, stability, latency, downtime duration history (alerts even if WordPress cannot send mail)
* Add this site to your Aepto portfolio
* **Domain Watch** and **Theft Guard**
* Attention inbox in wp-admin
* Open the full Aepto dashboard for this domain

= Paid Aepto plans (checkout on app.aepto.com) =

* **AI page monitoring** — catch white screens, critical / database errors, and “uptime green but the page is broken”
* **Alert webhooks** — push incidents to Slack, tickets, Zapier, on-call tools

The free Domain Anchor stays fully usable forever. Connect and paid features are optional upgrades, not a crippled teaser.

= Who this is for =

* Site owners who renew domains once a year and forget
* WooCommerce / form sites that need mail to actually deliver
* Agencies who need a clean continuity report for clients
* Anyone who needs to push their host to patch critical PHP CVEs quickly
* Anyone who has been burned by DNS pointing somewhere else

= External services =

This plugin may contact third-party / external services as follows:

* **Your site’s hostname** — TLS certificate probe and tether self-check against the public hostname of this WordPress site. Data sent: HTTPS connection to your own host (no third-party account). Runs when you run Domain Anchor or on the scheduled cron.
* **Public DNS resolvers (via PHP DNS functions / the server’s configured resolvers)** — used to read A, AAAA, NS, MX, and TXT records for email authentication grading and DNS snapshots. Data sent: the domain name being queried. Runs during Domain Anchor checks.
* **RDAP bootstrap (RDAP.org)** — used to look up domain registration expiry / registrar data when available. Data sent: the domain name in an HTTPS RDAP query. Service info: https://about.rdap.org/ (includes privacy considerations). Terms / policy: https://about.rdap.org/
* **Verisign RDAP** — fallback / TLD RDAP lookup for supported zones (for example .com). Data sent: the domain name in an HTTPS RDAP query. Terms of use: https://www.verisign.com/legal-center/rdap-terms/ — Privacy: https://www.verisign.com/legal-center/privacy/
* **Aepto** (https://app.aepto.com) — only when you Connect, opt in to anonymous install stats, or load optional outside-uptime / Protection data. Data may include install id, site URL/host, OAuth tokens you authorize, and monitoring identifiers you enable. Privacy: https://aepto.com/privacy — Terms: https://aepto.com/terms

PHP security checks use the local `PHP_VERSION` only (no remote vulnerability API call).

No third-party ads or analytics scripts are injected on the public front end of your site.

Aepto is a product of [Limitless Hosting](https://limitlesshost.net). Learn more at [aepto.com](https://aepto.com).

== Installation ==

1. Install and activate from Plugins, or upload the plugin folder.
2. Open **Aepto → Anchor** and click **Run check now**.
3. Open **Aepto → Settings**, set alert recipients, then **Send test email** (alerts use WordPress mail).
4. See **Aepto → About** for the full free / Connect / paid feature list.
5. Optional: **Protection → Connect free with Aepto** (site must be reachable over HTTPS for Connect).

== Frequently Asked Questions ==

= Does this work without an Aepto account? =

Yes. Domain Anchor — expiry, SSL, DNS, tether, email auth, PHP security, wp_mail alerts, admin bar, report — runs on your WordPress host with zero Aepto login.

= How is this different from Site Health? =

Site Health checks the WordPress engine (PHP, cron, plugins) at a high level. Aepto Domain Anchor checks the **domain layer**: registration, certificate, DNS drift, tether, and mail authentication — and adds **critical PHP CVE alerts** with a crafted message you can paste to your hosting company.

= What PHP vulnerabilities does Aepto check? =

Aepto ships a curated list of **critical** PHP runtime advisories (starting with php2shell: CVE-2026-109618 and CVE-2026-109619). It compares your server’s PHP version to the patched floors from the PHP project, and understands CloudLinux / cPanel ea-php (and alt-php) security backports — including older EOL branches where the host may have backported fixes but you should still plan an upgrade.

= Will this slow down my site? =

Checks run in wp-admin and via WP-Cron. There is no front-end HTML/JS/CSS by default. A small public REST route exists only for the tether challenge.

= What email alerts do I get for free? =

By default: domain and SSL countdown emails at 30, 14, 7, and 1 days, plus immediate mail on tether failure or significant DNS change — to the site admin email. **Mail Pulse** also sends a periodic probe with a confirm link; if WordPress claims “sent” but nobody confirms, Aepto flags a silent failure and warns in wp-admin (because broken mail cannot reliably email you). **Critical PHP** alerts repeat (day 0, 3, 7, then weekly) until the version is patched or you turn PHP alerts off. In **Settings** you can add recipients, toggle alert types, and **Run Mail Pulse now**.

= What is sent to Aepto? =

Nothing until you Connect or opt in to anonymous install stats. After Connect, only what you authorize (domains, monitoring, etc.). PHP security evaluation stays on your WordPress host.

= Can I use this on localhost? =

Yes for Domain Anchor UI and tether. Public RDAP / SSL / DNS for `localhost` will often show empty — use a real domain for full data. **Connect free with Aepto** requires a public **HTTPS** site (Aepto rejects `http://` callbacks, including local Docker). That “Invalid Redirect” message on Connect from localhost is expected, not a broken upgrade link.

== Screenshots ==

1. Domain Anchor — countdown, DNS, email auth
2. Admin bar status chip
3. Protection when connected
4. PHP security — critical advisory + host upgrade ticket

== Changelog ==

= 1.1.1 =
* PHP security: CloudLinux / ea-php (alt-php) backport awareness for php2shell (CVE-2026-109618 / CVE-2026-109619) — reduces false positives when the host already applied a vendor backport but PHP_VERSION stays below php.net
* EOL branches with a recognized backport show as “backported with upgrade recommended” instead of an unpatched critical
* Host ticket includes package confirm steps when a CloudLinux stack is detected

= 1.1.0 =
* PHP security: critical advisory checks (php2shell / CVE-2026-109618 & CVE-2026-109619), admin notice, repeat email alerts, and a copy-ready hosting support ticket
* Display name / tags / description updated for PHP security discoverability (slug unchanged)

= 1.0.1 =
* Review fixes: Aepto-first display name, documented RDAP services, PDF library prefix, Mail Pulse confirm page, scoped notices, remove unnecessary textdomain load

= 1.0.0 =
* Initial release: Domain Anchor, Connect, Protection, settings, continuity report

== Upgrade Notice ==

= 1.1.1 =
CloudLinux / ea-php backport awareness for php2shell (CVE-2026-109618 / CVE-2026-109619) — fewer false positives when the host already backported the fix.

= 1.1.0 =
Adds PHP security alerts for critical CVEs (php2shell) with a host upgrade ticket and optional repeat emails. Display name updated; plugin slug unchanged.

= 1.0.1 =
WordPress.org review fixes and documentation updates.
