WP Manifestindependent plugin directory
manifest / updates / robotstxt-manager

Manager (by ROBOTSTXT) WP Registry grade D+. High-severity findings · 3 findingsWP RegistryHigh-severity findings · 3 findingsOpen the reportD+ git.robotstxt.es

Client-side dashboard for the ROBOTSTXT plugin ecosystem. Lists the catalog from a remote Plugins Core install, resolves local install/update state, and installs, activates, and updates plugins directly from the store.

★ 0stars
325release downloads
≈40active sites
1.9.1latest · 1mo ago

Install

Download robotstxt-manager-1.9.1.zip From the 1.9.1 release on git.robotstxt.es, Sep 23, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from git.robotstxt.es with WP-CLI:

wp plugin install https://git.robotstxt.es/robotstxt/robotstxt-manager/releases/download/1.9.1/robotstxt-manager-1.9.1.zip
Updates itself. It ships its own updater (Update URI header), so new versions appear under Dashboard → Updates.

Client-side dashboard for the ROBOTSTXT plugin ecosystem. Browse the catalog, see what's installed, and spot subscription issues — all from your own wp-admin.

Description

Manager (by ROBOTSTXT) is a WordPress plugin that customers install on their own site. It connects to a remote Plugins Core installation (via REST API + account-level API key) and provides a single dashboard for the ROBOTSTXT plugin ecosystem:

  • Lists the full plugin catalog with name, type (free/premium), price, and current version.
  • For each catalog entry, shows the local install state: not installed, installed (inactive), up to date, or update available.
  • Click a plugin's row to expand its description and a link to its website on the store.
  • One-click actions: Install, Activate, and Update run on a classic page load with a standard admin notice (green/red) reporting the outcome; Buy redirects to checkout on the store site.
  • Subscription health dashboard (Phase 4+): license expiring soon, payment failed, expired — surfaced as admin notices so issues are visible before updates silently stop.

This plugin does not re-implement the per-plugin update mechanism. Every ROBOTSTXT plugin bundles its own copy of the Robotstxt_Core_Plugin_Updater SDK, so updates keep working even if Manager is deactivated. Manager's value is visibility and one place to click.

Requires Core 1.4.2+ on the store for descriptions in the catalog list (older Core versions still work; rows simply show no description).

Using the plugin

Settings

