50 lines
1.5 KiB
Bash
50 lines
1.5 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
echo "=== Time Travel Sandbox ==="
|
|
echo "Target date: ${TARGET_DATE}"
|
|
|
|
# --- Fake the system time ---
|
|
# libfaketime intercepts time syscalls
|
|
# It expects "YYYY-MM-DD HH:MM:SS" format (space separator, not T)
|
|
FAKETIME_STR=$(echo "${TARGET_DATE}" | sed 's/T/ /')
|
|
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/faketime/libfaketime.so.1
|
|
export FAKETIME="${FAKETIME_STR}"
|
|
export FAKETIME_NO_CACHE=1
|
|
|
|
echo "System time is now: $(date)"
|
|
|
|
# --- Install MITM CA certificate ---
|
|
# Wait for mitmproxy to generate its CA cert, then trust it
|
|
# Use --noproxy to bypass the env proxy vars for this specific request
|
|
echo "Waiting for MITM proxy CA certificate..."
|
|
MAX_WAIT=30
|
|
WAITED=0
|
|
while [ $WAITED -lt $MAX_WAIT ]; do
|
|
if curl -s --noproxy '*' --proxy http://172.30.0.4:8080 http://mitm.it/cert/pem -o /tmp/mitmproxy-ca.pem 2>/dev/null; then
|
|
if [ -s /tmp/mitmproxy-ca.pem ]; then
|
|
cp /tmp/mitmproxy-ca.pem /usr/local/share/ca-certificates/mitmproxy-ca.crt
|
|
update-ca-certificates 2>/dev/null || true
|
|
echo "MITM CA certificate installed."
|
|
break
|
|
fi
|
|
fi
|
|
sleep 1
|
|
WAITED=$((WAITED + 1))
|
|
done
|
|
|
|
if [ $WAITED -ge $MAX_WAIT ]; then
|
|
echo "WARNING: Could not fetch MITM CA cert. HTTPS may not work."
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== Environment Ready ==="
|
|
echo " Fake date: $(date)"
|
|
echo " HTTP proxy: 172.30.0.3:8888 (WaybackProxy)"
|
|
echo " HTTPS proxy: 172.30.0.4:8080 (mitmproxy → Anthropic API)"
|
|
echo ""
|
|
echo "Run: python3 /app/claude_client.py"
|
|
echo ""
|
|
|
|
exec "$@"
|