Skip to content
Open
Show file tree
Hide file tree
Changes from 3 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._-]*[A-Za-z0-9])?/?$",
"description": "URL of the plugin source repository (currently only GitHub repositories are supported); owner and repo segments are restricted to GitHub's own charset so this value can never break out of the markdown/HTML it's rendered into"
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
},
"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-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