Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
83a2331
Bump termcolor from 3.2.0 to 3.3.0 in /install
dependabot[bot] May 27, 2026
8ac7c1b
Add support for IPv6 in DNS and local network handling
eldraco Jun 2, 2026
b7dbf58
Enhance DNS handling by ignoring evidence from local resolver address…
eldraco Jun 2, 2026
facc1a8
Enhance DNS handling by ignoring evidence from local resolver address…
eldraco Jun 2, 2026
e33f93e
Add check to ignore different localnet for official DNS server
eldraco Jun 2, 2026
d87a74e
Add check to ignore different localnet for official DNS server
eldraco Jun 2, 2026
a724d7d
Add method to retrieve configured DNS server IPs for IPv4 and IPv6
eldraco Jun 2, 2026
798484f
Implement method to check if different-localnet evidence should be ig…
eldraco Jun 2, 2026
d174916
Add methods to store and check official DNS servers
eldraco Jun 2, 2026
3eb7629
Add constant for official DNS servers
eldraco Jun 2, 2026
6987efc
Add methods to check and store official DNS servers
eldraco Jun 2, 2026
9244fb0
Add test to verify different localnet usage ignores official DNS servers
eldraco Jun 2, 2026
17c273d
Add test to verify different localnet usage ignores official IPv6 DNS…
eldraco Jun 2, 2026
0348042
Add tests for configured DNS server IPs and store official DNS servers
eldraco Jun 2, 2026
287454d
Add test for storing official DNS servers in Redis
eldraco Jun 2, 2026
4e22515
Enhance DNS and DHCPv6 traffic handling to reduce false positives
eldraco Jun 2, 2026
593f725
Enhance flow alert handling for DNS and DHCPv6 traffic to reduce fals…
eldraco Jun 2, 2026
ba38a16
Refine connection checks to include expected DNS and DHCP service tra…
eldraco Jun 2, 2026
e7878a0
Refactor DNS handling to register private DNS servers and streamline …
eldraco Jun 2, 2026
486c9b5
Remove unused DNS resolver configuration method and related logic
eldraco Jun 2, 2026
e89d3c4
Add method to ignore private IP connections for official DNS servers
eldraco Jun 2, 2026
d5fb8c6
Update DNS server terminology in RedisDB class methods
eldraco Jun 2, 2026
a7aabc6
Add tests to ignore official DNS server connections and DNS/DHCPv6 se…
eldraco Jun 2, 2026
e97586b
Refactor DNS tests to enhance detection of private IPv6 DNS servers a…
eldraco Jun 2, 2026
0729357
Remove deprecated DNS server configuration tests and related logic
eldraco Jun 2, 2026
589e90b
Update test description for storing DNS servers in Redis
eldraco Jun 2, 2026
0e90ee6
move the registration of dns servers from flowalerts to ip_info
AlyaGomaa Jun 4, 2026
9545956
move diff localnet detection logic from the flowalerts_analyzer inter…
AlyaGomaa Jun 4, 2026
08f0d7c
Merge pull request #1970 from stratosphereips/dependabot/pip/install/…
AlyaGomaa Jun 4, 2026
808044e
move duplicate functions from flowalerts mixins to the new common ut…
AlyaGomaa Jun 4, 2026
02867cb
update submodules
AlyaGomaa Jun 4, 2026
7293451
update unit tests
AlyaGomaa Jun 4, 2026
880ba3f
update ip info unit tests
AlyaGomaa Jun 4, 2026
4ee41be
Merge pull request #1974 from stratosphereips/sebas-add-dns-for-ipv6
AlyaGomaa Jun 4, 2026
fc4153b
make sure all tab separated zeek log files in the dataset/ directory …
AlyaGomaa Jun 5, 2026
b913a7c
fix KeyError getting the GW of an interface
AlyaGomaa Jun 5, 2026
76f3e15
add the used redis and zeek commands to slips.log
AlyaGomaa Jun 5, 2026
afe78df
iasync_module: suppress KeyboardInterrupt,SystemExit, and asyncio.Can…
AlyaGomaa Jun 5, 2026
51ff736
add immmune type PAMP/DAMP to slips evidence, STIX and IDMEF evidence
AlyaGomaa Jun 5, 2026
db22d8e
fix the links to idmefv2 docs/schema
AlyaGomaa Jun 5, 2026
5adacda
Dont set evidence for "unknown ports" when the proto isnt recognized …
AlyaGomaa Jun 5, 2026
5b6b6e0
fix same user agent detected in "Multiple user agent" evidence
AlyaGomaa Jun 5, 2026
27f9833
ensure the detected gw ip belongs to the detected localnet before rep…
AlyaGomaa Jun 5, 2026
ec1c011
fix problem detecting if the gw ip belongs to localnetwork
AlyaGomaa Jun 5, 2026
a41aa81
fix hanging on the pre_main of ip_info forever
AlyaGomaa Jun 5, 2026
cbd6ae2
add unified model docs and clarify NF4 baseline in quantization docs
harpomaxx Jun 9, 2026
209b3fa
add unified model links to Immune.md index
harpomaxx Jun 9, 2026
107a362
fix unified procedure: document actual dataset pipeline and version h…
harpomaxx Jun 9, 2026
02ae441
simplify unified procedure: describe v2 path only, drop v1/v3 history
harpomaxx Jun 9, 2026
ae364dd
add training history notes for v1 and v3 to unified procedure
harpomaxx Jun 9, 2026
7c794ef
expand augmentation step with motivation, source details, and record …
harpomaxx Jun 9, 2026
001b05e
remove specific GPU model references from immune docs
harpomaxx Jun 9, 2026
dedff5a
add HuggingFace dataset link to unified procedure
harpomaxx Jun 9, 2026
036fd43
use IDMEFv2PriorityEnum instead of IDMEFv2Severity for reporting slip…
AlyaGomaa Jun 15, 2026
b70f583
report the priority in the "Priority" field of the jsonl
AlyaGomaa Jun 15, 2026
76998df
fix problem getting ioc type when converting evidence to idmef
AlyaGomaa Jun 15, 2026
f6c8bfa
use idmefv2==0.8
AlyaGomaa Jun 15, 2026
b684963
Merge pull request #1988 from stratosphereips/alya/fix_idmef_warning
AlyaGomaa Jun 15, 2026
bf331b7
Bump actions/checkout from 6 to 7
dependabot[bot] Jun 19, 2026
14e615f
update unit tests
AlyaGomaa Jun 22, 2026
4e567bd
make sure all tab separated zeek log files in the dataset/ directory …
AlyaGomaa Jun 5, 2026
b88f7d8
fix KeyError getting the GW of an interface
AlyaGomaa Jun 5, 2026
adb4471
add the used redis and zeek commands to slips.log
AlyaGomaa Jun 5, 2026
117058f
iasync_module: suppress KeyboardInterrupt,SystemExit, and asyncio.Can…
AlyaGomaa Jun 5, 2026
47df6f9
add immmune type PAMP/DAMP to slips evidence, STIX and IDMEF evidence
AlyaGomaa Jun 5, 2026
c6d7c7f
fix the links to idmefv2 docs/schema
AlyaGomaa Jun 5, 2026
5e3e4cf
Dont set evidence for "unknown ports" when the proto isnt recognized …
AlyaGomaa Jun 5, 2026
0fd169b
fix same user agent detected in "Multiple user agent" evidence
AlyaGomaa Jun 5, 2026
257be1f
ensure the detected gw ip belongs to the detected localnet before rep…
AlyaGomaa Jun 5, 2026
fe4192d
fix problem detecting if the gw ip belongs to localnetwork
AlyaGomaa Jun 5, 2026
cb5b638
fix hanging on the pre_main of ip_info forever
AlyaGomaa Jun 5, 2026
cefb4b7
update unit tests
AlyaGomaa Jun 22, 2026
b8cd19a
Merge remote-tracking branch 'origin/alya/small_bug_fixes' into alya/…
AlyaGomaa Jun 22, 2026
b7789fc
dont use DAMP as the unknown port immune type
AlyaGomaa Jun 22, 2026
1c9382a
Merge pull request #1990 from stratosphereips/alya/small_bug_fixes
AlyaGomaa Jun 22, 2026
2483511
Merge pull request #1989 from stratosphereips/dependabot/github_actio…
AlyaGomaa Jun 22, 2026
ba8ca69
update unit tests and drop support for ./webinteface.sh
AlyaGomaa Jul 3, 2026
01e730a
bump slips version to 1.1.22
AlyaGomaa Jul 3, 2026
21de4f6
update CHANGELOG.md
AlyaGomaa Jul 3, 2026
45c242b
Trigger a PR monthly from develop to master using CI
AlyaGomaa Jul 3, 2026
9399d35
Move reusable GH actions to workflows/reusable/
AlyaGomaa Jul 3, 2026
265c969
CI: add a workflow that Runs Dockerfile-based unit and integration te…
AlyaGomaa Jul 3, 2026
26c44ac
Add common unit and integration tests jobs to test-suite.yml, with op…
AlyaGomaa Jul 3, 2026
c03dca0
use test-suite in integration-tests.yml and unit-tests.yml
AlyaGomaa Jul 3, 2026
093f75f
fix daemon unit tests
AlyaGomaa Jul 3, 2026
0c9897c
CI : fix the problem of building a docker image for every test
AlyaGomaa Jul 3, 2026
4b5041c
CI: Make slips available in CI for dockerfile to COPY it
AlyaGomaa Jul 3, 2026
0b7d2d7
delete test_app.py
AlyaGomaa Jul 3, 2026
42af53a
docker: use golang:1.22.2 to build iris
AlyaGomaa Jul 3, 2026
b57f30d
Merge remote-tracking branch 'origin/master' into develop
AlyaGomaa Jul 3, 2026
c1f2efd
update iris submodule
AlyaGomaa Jul 3, 2026
9cf701f
commit to trigger CI
AlyaGomaa Jul 3, 2026
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
2 changes: 1 addition & 1 deletion .github/workflows/create-a-new-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
fetch-depth: 0

