#!/usr/bin/env bash
#
# onx-exim-conf-read — /etc/exim/exim.conf icerigini oku
#
# UI'daki konfigurasyon editorunun veriyi gostermesi icin gerekli.
# Boyut sinirlamasi: max 256KB (DoS koruma). Buyukse uyari ver.
#
# stdin: {} (bos veya herhangi JSON)
# stdout: {"ok":true,"path":"...","content":"...","size_bytes":N,"truncated":bool}

set -euo pipefail
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
source "${SCRIPT_DIR}/_lib/common.sh"

require_root

INPUT=$(cat 2>/dev/null || echo '{}')

# Exim conf path auto-detect (RHEL: /etc/exim/exim.conf, Debian: /etc/exim4/exim4.conf)
CONF_PATH=""
for p in /etc/exim/exim.conf /etc/exim4/exim4.conf /etc/exim4/exim4.conf.template; do
    if [[ -r "$p" ]]; then
        CONF_PATH="$p"
        break
    fi
done

if [[ -z "$CONF_PATH" ]]; then
    json_fail 2 "exim config dosyasi bulunamadi (/etc/exim/exim.conf yok)"
fi

# Size check (256KB limit)
MAX_BYTES=262144
SIZE=$(stat -c%s "$CONF_PATH" 2>/dev/null || echo 0)
TRUNCATED="false"

if [[ "$SIZE" -gt "$MAX_BYTES" ]]; then
    # Truncate to first 256KB
    CONTENT=$(head -c "$MAX_BYTES" "$CONF_PATH" 2>/dev/null || echo "")
    TRUNCATED="true"
else
    CONTENT=$(cat "$CONF_PATH" 2>/dev/null || echo "")
fi

# JSON guvenli encode
CONTENT_ESCAPED=$(printf '%s' "$CONTENT" | jq -Rs '.' 2>/dev/null || echo '""')

echo "{\"ok\":true,\"path\":\"${CONF_PATH}\",\"content\":${CONTENT_ESCAPED},\"size_bytes\":${SIZE},\"truncated\":${TRUNCATED}}"
exit 0
