Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
5e2a046
test
frnzfk Mar 18, 2026
2fa2ee2
fix port allocation
niklashaug Mar 18, 2026
b50a169
change port in virtual
frnzfk Mar 18, 2026
0c9c1ff
fix: navigation to ctf challenges from within iframe
niklashaug Mar 18, 2026
893ff82
Merge branch 'fix-macos-docker-setup'
frnzfk Mar 18, 2026
04eb191
Merge remote-tracking branch 'origin/fix-ctf-navigation'
frnzfk Mar 18, 2026
ba5f5ba
add draft for CTF challenge
niklashaug Mar 20, 2026
92e3b49
Initial plan
Copilot Mar 23, 2026
33f0577
Add firmware-updater service for STM32 update mechanism
Copilot Mar 23, 2026
d26a2b9
Add test suite for firmware-updater service (16 tests, all passing)
Copilot Mar 23, 2026
b43e3d1
Merge branch 'main' of github.com:niklashaug/CybICS
frnzfk Mar 24, 2026
7266fa2
Merge branch 'main' of github.com:niklashaug/CybICS
frnzfk Mar 24, 2026
4b49cb3
Refactor flashing to use flash_firmware.sh (analogous to flash_if_nee…
Copilot Mar 24, 2026
6e571af
Add pyyaml to tests/requirements.txt for firmware-updater tests
Copilot Mar 24, 2026
e1df6f1
Revert "Refactor flashing to use flash_firmware.sh (analogous to flas…
zierh Mar 24, 2026
9639fd3
draft: add lifecycle status controls to challenge
niklashaug Mar 24, 2026
2fd23fe
draft: test lifecycle for ids ctf
niklashaug Mar 24, 2026
3df4bb1
draft: show setup container as floating banner
niklashaug Mar 24, 2026
22ea468
add openwrt dockerfile
frnzfk Mar 29, 2026
a960163
add tap interfaces
frnzfk Mar 29, 2026
196dc17
draft: aktueller stand mit qemu (bäääh)
frnzfk Mar 31, 2026
2f91e3b
per ssh erreichbar
frnzfk Apr 1, 2026
8693f60
refactor lifecycle process to use profile instead of service ids
niklashaug Apr 10, 2026
66eaf0c
add fastapi firmware update server
niklashaug Apr 10, 2026
6c1fb9b
change int network name
frnzfk Apr 11, 2026
c67972e
debug commit
frnzfk Apr 12, 2026
0a3bb97
add router test
frnzfk Apr 13, 2026
0d6fdc8
update hints regarding update machnism analysis step
niklashaug Apr 13, 2026
5b773c0
Merge branch 'mniedermaier:main' into main
niklashaug Apr 13, 2026
6daeafe
router jetzt gateway
frnzfk Apr 13, 2026
82098af
Merge branch '7-router-virtualsiert' of github.com:niklashaug/CybICS …
frnzfk Apr 13, 2026
a96687c
Merge branch '7-router-virtualsiert' of github.com:niklashaug/CybICS …
frnzfk Apr 13, 2026
dca30b2
Merge pull request #13 from niklashaug/7-router-virtualsiert
frnzfk Apr 13, 2026
14a5810
Merge remote-tracking branch 'origin/main' into ctf-draft
niklashaug Apr 13, 2026
9d08b49
Merge pull request #5 from niklashaug/ctf-draft
niklashaug Apr 13, 2026
6aa1e67
remove unneeded files
niklashaug Apr 13, 2026
26e0103
attempt to fix lifecycle stuff
niklashaug Apr 21, 2026
4318b19
fix: remove macOS quarantine flag from sh script
niklashaug Apr 21, 2026
14f2f82
fix: disable autostart for docker container
zierh Mar 26, 2026
7e95d3f
fix: buid zephyr with root priviliges to bypass permission issues
zierh Apr 21, 2026
1635387
testitest
frnzfk Apr 21, 2026
abdc7cc
feat: add firtual firmware flashing mode
zierh Apr 23, 2026
7f74bda
Merge branch 'copilot/implement-update-mechanism'
zierh Apr 30, 2026
ada8c75
rm legacy /landing/scripts folder from Dockerfile
niklashaug Apr 30, 2026
d6d75ec
fix: use remote submodule url instead of local path
zierh Apr 30, 2026
fc52d87
fix: landing page availability
zierh May 4, 2026
207c01a
fix: use correct host docker socket in container
zierh May 4, 2026
07a9064
add fallback for XDG_RUNTIME_DIR
zierh May 4, 2026
cdbca8e
fix: add proper fallback for XDG_RUNTIME_DIR
zierh May 4, 2026
178d373
add polling for lifecycle status in CTF challenge
niklashaug May 5, 2026
b54fd97
improve lifecycle starting healthcheck
niklashaug May 5, 2026
09891f1
perform proper router cleanup to avoid stale docker network ids
niklashaug May 5, 2026
43cde94
remove test-router script
niklashaug May 5, 2026
6a9c414
remove openwrt test container
niklashaug May 5, 2026
cbb42e1
make Docker Hub login optional
niklashaug May 5, 2026
8314a98
Merge pull request #16 from niklashaug/fix-tests-in-fork-repositories
niklashaug May 5, 2026
d30f332
Merge pull request #14 from niklashaug/fix/landing-page-availability
zierh May 5, 2026
3476021
skip building & pushing docker images in fork repositories
niklashaug May 5, 2026
7a533e2
make Docker Hub login optional
niklashaug May 5, 2026
f39a190
fix: landing page availability
zierh May 4, 2026
3b93dda
fix: use correct host docker socket in container
zierh May 4, 2026
9a9439d
add fallback for XDG_RUNTIME_DIR
zierh May 4, 2026
bf81a63
fix: add proper fallback for XDG_RUNTIME_DIR
zierh May 4, 2026
7fbc61e
Merge pull request #15 from niklashaug/fix-challenge-lifecycle-status
niklashaug May 5, 2026
b6bf42d
add zephyr build step to stm32 Dockerfile
niklashaug May 5, 2026
cf4d8fc
adjust Zephyr SDK installation
niklashaug May 5, 2026
0f277f5
set platform to linux/amd64 for stm32 compose
niklashaug May 5, 2026
b910e2c
fix: increase startup timeouts
zierh May 6, 2026
bcf62b4
Merge pull request #17 from niklashaug/fix-stm32-build
zierh May 6, 2026
786bdfa
bump actions/checkout to v6
niklashaug May 7, 2026
ec8b9d2
bump actions/setup-python to v6
niklashaug May 7, 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
13 changes: 11 additions & 2 deletions .devcontainer/stm32/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@ RUN apt-get update && apt-get install -y \
openssh-client \
&& rm -rf /var/lib/apt/lists/*

# Allow root to use west extension commands in this workspace.
RUN git config --system --add safe.directory '*'

# Create user
RUN addgroup --gid 1000 docker \
&& adduser --uid 1000 --ingroup docker --home /home/docker --disabled-password --gecos "" docker \
Expand Down Expand Up @@ -68,8 +71,14 @@ RUN west init -l app && \
# Install Python requirements using west (recommended method)
RUN west packages pip --install

# Install Zephyr SDK using west (only ARM toolchain)
RUN west sdk install -t arm-zephyr-eabi
# Install Zephyr SDK toolchain only.
# Host tools are already provided via apt packages above.
ENV ZEPHYR_SDK_VERSION=0.17.4
ENV ZEPHYR_SDK_INSTALL_DIR=/home/docker/zephyr-sdk-${ZEPHYR_SDK_VERSION}
RUN wget -q https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v${ZEPHYR_SDK_VERSION}/zephyr-sdk-${ZEPHYR_SDK_VERSION}_linux-x86_64_minimal.tar.xz -O /tmp/zephyr-sdk.tar.xz && \
tar -xf /tmp/zephyr-sdk.tar.xz -C /home/docker && \
${ZEPHYR_SDK_INSTALL_DIR}/setup.sh -t arm-zephyr-eabi && \
rm -f /tmp/zephyr-sdk.tar.xz

# Switch back to root for fixuid setup
USER root
Expand Down
4 changes: 3 additions & 1 deletion .devcontainer/stm32/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
services:
dev:
container_name: cybics-stm32
platform: linux/amd64
image: cybics-stm32-dev
build:
context: ../..
Expand All @@ -12,4 +13,5 @@ services:
# Mount stm32 source into pre-baked Zephyr workspace
- $CYBICS_ROOT/software/stm32:/home/docker/zephyrproject/app
- ~/.ssh:/home/docker/.ssh/
user: ${HOST_UID:-1000}:${HOST_UID:-1000}
# Run as root to avoid bind-mount write failures on hosts with user namespace remapping.
user: root
92 changes: 80 additions & 12 deletions .devcontainer/virtual/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ services:
context: ../../software/attack-machine
dockerfile: Dockerfile
hostname: attack-machine
restart: always
restart: "no"
stdin_open: true
tty: true
cap_add:
Expand Down Expand Up @@ -33,7 +33,7 @@ services:
build:
context: ../../software/OpenPLC
dockerfile: Dockerfile
restart: always
restart: "no"
privileged: true
ports:
- 8080:8080
Expand All @@ -48,7 +48,7 @@ services:
build:
context: ../../software/opcua
dockerfile: Dockerfile
restart: always
restart: "no"
ports:
- 4840:4840
depends_on:
Expand All @@ -62,7 +62,7 @@ services:
build:
context: ../../software/s7com
dockerfile: Dockerfile
restart: always
restart: "no"
ports:
- 1102:1102
depends_on:
Expand All @@ -76,7 +76,7 @@ services:
build:
context: ../../software/FUXA
dockerfile: Dockerfile
restart: always
restart: "no"
ports:
- 1881:1881
depends_on:
Expand All @@ -90,7 +90,7 @@ services:
build:
context: ../../software/hwio-virtual
dockerfile: Dockerfile
restart: always
restart: "no"
ports:
- 8090:8090
depends_on:
Expand All @@ -105,12 +105,13 @@ services:
context: ../..
dockerfile: software/landing/Dockerfile
restart: always
network_mode: host
ports:
- 80:80
cap_add:
- NET_ADMIN
- NET_RAW
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${XDG_RUNTIME_DIR:-/var/run}/docker.sock:/var/run/docker.sock
depends_on:
- openplc

Expand All @@ -119,7 +120,7 @@ services:
build:
context: ../../software
dockerfile: engineeringWS/Dockerfile
restart: always
restart: "no"
ports:
- 6080:6080
- 5901:5901
Expand All @@ -137,9 +138,9 @@ services:
build:
context: ../../software/cybicsagent
dockerfile: Dockerfile
restart: always
restart: "no"
ports:
- 5000:5000
- 5001:5000
- 11434:11434
environment:
# Recommended models: tinyllama (fast), phi3:mini (balanced), llama3.2:3b (quality)
Expand All @@ -166,13 +167,77 @@ services:
build:
context: ../../software/ids
dockerfile: Dockerfile
restart: always
restart: "no"
cap_add:
- NET_ADMIN
- NET_RAW
network_mode: host
depends_on:
- openplc
profiles:
- ids
- full

firmware-updater:
image: mniedermaier1337/cybics-firmware-updater:${CYBICS_VERSION:-latest}
build:
context: ../../software/firmware-updater
dockerfile: Dockerfile
restart: "no"
depends_on:
- stm32
volumes:
- firmware_data:/opt/cybics/firmware
- firmware_keys:/opt/cybics/keys
environment:
- UPDATE_SERVER_URL=${UPDATE_SERVER_URL:-http://update.cybics:8080}
- OPENOCD_HOST=stm32
- OPENOCD_TELNET_PORT=4444
networks:
virt-cybics:
ipv4_address: 172.18.0.8
profiles:
- firmware-server
- hardware

update-server:
image: mniedermaier1337/cybics-update-server:${CYBICS_VERSION:-latest}
build:
context: ../../software/update-server
dockerfile: Dockerfile
restart: always
environment:
- FIRMWARE_VERSION=${FIRMWARE_VERSION:-1.2.1}
- FIRMWARE_MAC=${FIRMWARE_MAC:-extended-mac}
- FIRMWARE_PATH=/opt/cybics/update-server/firmware/firmware.bin
volumes:
- firmware_data:/opt/cybics/update-server/firmware
profiles:
- firmware-server
ports:
- 6689:6689
networks:
virt-cybics:
ipv4_address: 172.18.0.9

stm32:
image: mniedermaier1337/cybics-stm32:${CYBICS_VERSION:-latest}
build:
context: ../../software/stm32
dockerfile: Dockerfile
restart: "no"
ports:
- 3333:3333
- 4444:4444
volumes:
- firmware_data:/opt/cybics/firmware
environment:
- OPENOCD_MODE=${OPENOCD_MODE:-virtual}
networks:
virt-cybics:
ipv4_address: 172.18.0.7
profiles:
- hardware

networks:
virt-cybics:
Expand All @@ -183,3 +248,6 @@ networks:
- subnet: 172.18.0.0/24
gateway: 172.18.0.1

volumes:
firmware_data:
firmware_keys:
2 changes: 1 addition & 1 deletion .github/workflows/buildTest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Install dependencies
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
submodules: recursive

Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/devContainer.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ jobs:
df -h

- name: Login to Docker Hub
if: ${{ secrets.DOCKERHUB_USERNAME != '' && secrets.DOCKERHUB_TOKEN != '' }}
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
Expand Down Expand Up @@ -68,6 +69,7 @@ jobs:
df -h

- name: Login to Docker Hub
if: ${{ secrets.DOCKERHUB_USERNAME != '' && secrets.DOCKERHUB_TOKEN != '' }}
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
Expand Down Expand Up @@ -115,6 +117,7 @@ jobs:
df -h

- name: Login to Docker Hub
if: ${{ secrets.DOCKERHUB_USERNAME != '' && secrets.DOCKERHUB_TOKEN != '' }}
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
Expand Down Expand Up @@ -150,6 +153,7 @@ jobs:
df -h

- name: Login to Docker Hub
if: ${{ secrets.DOCKERHUB_USERNAME != '' && secrets.DOCKERHUB_TOKEN != '' }}
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/kibotVerify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,17 @@ jobs:
container:
image: setsoft/kicad_auto:ki8
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
- name: run kibot
run: |
kibot -c ${{env.config}} -e ${{env.schema}} -b ${{env.board}} -d ${{env.dir}} -s run_drc -v -i

DRC:
runs-on: ubuntu-latest
container:
image: setsoft/kicad_auto:ki8
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
- name: run kibot
run: |
kibot -c ${{env.config}} -e ${{env.schema}} -b ${{env.board}} -d ${{env.dir}} -s run_erc -v -i
Expand All @@ -47,7 +47,7 @@ jobs:
container:
image: setsoft/kicad_auto:ki8
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
- name: run kibot
run: |
kibot -c ${{env.config}} -e ${{env.schema}} -b ${{env.board}} -d ${{env.dir}} -s run_erc,run_drc -v \
Expand All @@ -61,15 +61,15 @@ jobs:
${{env.dir}}/docs/**
!${{env.dir}}/**/*.ogv
!${{env.dir}}/**/*.log

# images
render:
runs-on: ubuntu-latest
needs: [DRC]
container:
image: setsoft/kicad_auto:ki8
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
- name: run kibot
run: |
kibot -c ${{env.config}} -e ${{env.schema}} -b ${{env.board}} -d ${{env.dir}} -s run_erc,run_drc -v \
Expand All @@ -83,14 +83,14 @@ jobs:
${{env.dir}}/img/**
!${{env.dir}}/**/*.ogv
!${{env.dir}}/**/*.log

render3d:
runs-on: ubuntu-latest
needs: [DRC]
container:
image: setsoft/kicad_auto:ki8
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v6
- name: run kibot
run: |
kibot -c ${{env.config}} -e ${{env.schema}} -b ${{env.board}} -d ${{env.dir}} -s run_erc,run_drc -v \
Expand All @@ -115,7 +115,7 @@ jobs:
contents: write

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
with:
ssh-key: ${{secrets.KIBOT}}
- uses: actions/download-artifact@v4
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/pushDockerRepos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ jobs:
build-amd64:
name: Build amd64 images
runs-on: ubuntu-latest
if: ${{ github.repository == 'mniedermaier/CybICS' }}
steps:
- name: Free up disk space
run: |
Expand All @@ -30,7 +31,7 @@ jobs:
df -h

- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
submodules: recursive

Expand Down Expand Up @@ -83,6 +84,7 @@ jobs:
build-arm64:
name: Build arm64 images
runs-on: ubuntu-24.04-arm
if: ${{ github.repository == 'mniedermaier/CybICS' }}
steps:
- name: Free up disk space
run: |
Expand All @@ -91,7 +93,7 @@ jobs:
df -h

- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
submodules: recursive

Expand Down Expand Up @@ -145,9 +147,10 @@ jobs:
name: Create multi-arch manifests
runs-on: ubuntu-latest
needs: [build-amd64, build-arm64]
if: ${{ github.repository == 'mniedermaier/CybICS' }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Login to Docker Hub
uses: docker/login-action@v3
Expand Down
Loading
Loading