Expand Down
90 changes: 90 additions & 0 deletions .github/workflows/dockerfile-pr-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# Runs Dockerfile-based unit and integration tests on pull requests to master.
# External contributors must pass the external-pr-approval environment gate
# before tests execute, to avoid running untrusted PR code automatically.

name: dockerfile-pr-tests

on:
pull_request:
branches:
- 'master'
- '!develop'

permissions:
contents: read

jobs:
external-pr-approval:
name: External PR approval
if: ${{ !contains(fromJson('["OWNER","MEMBER","COLLABORATOR"]'), github.event.pull_request.author_association) }}
runs-on: ubuntu-latest
environment:
name: external-pr-approval
steps:
- name: Confirm approval
run: echo "External pull request approved for Dockerfile test execution."

build-docker-image:
name: Build Docker image
if: ${{ always() && (needs.external-pr-approval.result == 'success' || needs.external-pr-approval.result == 'skipped') }}
needs: external-pr-approval
runs-on: ubuntu-22.04
outputs:
docker_image_artifact_name: ${{ steps.image.outputs.artifact_name }}
docker_image_tag: ${{ steps.image.outputs.image_tag }}
steps:
- uses: actions/checkout@v7
with:
ref: ${{ github.ref }}
fetch-depth: 0

- name: Prepare Docker image metadata
id: image
run: |
image_tag="slips-dockerfile-pr-tests:${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
artifact_name="slips-dockerfile-pr-tests-image-${GITHUB_RUN_ID}-${GITHUB_RUN_ATTEMPT}"
echo "image_tag=$image_tag" >> "$GITHUB_OUTPUT"
echo "artifact_name=$artifact_name" >> "$GITHUB_OUTPUT"

