Download the PHP package metrictower/funnypot-wordpress without Composer

On this page you can find all versions of the php package metrictower/funnypot-wordpress. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package funnypot-wordpress

funnypot-wordpress 🍯

Docs

Not sure you're in the right place?

  • Want a ready-to-run honeypot box to deploy → funnypot-app
  • Protecting a Laravel app → funnypot-laravel
  • Protecting a WordPress site → funnypot-wordpress ← you are here
  • Detection and IP reporting in any PHP app, batteries included → funnypot
  • Embedding the deception/detection engine in your own PHP / PSR-15 app → funnypot-core
  • Querying / reporting to the IP-reputation service from code (the SDK) → funnypot-mainnet-client
  • Building on the low-level decision/policy engine → funnypot-policy

A thin WordPress adapter over the metrictower/funnypot-policy decision engine. The plugin does not decide whether a request is an attack, whether to deceive, block, or report — that is the shared policy engine's job. D only:

  1. normalizes the WP request into a neutral RequestEvidence + a WpSiteProfile (the real-route oracle — the one job only WordPress can do),
  2. asks Funnypot\Policy\PolicyEngine::evaluate() for a Decision, and
  3. executes that Decision: allow/log → WordPress proceeds; deceive → emit core's byte-exact fake and exit before the theme loads; block → emit an honest app-chosen 403.

All decision logic (cheapest-first precedence, learn-then-enforce, pin/TTL, report suppression) lives once in funnypot-policy. The deception content is core's (metrictower/funnypot-core), unchanged.

Status

Inert by default. A fresh install decides nothing until an operator enables a posture. Reputation checking and reporting are each off, and both require a MAINNET_KEY.

The plugin code is PHP 7.3-clean (old WP hosts run old PHP), and the bundled funnypot-core is now PHP 7.3+ too — the 7.3 re-floor and the two-phase classify()/synthesize() split shipped in core v0.0.1.

Install

As a downloadable zip (recommended for WP hosts)

bin/build.sh (see Build) produces build/funnypot-wordpress.zip with vendor/metrictower/{funnypot-policy,funnypot-core,mainnet-client}/ and core's rules artifacts bundled. Upload it under Plugins → Add New → Upload Plugin, then activate.

As a Composer package

On activation the plugin creates its tables, generates a per-install sensor_id, and copies a must-use loader shim into wp-content/mu-plugins/ so the BEFORE position runs at the earliest hook. If that directory is not writable it falls back to plugins_loaded and raises an admin notice.

Configure

Settings → Honeypot produces the policy config array. Key choices:

wp-config.php constants (override the stored settings)

Reporting/checking are inert without a key. The single key is a mainnet sensor-tier key carrying both report rights and an escalation-check quota (O2).

Local intel dashboard

Settings → Honeypot Intel is a read-only view of what the honeypot has caught locally (the Wordfence "Live Traffic" analog — the operator's reason to install). It renders the honeypot_wp_hits store and local state: summary tiles (total events, events in the last 24h, report-queue depth, blacklist-mirror age), a paginated recent-events table (time, IP, method, path, action, reason, status), top attacker IPs over the last 24h, and the mass_plugin_scan rollups. When WP-native capture is on, the login/xmlrpc/REST rows appear here too. When the pingback shield is on, a "XML-RPC pingback SSRF targets (captured)" table lists the captured source URIs per IP — every target is attacker-supplied and is escaped as text on output (never emitted raw or in an attribute).

WP-Cron caveat

WP-Cron only fires on traffic, so on a low-traffic site the report drain, the O1 blacklist-mirror pull, and the GeoIP refresh can stall between visits. For any install that enables reporting, checking, or the mirror, disable WP-Cron and use a real system cron:

The corpus auto-update rides the same honeypot_wp_rules_pull WP-cron event; with DISABLE_WP_CRON a wp cron event run honeypot_wp_rules_pull line on your chosen interval keeps it firing.

Deception corpus auto-update (data only)

When rules_autoupdate_enabled is on, a WP-cron event (honeypot_wp_rules_pull, on the configured hourly/twicedaily/daily schedule, with a per-host jittered first run) runs funnypot-core's signed rules-update engine to fetch a newer detection corpus and hot-swap it into a local data dir the engine reads in preference to its bundled copy. This ships DATA only — the corpus, templates and fingerprints — never executable engine code (that stays on the plugin auto-update / composer track, and shipping code this way is wp.org-prohibited and would lose the array-literal guard below).

Prerequisite (not live yet): the metrictower/funnypot-rules distribution repo and its published signing keys do not exist yet. Until they do, every pull fails signature verification and the corpus stays on the bundled floor — which is why this feature ships default-off. The consumer wiring is complete and tested; enabling it becomes useful once the distribution + keys are stood up.

WP-CLI

status reports the verified BEFORE mount (mu-plugin / plugins_loaded (degraded) / not running), not the configured intent — so a wiped shim that silently demoted the BEFORE position is visible (Wordfence gap a).

Security invariants

Testing

Unit suite (green here)

Pure PHPUnit + Brain Monkey — no WordPress, no DB. Every test drives either a fake PolicyEngine or the real one wired with D's real ports; WP I/O is mocked.

The suite includes an end-to-end "wired ports" test (a scanner-probe / sacrificial /.env evidence → a deceive/block Decision through the real PolicyEngine + D's real adapters), the SF-4 shim-takedown proof, and a real-Funnypot\Honeypot integration smoke test.

Live: wp-env integration suite

Integration against a real WordPress — booted by @wordpress/env in Docker — is live. The suite issues real HTTP requests to the booted site and asserts the plugin's actual request-time behavior: a scanner probe for /.env is deceived (the 404 is upgraded into a fake-vulnerable 200 serving a synthetic .env), a benign unknown path passes through as WordPress' own 404, and the homepage is served untouched. Needs Docker. It skips cleanly when the base URL is unreachable, so it is safe in a CI stage without Docker.

Full run instructions, the observed-behavior table, and the environment notes (PHP 8.2 container, sibling-package mappings, the pinned wp-env version) are in docs/INTEGRATION.md.

Build

Deferred / prerequisites

Try it locally (Docker)

A docker-compose.yml stands up real WordPress with this plugin live-mounted and activated, so you can click through the Funnypot settings/intel screens and confirm it installs cleanly. It doubles as an install smoke test.


All versions of funnypot-wordpress with dependencies

PHP Build Version
Package Version
Requires php Version >=7.3
metrictower/funnypot-policy Version ^0.1
metrictower/funnypot-core Version ^0.3
metrictower/funnypot-mainnet-client Version ^0.1
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package metrictower/funnypot-wordpress contains the following files

Loading the files please wait ...