#!/bin/sh
# CAKE entrypoint — bridge Istio abstract socket to file socket, then exec relay.
#
# Traffic flow:
#   Client → Envoy → @istio-proxy.sock (abstract) → socat → /tmp/local.sock → Buzz
#   K8s probes → 0.0.0.0:8080 → Buzz (direct, no Istio)
#   Prometheus → 0.0.0.0:9102/metrics → Buzz
set -eu

SIDECAR_SOCKET="${SIDECAR_LISTENER_BIND:-@istio-proxy.sock}"
LOCAL_SOCKET="/tmp/local.sock"

# Clean up stale socket file from previous run.
rm -f "${LOCAL_SOCKET}"

# Bridge: Envoy writes to abstract socket → socat → app reads from file socket.
# Only start if SIDECAR_LISTENER_BIND is set (i.e., running in CAKE).
if [ -n "${SIDECAR_LISTENER_BIND:-}" ]; then
    socat "ABSTRACT-LISTEN:${SIDECAR_SOCKET#@},fork" "UNIX-CONNECT:${LOCAL_SOCKET}" &
    export BUZZ_UDS_PATH="${LOCAL_SOCKET}"
fi

export BUZZ_HEALTH_PORT="${BUZZ_HEALTH_PORT:-8080}"
export BUZZ_METRICS_PORT="${BUZZ_METRICS_PORT:-9102}"

exec /code/buzz-relay