- name: Build Docker image
uses: ./.github/workflows/reusable/build-docker-image
with:
artifact_name: ${{ steps.image.outputs.artifact_name }}
image_tag: ${{ steps.image.outputs.image_tag }}

unit-tests:
if: ${{ always() && needs.build-docker-image.result == 'success' }}
needs:
- external-pr-approval
- build-docker-image
uses: ./.github/workflows/test-suite.yml
with:
test_suite_name: unit-tests
test_dir: tests/unit
test_path_prefix: tests/unit/
pytest_workers: "5"
timeout_minutes: 120
output_path: output/unit_tests
artifact_name_prefix: test_slips-output-
container_prefix: slips-unit
docker_image_artifact_name: ${{ needs.build-docker-image.outputs.docker_image_artifact_name }}
docker_image_tag: ${{ needs.build-docker-image.outputs.docker_image_tag }}

integration-tests:
if: ${{ always() && needs.build-docker-image.result == 'success' }}
needs:
- external-pr-approval
- build-docker-image
uses: ./.github/workflows/test-suite.yml
with:
test_suite_name: integration-tests
test_dir: tests/integration
output_prefix: integration/
test_path_prefix: tests/
pytest_workers: "3"
timeout_minutes: 1800
output_path: output/integration_tests
artifact_name_suffix: -integration-output
container_prefix: slips-integration
docker_image_artifact_name: ${{ needs.build-docker-image.outputs.docker_image_artifact_name }}
docker_image_tag: ${{ needs.build-docker-image.outputs.docker_image_tag }}
75 changes: 11 additions & 64 deletions .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,71 +3,18 @@ name: integration-tests
on:
pull_request:
branches:
- 'master'
- '!master'
- 'develop'

jobs:
list-integration-tests:
runs-on: ubuntu-latest
outputs:
test_files: ${{ steps.list.outputs.test_files }}
steps:
- uses: actions/checkout@v6
- id: list
uses: ./.github/actions/list-tests-dir
with:
test_dir: tests/integration
output_prefix: integration/

integration-tests:
needs: list-integration-tests
runs-on: ubuntu-22.04
timeout-minutes: 1800

container:
image: stratosphereips/slips_dependencies
# TensorFlow + multiprocessing + pytest -n can hit /dev/shm limits.
options: --shm-size=2g


# suppress tensorflow warnings
env:
TF_CPP_MIN_LOG_LEVEL: 3
TF_ENABLE_ONEDNN_OPTS: 0

strategy:
fail-fast: false
matrix:
test_file: ${{ fromJson(needs.list-integration-tests.outputs.test_files) }}

