PHPackages                             openwpsecurity/core - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [HTTP &amp; Networking](/categories/http)
4. /
5. openwpsecurity/core

ActiveLibrary[HTTP &amp; Networking](/categories/http)

openwpsecurity/core
===================

PSR HTTP and WordPress adapter utilities for OpenWPSecurity plugins.

00PHPCI passing

Since Jun 1Pushed 1w agoCompare

[ Source](https://github.com/victorwitkamp/openwpsecurity-core)[ Packagist](https://packagist.org/packages/openwpsecurity/core)[ RSS](/packages/openwpsecurity-core/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependenciesVersions (1)Used By (0)

OpenWPSecurity Core
===================

[](#openwpsecurity-core)

[![CI](https://github.com/victorwitkamp/openwpsecurity-core/actions/workflows/ci.yml/badge.svg)](https://github.com/victorwitkamp/openwpsecurity-core/actions/workflows/ci.yml)[![Packagist](https://camo.githubusercontent.com/ca990afd15bbb0d7fc648af1e549a1af1fcf400c03f2d2941b0dabbee9da0ec9/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7061636b61676973742d6f70656e77707365637572697479253246636f72652d626c7565)](https://packagist.org/packages/openwpsecurity/core)[![License](https://camo.githubusercontent.com/cd781d0568c328bdea35f284d33e2b1e96675ef60910926c1dd75d5a4d46de66/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d47504c2d2d322e302d2d6f722d2d6c617465722d626c7565)](LICENSE)

Composer package: [`openwpsecurity/core`](https://packagist.org/packages/openwpsecurity/core)

OpenWPSecurity Core contains shared PHP infrastructure used by OpenWPSecurity WordPress plugins. It does not define WordPress plugin tables, options, admin pages, or activation hooks.

Requirements
------------

[](#requirements)

- PHP 8.2 or newer
- Composer 2
- WordPress runtime for WordPress adapter classes

Install
-------

[](#install)

```
composer require openwpsecurity/core:^0.1
```

API Surface
-----------

[](#api-surface)

`VictorWitkamp\OpenWPSecurity\Core\Http\IpAddressInspector`

Resolves trusted IP headers and normalizes IPv4 and IPv6 candidates.

`VictorWitkamp\OpenWPSecurity\Core\Http\WordPressServerRequestFactory`

Creates a PSR-7 `ServerRequestInterface` from the active WordPress request using `laminas/laminas-diactoros`.

`VictorWitkamp\OpenWPSecurity\Core\Http\Response\ResponseDispatcher`

Emits HTML, JSON, text, and redirect responses using PSR-7 response factories and `laminas/laminas-httphandlerrunner`.

`VictorWitkamp\OpenWPSecurity\Core\Configuration\SettingsInputSanitizer`

Normalizes line-based settings, trusted IP header lists, and IP address lists.

`VictorWitkamp\OpenWPSecurity\Core\Location\GeoIpLookup`

Classifies local/private IP addresses and resolves country metadata through the PHP GeoIP extension or optional remote lookup.

`VictorWitkamp\OpenWPSecurity\Core\Admin\Reporting\ReportPeriod`

Maps supported report periods to labels and durations.

`VictorWitkamp\OpenWPSecurity\Core\Admin\Pagination\AdminPaginator`

Builds WordPress admin pagination links for report tables.

`VictorWitkamp\OpenWPSecurity\Core\Admin\Presentation\CountryDistributionPanel`

Renders the shared country distribution panel used by OpenWPSecurity report pages.

Runtime Dependencies
--------------------

[](#runtime-dependencies)

- `laminas/laminas-diactoros`
- `laminas/laminas-httphandlerrunner`
- `psr/http-message`
- `psr/http-factory`

The WordPress adapter classes expect WordPress runtime functions such as `get_option()` and `wp_json_encode()` to be available.

Support
-------

[](#support)

OpenWPSecurity Core is maintained as open-source software. Funding helps cover maintenance, testing, documentation, and continued development.

- GitHub Sponsors:

###  Health Score

20

—

LowBetter than 13% of packages

Maintenance64

Regular maintenance activity

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/21c662cfd12f0d2968122d8ce3d0e02400b5975588f2fc5b133a44248b69ac81?d=identicon)[victorwitkamp](/maintainers/victorwitkamp)

---

Top Contributors

[![victorwitkamp](https://avatars.githubusercontent.com/u/24307531?v=4)](https://github.com/victorwitkamp "victorwitkamp (8 commits)")

### Embed Badge

![Health badge](/badges/openwpsecurity-core/health.svg)

```
[![Health](https://phpackages.com/badges/openwpsecurity-core/health.svg)](https://phpackages.com/packages/openwpsecurity-core)
```

###  Alternatives

[php-http/cache-plugin

PSR-6 Cache plugin for HTTPlug

25025.5M79](/packages/php-http-cache-plugin)[illuminate/http

The Illuminate Http package.

13137.2M6.4k](/packages/illuminate-http)[rdkafka/rdkafka

A PHP extension for Kafka

2.2k20.0k1](/packages/rdkafka-rdkafka)[httpsoft/http-message

Strict and fast implementation of PSR-7 and PSR-17

87930.4k112](/packages/httpsoft-http-message)[mezzio/mezzio-router

Router subcomponent for Mezzio

265.3M82](/packages/mezzio-mezzio-router)[serpapi/google-search-results-php

Get Google, Bing, Baidu, Ebay, Yahoo, Yandex, Home depot, Naver, Apple, Duckduckgo, Youtube search results via SerpApi.com

69122.6k](/packages/serpapi-google-search-results-php)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
