From dafe361ac3cc952531bc327a1c21cd5a5c09ee25 Mon Sep 17 00:00:00 2001 From: savacano28 Date: Mon, 24 Nov 2025 12:22:52 +0100 Subject: [PATCH 1/5] [all] chore: add validate pr title workflow --- .github/PULL_REQUEST_TEMPLATE.md | 19 +++++++++++++++ .github/workflows/validate-pr-title.yml | 32 +++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/workflows/validate-pr-title.yml diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..e04b957 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,19 @@ + + +### Proposed changes + +* +* + +### Related issues + +* Closes #ISSUE-NUMBER + +### Further comments + +If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc... diff --git a/.github/workflows/validate-pr-title.yml b/.github/workflows/validate-pr-title.yml new file mode 100644 index 0000000..f916026 --- /dev/null +++ b/.github/workflows/validate-pr-title.yml @@ -0,0 +1,32 @@ +name: "Validate PR Title" + +on: + pull_request: + types: [ opened, edited, reopened, ready_for_review, synchronize ] + +jobs: + validate-pr-title: + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + + steps: + - name: Check PR title format + shell: bash + run: | + TITLE="${{ github.event.pull_request.title }}" + echo "PR title: $TITLE" + + # Regex for: + # [category/subcategory] type(scope?): description (#123?) + PATTERN='^\[([a-z]+(/[a-z]+)*)\] (feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)(\([a-z]+\))?: [a-z].*( \(#[0-9]+\))$' + + if [[ ! "$TITLE" =~ $PATTERN ]]; then + echo "❌ Invalid PR title." + echo "Required format:" + echo "[category] type(scope?): description (#123)" + exit 1 + fi + + echo "✅ PR title is valid." \ No newline at end of file From ddb9b4e4ddb78074e58d4787119c10dbe1c1bd5f Mon Sep 17 00:00:00 2001 From: savacano28 Date: Mon, 24 Nov 2025 12:26:27 +0100 Subject: [PATCH 2/5] [all] chore: add validate pr title workflow --- .github/PULL_REQUEST_TEMPLATE.md | 19 ------------------- 1 file changed, 19 deletions(-) delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index e04b957..0000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,19 +0,0 @@ - - -### Proposed changes - -* -* - -### Related issues - -* Closes #ISSUE-NUMBER - -### Further comments - -If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc... From 907bb7d4d49727e9771758cb8559754e5322e9e6 Mon Sep 17 00:00:00 2001 From: savacano28 Date: Mon, 24 Nov 2025 12:29:44 +0100 Subject: [PATCH 3/5] [all] chore: rename PyOBAS to PyOAEV --- docs/development/collectors.md | 12 ++++++------ docs/development/injectors.md | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/development/collectors.md b/docs/development/collectors.md index dbb7dea..2d1d912 100644 --- a/docs/development/collectors.md +++ b/docs/development/collectors.md @@ -13,9 +13,9 @@ them against injected expectations in OpenAEV. Note that while this guide puts an emphasis on the Python language, a collector may be implemented in any language because it communicates with the OpenAEV server via its REST API. However, Filigran provides an official implementation - of a REST client for the OpenAEV API, in python: PyOBAS. + of a REST client for the OpenAEV API, in python: PyOAEV. -In this guide, we will use [PyOBAS](https://pypi.org/project/pyobas/), the official OpenAEV API client for Python. The guide requires a basic understanding +In this guide, we will use [PyOAEV](https://pypi.org/project/pyoaev/), the official OpenAEV API client for Python. The guide requires a basic understanding of the Python language, and a working Python install on the development machine. ### High level overview @@ -25,10 +25,10 @@ expectations from within the OpenAEV system. ![High level process overview](assets/high-level-collector-overview.png) -This would translate to this partially-pseudo code, using PyOBAS (some functions omitted for brevity): +This would translate to this partially-pseudo code, using PyOAEV (some functions omitted for brevity): ```python -from pyobas.daemons import CollectorDaemon -from pyobas.configuration import Configuration +from pyoaev.daemons import CollectorDaemon +from pyoaev.configuration import Configuration # this is where the whole of the collector logic needs # to be implemented. @@ -145,4 +145,4 @@ You may find reference implementations in the OpenAEV Collectors repository: * [Microsoft Sentinel](https://github.com/OpenAEV-Platform/collectors/tree/main/microsoft-sentinel) You might find them useful to find inspiration on how to implement a matching logic against your EDR or SIEM -of choice, using PyOBAS. +of choice, using PyOAEV. diff --git a/docs/development/injectors.md b/docs/development/injectors.md index 8a33ee4..0847979 100644 --- a/docs/development/injectors.md +++ b/docs/development/injectors.md @@ -26,7 +26,7 @@ internally to access the parameter values. !!! note "🐍 Python-based injectors" - For injectors created with the Python language, Filigran maintains the [`pyobas` library](https://pypi.org/project/pyobas/) + For injectors created with the Python language, Filigran maintains the [`pyoaev` library](https://pypi.org/project/pyoaev/) which provides a wealth of utility classes to compose a functional contract. Note however that injectors are typically independent processes communicating with OpenAEV via a network transport, From fec481230ace1ef9cec05ec6fb5e5be9fb1a8018 Mon Sep 17 00:00:00 2001 From: savacano28 Date: Mon, 24 Nov 2025 12:33:58 +0100 Subject: [PATCH 4/5] [all] chore: linter --- docs/administration/policies.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/administration/policies.md b/docs/administration/policies.md index 945b2c9..7d5aaf3 100644 --- a/docs/administration/policies.md +++ b/docs/administration/policies.md @@ -10,9 +10,12 @@ This page currently includes the configuration of _login messages_, with plans t **Login Messages** Administrators can create and manage messages that are displayed to users upon login. This feature is useful for providing important information or updates directly to users when they access the platform. There are three types of messages: - * **Platform Login Message**: Displayed above the login form to communicate vital information or announcements. - * **Platform Consent Message**: Displayed to users during the login process. It appears as a notification that blocks access to the login form until users actively give their consent by checking an approval box. This ensures that users acknowledge and agree to certain terms or conditions before proceeding with logging in. - * **Platform Consent Confirm Text**: A message accompanying the consent box, providing clarity on the consent confirmation process. + +**Platform Login Message**: Displayed above the login form to communicate vital information or announcements. + +**Platform Consent Message**: Displayed to users during the login process. It appears as a notification that blocks access to the login form until users actively give their consent by checking an approval box. This ensures that users acknowledge and agree to certain terms or conditions before proceeding with logging in. + +**Platform Consent Confirm Text**: A message accompanying the consent box, providing clarity on the consent confirmation process. These messages can be customized to fit the organization's specific needs and requirements, ensuring that critical information is communicated effectively to users. From 10624012d6057de76a151e2b3cec4e666c9e7768 Mon Sep 17 00:00:00 2001 From: savacano28 Date: Thu, 27 Nov 2025 18:28:11 +0100 Subject: [PATCH 5/5] [ci] chore(workflow): add pr title validation --- .github/workflows/validate-pr-title.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/validate-pr-title.yml b/.github/workflows/validate-pr-title.yml index f916026..5d26d3f 100644 --- a/.github/workflows/validate-pr-title.yml +++ b/.github/workflows/validate-pr-title.yml @@ -18,6 +18,12 @@ jobs: TITLE="${{ github.event.pull_request.title }}" echo "PR title: $TITLE" + # Skip validation for renovate + if [[ "$TITLE" == *"chore(deps)"* ]]; then + echo "⚠️ Skipping validation for renovate Prs." + exit 0 + fi + # Regex for: # [category/subcategory] type(scope?): description (#123?) PATTERN='^\[([a-z]+(/[a-z]+)*)\] (feat|fix|chore|docs|style|refactor|perf|test|build|ci|revert)(\([a-z]+\))?: [a-z].*( \(#[0-9]+\))$'