steps:
- uses: actions/checkout@v6
with:
ref: ${{ github.ref }}
fetch-depth: 0

- name: Start Redis
uses: ./.github/actions/start-redis

- name: Run Integration Tests for ${{ matrix.test_file }}
run: |
python3 -m pytest tests/${{ matrix.test_file }} -p no:warnings -vv -s -n 3

- name: Build Artifact Name
# built names, otherwise we get numeric names for the artifacts and we dont know which is which
# always() here because when the pytest step fails, GitHub skips the name-building step, so steps.artifact-name.outputs.name is empty
# and upload-artifact rejects it.
if: always()
id: artifact-name
run: |
sanitized_test_file="${{ matrix.test_file }}"
sanitized_test_file=$(printf '%s\n' "$sanitized_test_file" | tr '/' '_')
echo "name=${sanitized_test_file}-integration-output" >> "$GITHUB_OUTPUT"

- name: Upload Artifacts
if: always()
uses: actions/upload-artifact@v7
with:
name: ${{ steps.artifact-name.outputs.name }}
path: |
output/integration_tests
uses: ./.github/workflows/test-suite.yml
with:
test_suite_name: integration-tests
test_dir: tests/integration
output_prefix: integration/
test_path_prefix: tests/
pytest_workers: "3"
timeout_minutes: 1800
output_path: output/integration_tests
artifact_name_suffix: -integration-output
50 changes: 50 additions & 0 deletions .github/workflows/monthly-develop-to-master-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: monthly develop to master PR

on:
schedule:
- cron: '0 7 30 * *'
workflow_dispatch:

permissions:
contents: read

jobs:
create-pr:
runs-on: ubuntu-22.04

steps:
- name: Create monthly PR
env:
GH_REPO: ${{ github.repository }}
GH_TOKEN: ${{ secrets.PR_AUTOMATION_TOKEN }}
run: |
if [ -z "$GH_TOKEN" ]; then
echo "PR_AUTOMATION_TOKEN must be configured so PR-triggered workflows run automatically." >&2
exit 1
fi

ahead_by="$(gh api "repos/$GH_REPO/compare/master...develop" --jq '.ahead_by')"
if [ "$ahead_by" = "0" ]; then
echo "develop has no commits ahead of master. Skipping PR creation."
exit 0
fi

existing_pr="$(gh pr list \
--repo "$GH_REPO" \
--base master \
--head develop \
--state open \
--json number \
--jq '.[0].number')"

if [ -n "$existing_pr" ]; then
echo "PR #$existing_pr from develop to master already exists. Skipping PR creation."
exit 0
fi

gh pr create \
--repo "$GH_REPO" \
--base master \
--head develop \
--title "Slips new version" \
--body "Automated monthly PR from develop to master."
2 changes: 1 addition & 1 deletion .github/workflows/publish-slips-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:

# clone slips and checkout branch
# By default it checks out only one commit
- uses: actions/checkout@v6
- uses: actions/checkout@v7
with:
ref: 'master'
# Fetch all history for all tags and branches
Expand Down
53 changes: 53 additions & 0 deletions .github/workflows/reusable/build-docker-image/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: "Build Docker Image"
description: "Build docker/Dockerfile, export it as an artifact, and expose the image tag"
inputs:
artifact_name:
description: "Artifact name for the exported Docker image tarball"
required: true
dockerfile:
description: "Path to the Dockerfile"
required: false
default: "docker/Dockerfile"
image_tag:
description: "Docker image tag to build and export"
required: true
outputs:
artifact_name:
description: "Artifact name for the exported Docker image tarball"
value: ${{ inputs.artifact_name }}
image_tag:
description: "Docker image tag that was built"
value: ${{ inputs.image_tag }}

runs:
using: "composite"
steps:
- name: Checkout repository with submodules
uses: actions/checkout@v7
with:
ref: ${{ github.ref }}
fetch-depth: 0
submodules: recursive

- name: Validate Docker build context
shell: bash
run: |
test -f iris/go.mod
test -f iris/go.sum
test -f p2p4slips/go.mod
test -f p2p4slips/go.sum

- name: Build Docker image
shell: bash
env:
DOCKERFILE: ${{ inputs.dockerfile }}
IMAGE_TAG: ${{ inputs.image_tag }}
run: |
docker build -t "$IMAGE_TAG" -f "$DOCKERFILE" .
docker save -o docker-image.tar "$IMAGE_TAG"

- name: Upload Docker image
uses: actions/upload-artifact@v7
with:
name: ${{ inputs.artifact_name }}
path: docker-image.tar
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: "List Test Files"
description: "Build JSON matrix of test files"
description: "Auto discovery of integration and unit tests - Build JSON matrix of test files"
inputs:
test_dir:
description: "Directory to search for test_*.py files"
Expand Down
Loading
Loading