Files
ja4-platform/tests/integration/platform/clickhouse-init.sh
toto da8357f43d fix: TLS capture end-to-end in integration tests
- Add traffic-gen container (curlimages/curl) to send HTTPS traffic
  across Docker network so sentinel (pcap on eth0) captures ClientHello
- Seed anubis_ua_rules with catch-all rule (REGEXP_TREE needs ≥1 entry)
  so MV mv_http_logs processes raw logs without errors
- Add JA4/JA3 fingerprint verification in Phase 5 tests
- Dashboard healthcheck via python urllib (no curl in image)

Results: 59 raw logs, 59 parsed, 53 with JA4+JA3 fingerprints (TLS 1.3)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-07 21:04:14 +02:00

43 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# =============================================================================
# clickhouse-init.sh — Pre-process shared SQL files for integration testing
#
# Copies SQL from /initdb-src/ to /tmp, patches credentials, then executes.
# =============================================================================
set -e
SRC_DIR="/initdb-src"
TMP_DIR="/tmp/initdb-patched"
mkdir -p "$TMP_DIR"
for f in "$SRC_DIR"/*.sql; do
[ -f "$f" ] || continue
base=$(basename "$f")
echo "[init] Patching $base"
sed \
-e "s/USER 'admin'/USER 'default'/g" \
-e "s/PASSWORD 'CHANGE_ME'/PASSWORD ''/g" \
-e "s/PASSWORD 'ChangeMe'/PASSWORD ''/g" \
"$f" > "$TMP_DIR/$base"
done
for f in "$TMP_DIR"/*.sql; do
[ -f "$f" ] || continue
echo "[init] Executing $(basename "$f")"
clickhouse-client --multiquery < "$f"
done
# ---------------------------------------------------------------------------
# Seed data required for dictionaries to function
# REGEXP_TREE dictionaries require at least one rule; without it, any INSERT
# into http_logs_raw fails because the MV mv_http_logs calls dictGet() on
# the empty dict. Insert a catch-all "unknown" rule so the pipeline works.
# ---------------------------------------------------------------------------
echo "[init] Seeding anubis_ua_rules (REGEXP_TREE needs ≥1 rule)..."
clickhouse-client --multiquery <<'SEED'
INSERT INTO ja4_processing.anubis_ua_rules (id, parent_id, regexp, keys, values) VALUES
(1, 0, '.*', ['bot_name','action','has_ip','rule_id','category'], ['','','0','0','']);
SEED
echo "[init] All SQL files executed and seed data inserted"