#!/usr/bin/env bash
# record-traffic.sh — 全流量记录（只记录，不分析）。
#
# 由宿主在 run 容器启动后立即执行一次（幂等）：
#   1. tcpdump  -i any   全网卡 pcap 落盘（100MB × 20 卷轮转，覆盖全部流量）
#   2. mitmdump -w flows 记录经 :8080 代理的 HTTP(S) 明文流（可选层）
# 全部写入 /workspace/traffic/（共享 volume，自动同步到本地镜像目录）。
set -euo pipefail

DIR=/workspace/traffic
mkdir -p "$DIR/pcap" "$DIR/mitm"

# 幂等：已在记录则直接退出
if [ -f /run/pentester-recording ] && pgrep -f 'tcpdump .*traffic/pcap' >/dev/null 2>&1; then
  exit 0
fi
touch /run/pentester-recording

# 1) L3/L4 全量 pcap（始终开启，覆盖所有容器流量）
if command -v tcpdump >/dev/null 2>&1; then
  nohup tcpdump -i any -U -s0 -C 100 -W 20 -w "$DIR/pcap/capture.pcap" \
    >/dev/null 2>&1 &
fi

# 2) HTTP(S) 明文层：mitmproxy 常驻 ：8080（agent 可用 http_proxy/PROXY 走它
#    获得可读的请求/响应流；不强制，避免影响不兼容代理的工具）
if command -v mitmdump >/dev/null 2>&1; then
  nohup mitmdump --listen-port 8080 -w "$DIR/flows.mitm" \
    --set confdir="$DIR/mitm" >/dev/null 2>&1 &
fi

echo "traffic recording started: $DIR"
