Commit Graph
64 Commits
Author SHA1 Message Date
MythEclipse ef385c3397 fix: get all imported challenges building and running
Root causes found by prebuilding every challenge image in parallel:
- fjb: ghcr.io base is not anonymously pullable here -> official httpd:2.4.
  pnpm 12 (via corepack on node:20) fails the install with
  ERR_PNPM_IGNORED_BUILDS unless build scripts are approved; neither
  onlyBuiltDependencies in pnpm-workspace.yaml nor --no-ignore-scripts
  suppresses it. The working sequence is:
    pnpm install --ignore-scripts && pnpm approve-builds --all && pnpm rebuild
- xl + kode-viewer: node:20-slim-bookworm is not a real tag -> node:20-bookworm-slim.
- burvesigner: python-dev no longer exists in bookworm -> dropped (python3-dev
  was already there and the source has no py2 syntax).
- burvesigner/hirnfick/s3: apt update and install were separate RUN layers;
  with the bundled apt-insecure.conf the second invocation re-resolved against
  the EOL bullseye-security mirror and 404'd every package. Merged into one
  'update && install' layer (fix_apt_layers.py, idempotent).
- consolidate_images.sh: teams used to build a private image per team
  (team1-x ... team4-x) because no shared image existed. Since the password is
  applied at runtime via chpasswd, one shared services-<name> build is enough;
  this reclaims ~1.5 GB, which matters on a 79 GB disk.
- reconcile_team_state(): a challenge enabled while a team was down left
  state.json without ports/flag/password, so the next compose render died with
  KeyError. Now both the API and the CLI tools reconcile first.
2026-09-25 21:03:29 +08:00
MythEclipse 6d1ede8c2b fix: bulk challenge enable path (compose YAML, base images, async toggle, tooling)
- fix_dup_volumes.py: 4 canonical templates had TWO volumes: keys inside one
  service (invalid YAML -> 'mapping key volumes already defined'), which broke
  every enable for anti-alchemy/burvesigner/gemas-notes/kode-viewer.