Configure at ROBOTSTXT → Settings:

  • Store URL — Base URL of the remote Plugins Core installation (defaults to https://www.robotstxt.software).
  • API Key — Account-level API key issued by the ROBOTSTXT store. Encrypted before storage; masked in the UI (last 4 characters shown). Use the "Test connection" button to verify connectivity.
  • Catalog Cache (minutes) — How long the catalog response is cached in a transient. Default: 60 minutes.
  • Data on Uninstall — Opt-in checkbox. When enabled, all Manager options and transients are deleted on uninstall. Default: off.

Main screen

ROBOTSTXT → Plugins shows the catalog table:

Column Description
Plugin Name from the store. The row below each plugin carries its website link and description (always visible).
Version Current version in the store.
Requires WP / Requires PHP Minimum requirements, checked against this site (warning icon when not met).
Price "Free", or the annual price for premium plugins.
Action Install / Activate / Update / Buy, depending on local state.
Status Not installed / Installed (inactive) / Up to date / Update available (vX → vY).

Below the table: a Support section and an explanation of Payments (annual subscriptions, automatic renewal, cancellation, Mollie processing).

Click "Refresh catalog" to force a fresh fetch from Core. Install, Activate, and Update run on a classic page load (no JavaScript) and report the result as a standard admin notice.

Extra Configurations

No extra define() constants are required in wp-config.php. All configuration is done via the Settings page in wp-admin.

Installation

Automatic download

Visit the plugin section in your WordPress, search for Manager (by ROBOTSTXT); download and install the plugin.

Manual download

Extract the contents of the ZIP and upload the contents to the /wp-content/plugins/robotstxt-manager/ directory. Once uploaded, it will appear in your plugin list. Go to ROBOTSTXT → Settings to configure the Store URL and API key.

Frequently Asked Questions

Is this plugin compatible with WordPress Multisite?

No. This plugin is intentionally not compatible with WordPress Multisite, matching the architecture of the rest of the ecosystem.

What PHP version is required?

PHP 8.0 or higher.

Do I need Plugins Core installed on my site?

No. Plugins Core runs on the ROBOTSTXT store site. This plugin talks to it remotely via REST API. You do not need Core, Mollie, or Sync installed locally.

How is the API key stored?

Encrypted at rest using AES-256-CBC with a key derived from your site's WordPress AUTH_KEY and AUTH_SALT constants. Never stored in plaintext, never logged, never exposed in any response.

Compatibility

  • WordPress: 4.4 - 7.1
  • PHP: 8.0 - 8.5

Changelog

Only the 3 last versions. The full changelog will be at changelog.txt

1.7.0

Release date: 2026-08-18

  • New: per-domain license support (Core 1.11.0+) — downloads and download-token exchanges now send this site's domain, so premium licenses bind to this site and the store rejects them from other domains. Catalog subscription pills show the bound domain (e.g. "Subscribed @ example.com").
  • Improvement: download failures now surface the store's own error message (e.g. the domain-mismatch explanation) instead of a bare HTTP status code.

1.6.2

Release date: 2026-08-18

  • Added: ROBOTSTXT_MANAGER_NOTICED presence constant (guarded, true) — ecosystem plugins detect Manager via a constant check instead of scanning the plugin list.

1.6.1

Release date: 2026-08-18

  • Fixed: "headers already sent" warning after saving the settings — the form handler now runs on admin_init, before any output.

Previous versions

If you want to see the full changelog, visit the plugin page.

Compliance

This plugin adheres to the following security measures and review protocols for each version:

Releases

25 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
1.9.1 latest
Sep 23, 2026 1mo ago
robotstxt-manager-1.9.1.zip
107
Sep 23, 2026 1mo ago
robotstxt-manager-1.8.1.zip
4
Sep 11, 2026 1mo ago
robotstxt-manager-1.8.0.zip
51
Aug 24, 2026 2mo ago
robotstxt-manager-1.7.0.zip
40
Aug 18, 2026 2mo ago
robotstxt-manager-1.6.1.zip
38
Aug 18, 2026 2mo ago
robotstxt-manager-1.6.0.zip
6
Aug 18, 2026 2mo ago
robotstxt-manager-1.5.0.zip
3
Aug 17, 2026 2mo ago
robotstxt-manager-1.4.1.zip
17
Aug 17, 2026 2mo ago
robotstxt-manager-1.4.0.zip
4
Aug 17, 2026 2mo ago
robotstxt-manager-1.3.1.zip
3
Aug 17, 2026 2mo ago
robotstxt-manager-1.3.0.zip
3
Aug 17, 2026 2mo ago
robotstxt-manager-1.2.1.zip
4
Aug 17, 2026 2mo ago
robotstxt-manager-1.2.0.zip
3
Aug 17, 2026 2mo ago
robotstxt-manager-1.1.0.zip
3
Aug 17, 2026 2mo ago
robotstxt-manager-1.0.0.zip
3
Aug 17, 2026 2mo ago
robotstxt-manager-0.6.0.zip
3
Aug 15, 2026 2mo ago
robotstxt-manager-0.5.3.zip
7
Aug 15, 2026 2mo ago
robotstxt-manager-0.5.1.zip
6
Aug 14, 2026 2mo ago
robotstxt-manager-0.5.0.zip
2
Aug 14, 2026 2mo ago
robotstxt-manager-0.4.0.zip
2
Aug 14, 2026 2mo ago
robotstxt-manager-0.3.1.zip
2
Aug 12, 2026 2mo ago
robotstxt-manager-0.1.3.zip
8
Aug 12, 2026 2mo ago
robotstxt-manager-0.1.2.zip
2
Aug 12, 2026 2mo ago
robotstxt-manager-0.1.1.zip
2
Aug 12, 2026 2mo ago
robotstxt-manager-0.1.0.zip
2

Active-site estimate ≈40 comes from the median of recent superseded releases. Method.

D+ grade

Security

Manager (by ROBOTSTXT) 1.9.1 · audited by WP Registry

High-severity findings.

1 high 2 medium
Audited release
1.9.1
Findings
3
Worst severity
high
Content hash
5f2b3659bf59dd709a561aa1…

Findings

  • high Catalog slug collision is injected as a native plugin update

    rce

    After activation the store URL defaults to https://www.robotstxt.software, so inject_updates() runs for every read of the update_plugins transient with no extra settings. It maps every installed plugin by directory slug onto the remote catalog and, when the catalog version is higher, writes a store package into update_plugins->response. The only refusal is when that response slot is already occupied by a package whose host is not the store; an up-to-date WordPress.org plugin has an empty response slot and is therefore claimed. Update URI is never consulted, even though this plugin sets one itself. WordPress then offers the store ZIP on the Plugins and Updates screens, to WP-CLI, and to auto-updates. Plugin_Upgrader downloads {store}/wp-json/robotstxt-core/v1/plugins/{slug}/download and, for an active plugin, reactivates whatever PHP the store returns. A catalog entry whose slug collides with an unrelated plugin (benign naming clash or a compromised store) replaces that plugin without anyone using Manager's Install button. Free entries do not need an API key. A subscriber cannot trigger this; the actor is the configured store.

    includes/class-robotstxt-manager-updater.php:92-137

    Recommendation

    Inject an update only for plugins this Manager install actually installed, or whose Update URI host equals the configured store host. Do not claim a response slot that WordPress.org left empty just because the directory slug matches a catalog row. Ignore catalog rows that fail that provenance check before version_compare.

  • medium Long-lived API key is placed in the update package URL and persisted in the transient

    information_disclosure

    Premium package URLs prefer a short-lived download token, but if POST /me/download-token fails the decrypted account API key is appended as the api_key query argument. That object is returned from the site_transient_update_plugins filter. Core wp_update_plugins() reads the filtered transient and immediately set_site_transient()s it, then returns without restoring a clean copy when api.wordpress.org errors — the host class this plugin documents as common. The long-lived key, which the settings screen otherwise encrypts with AES-256-CBC, then sits in plaintext in the update_plugins site transient (options or sitemeta) and is sent on the download query string, so it is copied into store access logs, backup dumps, and any redirect target. A subscriber cannot call this path; anyone who can read the transient or those logs gets the store bearer credential. The same URL shape also stores the shorter-lived download token on the happy path.

    includes/class-robotstxt-manager-updater.php:447-462

    Recommendation

    Never put the account API key in a package URL or in the update transient. If the token exchange fails, omit the premium package so WordPress does not advertise an update, and keep retrying the token endpoint from the upgrader download filter instead of persisting a credential. Prefer an Authorization header on a custom upgrader HTTP filter over a query argument.

  • medium Free-plugin install fetches catalog download_url with no host allowlist

    ssrf

    handle_install() is limited to manage_options / manage_network_options plus a nonce, so a subscriber cannot open it. When an administrator does click Install, a catalog row whose type is not premium and whose download_url is non-empty is passed straight to wp_remote_get and, if the file starts with PK, to Plugin_Upgrader::install. There is no allowlist against the configured store host, no wp_http_validate_url / reject_unsafe_urls call, and no checksum. A catalog download_url of an internal or link-local HTTP URL is a blind server-side request; a URL that returns a ZIP is unpacked into wp-content/plugins. The same path runs for requires_plugins dependencies that resolve to a catalog row, without a second confirmation. The store download endpoint is skipped whenever that public URL is present, including cleartext http URLs that a network attacker can swap. The new plugin is left inactive, but its PHP is on disk under the plugins directory.

    admin/class-robotstxt-manager-installer.php:535-565

    Recommendation

    Download free plugins only from the configured store host over HTTPS, or from an explicit allowlist. Reject download_url values that fail wp_http_validate_url, and pass reject_unsafe_urls. Require a catalog checksum and refuse the ZIP when the installed directory slug does not match the requested slug.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.