#!/usr/bin/env bash
#
# onx-mailbox-list — Filesystem tarama ile mailbox listesi.
# (Authoritative source email_accounts tablosu — Laravel; bu sysapi sadece
# disk-side gerçek mailbox'ları gösterir, audit/drift detection için)
#
# Stdin (JSON):
#   {"domain": "example.com"}  // opsiyonel; boşsa tüm domain'ler
#
# Stdout (JSON):
#   {"mailboxes": [{"email":"x@y","local":"x","domain":"y","usage_bytes":N,"message_count":N}, ...]}

INPUT=$(cat 2>/dev/null || echo '{}')
DOMAIN=$(echo "$INPUT" | jq -r '.domain // ""')

VMAIL_ROOT="/var/vmail"
MAILBOXES="["
FIRST=1

if [[ -n "$DOMAIN" ]]; then
    SEARCH_DIR="${VMAIL_ROOT}/${DOMAIN}"
else
    SEARCH_DIR="${VMAIL_ROOT}"
fi

if [[ -d "$SEARCH_DIR" ]]; then
    while IFS= read -r d; do
        [[ ! -d "$d/Maildir" ]] && continue
        DOM=$(basename "$(dirname "$d")")
        LOC=$(basename "$d")
        SIZE=$(du -sb "$d/Maildir" 2>/dev/null | awk '{print $1}')
        MSGS=$(find "$d/Maildir/cur" "$d/Maildir/new" -type f 2>/dev/null | wc -l)
        [[ $FIRST -eq 1 ]] || MAILBOXES+=","
        FIRST=0
        MAILBOXES+="{\"email\":\"${LOC}@${DOM}\",\"local\":\"${LOC}\",\"domain\":\"${DOM}\",\"usage_bytes\":${SIZE:-0},\"message_count\":${MSGS:-0}}"
    done < <(find "$SEARCH_DIR" -mindepth 2 -maxdepth 2 -type d 2>/dev/null)
fi

MAILBOXES+="]"
echo "{\"mailboxes\":$MAILBOXES}"
exit 0