- fjb: ghcr.io base is not anonymously pullable on this host; swapped to the
  official httpd:2.4 (its httpd.conf only uses stock modules). Added
  onlyBuiltDependencies to package.json (pnpm >=10 blocks esbuild's postinstall).
- xl + kode-viewer: node:20-slim-bookworm is not a real tag; use
  node:20-bookworm-slim. gift-voucher: buster -> bookworm.
- prebuild_images.py: build each challenge's shared services-<name> image once
  in parallel (passes a placeholder PASSWORD build-arg, since several Dockerfiles
  run chpasswd and fail on an empty arg).
- set_enabled.py / sync_all_challenges.py: batch registry flip + runtime apply
  that survives panel restarts and reports per-team results.
- Challenge toggle is now async: PATCH returns a job id, the client polls
  /api/challenges/jobs/<id> so a multi-minute build no longer blocks the panel.
  Added _SYNC_LOCK to serialize concurrent compose rewrites.
2026-09-25 17:01:42 +08:00
MythEclipse c6fd9ec268 feat: challenge registry-driven platform + XVI/XVII imports + admin toggle + domain rename
- Rename repo/domain: attack-defense-platform / attackdefense.imrnes.team (all refs replaced)
- challenge_registry.json: single source of truth (28 challs across gemastik18/xvi/xvii)
- teams.py: registry-driven CHALLENGES, set_challenge_enabled, sync_challenge_runtime
  (apply enable/disable to live teams: build/up or stop/remove + receiver restart)
- compose_gen.py: render per-team compose from canonical per-challenge templates
  (image reuse, per-team ports 30xxx, flag mounts, passwords)
- gen_canonical_composes.py: canonical docker-compose.yml for all services
- import_new_challenges.py: import XVI/XVII services + EOL base image fixes
  (debian:buster→bookworm, node:14→20, python:3.7-slim→3.11)
- receiver: xvi package (10 checkers) + xvii package (12 generic checkers),
  Challenge base reads PASSWORD_<team_port> from env; gen_receiver_main.py
  generates per-team main.py from registry
- main.py: /api/challenges returns full registry; PATCH /api/challenges/<name>
  toggles enabled + applies to live teams
- index.html: 🏗️ Challenge Manager tab (toggle per challenge, grouped by set)
- SLA bonus now dynamic (all enabled challenges, not hardcoded 6)
2026-09-25 14:04:33 +08:00
root 877f14ecf3 fix: editTeam endpoint + leaderboard live name resolution + domains in team set + apt-insecure.conf in all service dirs 2026-09-23 21:50:16 +08:00
root 029b0f809a tools in all containers + apt GPG fix for 2026 clock + target dropdown fixed
- all 6 Dockerfiles: vim curl wget netcat git python3-pip now installed
- apt-insecure.conf (AllowInsecureRepositories) copied into images so
  participants can apt-get install despite expired Ubuntu/Debian GPG keys
- warmup base ubuntu:20.04 (EOL, GPG expired) -> ubuntu:24.04
- installed vim+git live into all 18 running team containers
- team portal target dropdown reloads after login (was empty pre-auth)
- attack log endpoint + A/D submit (attacker vs target) verified e2e
2026-09-23 18:54:03 +08:00
root 24dbf0a662 draggable topology + attack visualizer + tools in containers
- topology nodes draggable (pointer events, SVG transform), layout hint shown
- attack visualizer: /api/attacks logs attacker->target events; red pulsing
  dashed arcs on recent attacks (60s hot), ⚔ counts ok/fail
- submit_flag now takes attacker_idx vs target_idx (A/D semantics); UI has
  target dropdown (enemy teams), leaderboard records target
- containers get vim+curl+wget+netcat+git+pip3 (Dockerfiles blogpost/cdn/
  phew/sheesh/warmup); warmup base ubuntu:20.04 EOL -> 24.04
- team portal: target dropdown refreshed after login (was empty pre-auth)
2026-09-23 18:05:44 +08:00
Hermes 7d6258e94e fix: use bookworm base for blogpost; route receiver history via :18080
- blogpost: python:3.11-slim-bullseye is EOL (apt 404s), switch to bookworm
- utils/bashrc: host port 80 is taken by Traefik/Coolify, preexec posts to :18080
- ignore receiver .venv
2026-09-23 13:54:46 +08:00
Rayhan Hanaputra 615f8aa130 fix chall itoid 2025-10-28 09:08:35 +07:00
lightningitoid ffcbc26f87 updated sheesh 2025-10-27 08:30:18 +07:00
lightningitoid 6f7f8fc1e3 updated sheesh 2025-10-27 08:26:11 +07:00
lightningitoid f61a42fa59 updated sheesh 2025-10-27 07:46:35 +07:00
lightningitoid e7cfcbdf59 updated sheesh 2025-10-27 00:53:16 +07:00
lightningitoid e0d2de93f2 fixed phew 2025-10-26 22:25:05 +07:00
Rayhan Hanaputra 3b5c5966ed updated warmup 2025-10-26 20:35:19 +07:00
Rayhan Hanaputra 3bd5a4270b Merge branch 'main' of https://github.com/rayhanhanaputra/gemastik18-final 2025-10-26 18:58:38 +07:00
Rayhan Hanaputra 326f887eec fix rebuild warmup 2025-10-26 18:58:33 +07:00
lightningitoid 025b2d164a little changes 2025-10-26 15:19:31 +07:00
Jonathan b570cf4c08 Merge branch 'main' of github.com:rayhanhanaputra/gemastik18-final 2025-10-26 15:10:03 +07:00
Jonathan 538526dab0 added patch notes 2025-10-26 15:09:49 +07:00
Rayhan Hanaputra bf897d0523 fix sheesh 2025-10-26 13:42:24 +07:00
lightningitoid b343b651f3 changed ownership 2025-10-26 11:33:41 +07:00
adzkyyy b0bff376c7 fix owner 2025-10-26 11:12:02 +07:00
lightningitoid 2ad2b5f2cd updated sigalarm time 2025-10-26 11:03:48 +07:00
lightningitoid 0d269a78df updated sigalarm time 2025-10-26 11:01:10 +07:00
lightningitoid 200d63ef74 updated sigalarm time 2025-10-26 10:12:17 +07:00
Jonathan 8feab07812 update blogpost dist 2025-10-26 01:03:54 +07:00
Jonathan 2f35942f01 patched blogpost, update cdn dist 2025-10-26 00:58:49 +07:00
keii 8fda0dda9d patch cdn webservice 2025-10-26 00:29:39 +07:00
itoid 91825c2c0d Add files via upload 2025-10-25 17:44:15 +07:00
itoid 31cec50143 Delete services/phew/dist/chall.py 2025-10-25 17:44:04 +07:00
itoid 27d12eb6c4 Add files via upload 2025-10-25 17:43:32 +07:00
itoid 616b85fbf7 Delete services/phew/src/chall.py 2025-10-25 17:41:38 +07:00
adzkyyy 59b0ffd951 test sla 2025-10-25 15:34:23 +07:00
rafliher 910f345c08 checker bugfix 2025-10-25 15:11:03 +07:00
rafliher 0d216d77eb try checker 2025-10-25 14:48:20 +07:00
rafliher 41a170543b docker compose bugfix 2025-10-25 14:18:49 +07:00
rafliher 6b69bc1fd3 merge docker compose 2025-10-25 12:51:17 +07:00
adzkyyy 0d8f10bb11 add sla 2025-10-25 12:29:18 +07:00
adzkyyy bc5076c8a7 del unnecessary file 2025-10-25 09:57:02 +07:00
adzkyyy 404e2a82cb add carbeat 2025-10-25 09:53:39 +07:00
Rayhan Hanaputra 604bd24b04 added warmup chall 2025-10-25 04:56:33 +07:00
itoid 6d9816d191 Add files via upload 2025-10-21 20:57:57 +07:00
Jonathan 7318509752 Merge branch 'main' of github.com:rayhanhanaputra/gemastik18-final 2025-10-19 18:42:26 +07:00
Jonathan 08c30298c2 add sla cdn 2025-10-19 18:42:15 +07:00
itoid 343278c71a Add files via upload 2025-10-13 22:36:03 +07:00
itoid 84f2e7d8d0 Delete services/sheesh directory 2025-10-13 22:34:04 +07:00
itoid ec3bc02ddd Add files via upload 2025-10-11 22:46:04 +07:00
itoid cbe65e88bd Delete services/sheesh directory 2025-10-11 22:45:20 +07:00
itoid 002f997641 Delete services/phew directory 2025-10-11 22:45:10 +07:00
Jonathan 33ca0a0b49 Merge branch 'main' of github.com:rayhanhanaputra/gemastik18-final 2025-10-11 14:03:38 +07:00