Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 24 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,35 @@ maps the regular CRS IDs from 900K for each rule to the range 9,900,000 - 9,999,
<!-- BEGIN GENERATED:REGISTRY_TABLE -->
| *Plugin Name* | *Rule ID Range* | *Repository* | *Type* | *Status* | *CI* | *License* |
|---|---|---|---|---|---|---|
| template | 9,500,000 - 9,500,999 | [coreruleset/template-plugin](https://github.com/coreruleset/template-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/template-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| template | 9,500,000 - 9,500,999 | [coreruleset/template-plugin](https://github.com/coreruleset/template-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/template-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| auto-decoding | 9,501,000 - 9,501,999 | [coreruleset/auto-decoding-plugin](https://github.com/coreruleset/auto-decoding-plugin) | official | untested | | Apache-2.0 |
| antivirus | 9,502,000 - 9,502,999 | [coreruleset/antivirus-plugin](https://github.com/coreruleset/antivirus-plugin) | official | being tested | | Apache-2.0 |
| body-decompress | 9,503,000 - 9,503,999 | [coreruleset/body-decompress-plugin](https://github.com/coreruleset/body-decompress-plugin) | official | being tested | ![Integration tests](https://github.com/coreruleset/body-decompress-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| fake-bot | 9,504,000 - 9,504,999 | [coreruleset/fake-bot-plugin](https://github.com/coreruleset/fake-bot-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/fake-bot-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| google-oauth2 | 9,505,000 - 9,505,999 | [coreruleset/google-oauth2-plugin](https://github.com/coreruleset/google-oauth2-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/google-oauth2-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| drupal-rule-exclusions | 9,506,000 - 9,506,999 | [coreruleset/drupal-rule-exclusions-plugin](https://github.com/coreruleset/drupal-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/drupal-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| wordpress-rule-exclusions | 9,507,000 - 9,507,999 | [coreruleset/wordpress-rule-exclusions-plugin](https://github.com/coreruleset/wordpress-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/wordpress-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| nextcloud-rule-exclusions | 9,508,000 - 9,508,999 | [coreruleset/nextcloud-rule-exclusions-plugin](https://github.com/coreruleset/nextcloud-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/nextcloud-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| dokuwiki-rule-exclusions | 9,509,000 - 9,509,999 | [coreruleset/dokuwiki-rule-exclusions-plugin](https://github.com/coreruleset/dokuwiki-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/dokuwiki-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| cpanel-rule-exclusions | 9,510,000 - 9,510,999 | [coreruleset/cpanel-rule-exclusions-plugin](https://github.com/coreruleset/cpanel-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/cpanel-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| xenforo-rule-exclusions | 9,511,000 - 9,511,999 | [coreruleset/xenforo-rule-exclusions-plugin](https://github.com/coreruleset/xenforo-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/xenforo-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| phpbb-rule-exclusions | 9,512,000 - 9,512,999 | [coreruleset/phpbb-rule-exclusions-plugin](https://github.com/coreruleset/phpbb-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/phpbb-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| phpmyadmin-rule-exclusions | 9,513,000 - 9,513,999 | [coreruleset/phpmyadmin-rule-exclusions-plugin](https://github.com/coreruleset/phpmyadmin-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/phpmyadmin-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| body-decompress | 9,503,000 - 9,503,999 | [coreruleset/body-decompress-plugin](https://github.com/coreruleset/body-decompress-plugin) | official | being tested | <img alt="Integration tests" src="https://github.com/coreruleset/body-decompress-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| fake-bot | 9,504,000 - 9,504,999 | [coreruleset/fake-bot-plugin](https://github.com/coreruleset/fake-bot-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/fake-bot-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| google-oauth2 | 9,505,000 - 9,505,999 | [coreruleset/google-oauth2-plugin](https://github.com/coreruleset/google-oauth2-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/google-oauth2-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| drupal-rule-exclusions | 9,506,000 - 9,506,999 | [coreruleset/drupal-rule-exclusions-plugin](https://github.com/coreruleset/drupal-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/drupal-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| wordpress-rule-exclusions | 9,507,000 - 9,507,999 | [coreruleset/wordpress-rule-exclusions-plugin](https://github.com/coreruleset/wordpress-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/wordpress-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| nextcloud-rule-exclusions | 9,508,000 - 9,508,999 | [coreruleset/nextcloud-rule-exclusions-plugin](https://github.com/coreruleset/nextcloud-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/nextcloud-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| dokuwiki-rule-exclusions | 9,509,000 - 9,509,999 | [coreruleset/dokuwiki-rule-exclusions-plugin](https://github.com/coreruleset/dokuwiki-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/dokuwiki-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| cpanel-rule-exclusions | 9,510,000 - 9,510,999 | [coreruleset/cpanel-rule-exclusions-plugin](https://github.com/coreruleset/cpanel-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/cpanel-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| xenforo-rule-exclusions | 9,511,000 - 9,511,999 | [coreruleset/xenforo-rule-exclusions-plugin](https://github.com/coreruleset/xenforo-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/xenforo-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| phpbb-rule-exclusions | 9,512,000 - 9,512,999 | [coreruleset/phpbb-rule-exclusions-plugin](https://github.com/coreruleset/phpbb-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/phpbb-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| phpmyadmin-rule-exclusions | 9,513,000 - 9,513,999 | [coreruleset/phpmyadmin-rule-exclusions-plugin](https://github.com/coreruleset/phpmyadmin-rule-exclusions-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/phpmyadmin-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| dos-protection-modsecurity | 9,514,000 - 9,514,999 | [coreruleset/dos-protection-plugin-modsecurity](https://github.com/coreruleset/dos-protection-plugin-modsecurity) | official | untested | | Apache-2.0 |
| machine-learning-integration-plugin | 9,516,000 - 9,516,999 | [coreruleset/machine-learning-integration-plugin](https://github.com/coreruleset/machine-learning-integration-plugin) | official | draft | ![Integration tests](https://github.com/coreruleset/machine-learning-integration-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| performance-plugin | 9,517,000 - 9,517,999 | [coreruleset/performance-plugin](https://github.com/coreruleset/performance-plugin) | official | draft (Private) | ![Integration tests](https://github.com/coreruleset/performance-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| ghost-rule-exclusions | 9,518,000 - 9,518,999 | [coreruleset/ghost-rule-exclusions-plugin](https://github.com/coreruleset/ghost-rule-exclusions-plugin) | official | draft (Private) | ![Integration tests](https://github.com/coreruleset/ghost-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| roundcube-rule-exclusions-plugin | 9,519,000 - 9,519,999 | [EsadCetiner/roundcube-rule-exclusions-plugin](https://github.com/EsadCetiner/roundcube-rule-exclusions-plugin) | 3rd-party | &#9989;&nbsp;tested | ![Integration tests](https://github.com/EsadCetiner/roundcube-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | GPL-2.0 |
| sogo-rule-exclusions-plugin | 9,520,000 - 9,520,999 | [EsadCetiner/sogo-rule-exclusions-plugin](https://github.com/EsadCetiner/sogo-rule-exclusions-plugin) | 3rd-party | &#9989;&nbsp;tested | ![Integration tests](https://github.com/EsadCetiner/sogo-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | GPL-2.0 |
| iredadmin-rule-exclusions-plugin | 9,521,000 - 9,521,999 | [EsadCetiner/iredadmin-rule-exclusions-plugin](https://github.com/EsadCetiner/iredadmin-rule-exclusions-plugin) | 3rd-party | &#9989;&nbsp;tested | ![Integration tests](https://github.com/EsadCetiner/iredadmin-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | GPL-2.0 |
| wordpress-hardening-plugin | 9,522,000 - 9,522,999 | [eilandert/wordpress-hardening-plugin](https://github.com/eilandert/wordpress-hardening-plugin) | 3rd-party | &#9989;&nbsp;tested | ![Integration tests](https://github.com/eilandert/wordpress-hardening-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| machine-learning-integration-plugin | 9,516,000 - 9,516,999 | [coreruleset/machine-learning-integration-plugin](https://github.com/coreruleset/machine-learning-integration-plugin) | official | draft | <img alt="Integration tests" src="https://github.com/coreruleset/machine-learning-integration-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| performance-plugin | 9,517,000 - 9,517,999 | [coreruleset/performance-plugin](https://github.com/coreruleset/performance-plugin) | official | draft (Private) | <img alt="Integration tests" src="https://github.com/coreruleset/performance-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| ghost-rule-exclusions | 9,518,000 - 9,518,999 | [coreruleset/ghost-rule-exclusions-plugin](https://github.com/coreruleset/ghost-rule-exclusions-plugin) | official | draft (Private) | <img alt="Integration tests" src="https://github.com/coreruleset/ghost-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| roundcube-rule-exclusions-plugin | 9,519,000 - 9,519,999 | [EsadCetiner/roundcube-rule-exclusions-plugin](https://github.com/EsadCetiner/roundcube-rule-exclusions-plugin) | 3rd-party | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/EsadCetiner/roundcube-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | GPL-2.0 |
| sogo-rule-exclusions-plugin | 9,520,000 - 9,520,999 | [EsadCetiner/sogo-rule-exclusions-plugin](https://github.com/EsadCetiner/sogo-rule-exclusions-plugin) | 3rd-party | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/EsadCetiner/sogo-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | GPL-2.0 |
| iredadmin-rule-exclusions-plugin | 9,521,000 - 9,521,999 | [EsadCetiner/iredadmin-rule-exclusions-plugin](https://github.com/EsadCetiner/iredadmin-rule-exclusions-plugin) | 3rd-party | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/EsadCetiner/iredadmin-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | GPL-2.0 |
| wordpress-hardening-plugin | 9,522,000 - 9,522,999 | [eilandert/wordpress-hardening-plugin](https://github.com/eilandert/wordpress-hardening-plugin) | 3rd-party | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/eilandert/wordpress-hardening-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| database-logging-plugin | 9,523,000 - 9,523,999 | [coreruleset/database-logging-plugin](https://github.com/coreruleset/database-logging-plugin) | official | untested | | Apache-2.0 |
| referer-hardening-plugin | 9,524,000 - 9,524,999 | [coreruleset/referer-hardening-plugin](https://github.com/coreruleset/referer-hardening-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/referer-hardening-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| false-positive-report-plugin | 9,525,000 - 9,525,999 | [coreruleset/false-positive-report-plugin](https://github.com/coreruleset/false-positive-report-plugin) | official | &#9989;&nbsp;tested | ![Integration tests](https://github.com/coreruleset/false-positive-report-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| traffic-observation-plugin | 9,526,000 - 9,526,999 | [coreruleset/traffic-observation-plugin](https://github.com/coreruleset/traffic-observation-plugin) | official | untested | ![Integration tests](https://github.com/coreruleset/traffic-observation-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| referer-hardening-plugin | 9,524,000 - 9,524,999 | [coreruleset/referer-hardening-plugin](https://github.com/coreruleset/referer-hardening-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/referer-hardening-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| false-positive-report-plugin | 9,525,000 - 9,525,999 | [coreruleset/false-positive-report-plugin](https://github.com/coreruleset/false-positive-report-plugin) | official | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/coreruleset/false-positive-report-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| traffic-observation-plugin | 9,526,000 - 9,526,999 | [coreruleset/traffic-observation-plugin](https://github.com/coreruleset/traffic-observation-plugin) | official | untested | <img alt="Integration tests" src="https://github.com/coreruleset/traffic-observation-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| netnea-crs-upgrading-plugin | 9,527,000 - 9,527,999 | [netnea/netnea-crs-upgrading-plugin](https://github.com/netnea/netnea-crs-upgrading-plugin) | 3rd-party | untested | | GPL-3.0 |
| plausible-rule-exclusions-plugin | 9,528,000 - 9,528,999 | [EsadCetiner/plausible-rule-exclusions-plugin](https://github.com/EsadCetiner/plausible-rule-exclusions-plugin) | 3rd-party | &#9989;&nbsp;tested | ![Integration tests](https://github.com/EsadCetiner/plausible-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg) | GPL-2.0 |
| vimbadmin-crs-plugin | 9,529,000 - 9,529,999 | [eilandert/vimbadmin-crs-plugin](https://github.com/eilandert/vimbadmin-crs-plugin) | 3rd-party | &#9989;&nbsp;tested | ![Integration tests](https://github.com/eilandert/vimbadmin-crs-plugin/actions/workflows/integration.yml/badge.svg) | Apache-2.0 |
| plausible-rule-exclusions-plugin | 9,528,000 - 9,528,999 | [EsadCetiner/plausible-rule-exclusions-plugin](https://github.com/EsadCetiner/plausible-rule-exclusions-plugin) | 3rd-party | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/EsadCetiner/plausible-rule-exclusions-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | GPL-2.0 |
| vimbadmin-crs-plugin | 9,529,000 - 9,529,999 | [eilandert/vimbadmin-crs-plugin](https://github.com/eilandert/vimbadmin-crs-plugin) | 3rd-party | &#9989;&nbsp;tested | <img alt="Integration tests" src="https://github.com/eilandert/vimbadmin-crs-plugin/actions/workflows/integration.yml/badge.svg" height="28"> | Apache-2.0 |
| incubator | 9,900,000 - 9,999,999 | [coreruleset/incubator-plugin](https://github.com/coreruleset/incubator-plugin) | official | being tested | | Apache-2.0 |
<!-- END GENERATED:REGISTRY_TABLE -->

Expand Down
4 changes: 2 additions & 2 deletions registry-schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@
},
"repository": {
"type": "string",
"pattern": "^https://github\\.com/[^/]+/[^/]+/?$",
"description": "URL of the plugin source repository (currently only GitHub repositories are supported)"
"pattern": "^https://github\\.com/[A-Za-z0-9]+(?:-[A-Za-z0-9]+)*/[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?/?$",
"description": "URL of the plugin source repository (currently only GitHub repositories are supported); the owner segment follows GitHub's username/org charset (alphanumerics and single hyphens, no dots or underscores) and the repo segment follows GitHub's repo charset (alphanumerics, '.', '_', '-'), so this value can never break out of the markdown/HTML it's rendered into"
},
"type": {
"type": "string",
Expand Down
8 changes: 5 additions & 3 deletions scripts/generate_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import json
import re
import sys
from html import escape
from pathlib import Path

import yaml
Expand All @@ -36,7 +37,7 @@ def format_range(rule_id_range: dict) -> str:

def format_repository(repository: str) -> str:
slug = repository.removeprefix("https://github.com/").rstrip("/")
return f"[{slug}]({repository})"
return f"[{escape(slug, quote=True)}]({escape(repository, quote=True)})"


def format_status(plugin: dict) -> str:
Expand All @@ -50,7 +51,8 @@ def format_status(plugin: dict) -> str:
def format_ci(plugin: dict) -> str:
if not plugin.get("ci"):
return ""
return f"![Integration tests]({plugin['repository'].rstrip('/')}/actions/workflows/integration.yml/badge.svg)"
url = f"{plugin['repository'].rstrip('/')}/actions/workflows/integration.yml/badge.svg"
return f'<img alt="Integration tests" src="{escape(url, quote=True)}" height="28">'


def render_row(plugin: dict) -> str:
Expand Down Expand Up @@ -105,7 +107,7 @@ def render_readme(registry: dict) -> None:
pattern = re.compile(re.escape(BEGIN_MARKER) + r".*?" + re.escape(END_MARKER), re.DOTALL)
if not pattern.search(readme):
raise SystemExit(f"README.md is missing {BEGIN_MARKER} / {END_MARKER} markers")
README.write_text(pattern.sub(table, readme))
README.write_text(pattern.sub(lambda _match: table, readme))


def render_json(registry: dict) -> None:
Expand Down
8 changes: 8 additions & 0 deletions tests/registry/invalid/bad-repository-owner-punctuation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
schema_version: 1
plugins:
- name: example
rule_id_range: {start: 9990000, end: 9990999}
repository: https://github.com/foo.bar/example-plugin
type: official
status: tested
license: Apache-2.0
8 changes: 8 additions & 0 deletions tests/registry/invalid/bad-repository-special-chars.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
schema_version: 1
plugins:
- name: example
rule_id_range: {start: 9990000, end: 9990999}
repository: 'https://github.com/foo/bar"><script>alert(1)</script>'
type: official
status: tested
license: Apache-2.0
Loading
Loading