#!/usr/bin/env bash
#
# onx-mailbox-quota — Mailbox quota update (Dovecot maildirsize recalc).
# DB quota_mb değerini Laravel MailboxProvisioner email_accounts'a yazıyor.
#
# Stdin (JSON):
#   {"email": "user@example.com", "quota_mb": 1024}
#   (-1 = unlimited)
#
# Stdout (JSON):
#   {"email": "...", "quota_mb": 1024, "maildir": "...", "applied": true}

INPUT=$(cat 2>/dev/null || echo '{}')
EMAIL=$(echo "$INPUT" | jq -r '.email // ""')
QUOTA_MB=$(echo "$INPUT" | jq -r '.quota_mb // 1024')

[[ -z "$EMAIL" ]] && { echo '{"error":"email gerekli"}' >&2; exit 1; }
[[ ! "$EMAIL" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]] && { echo '{"error":"geçersiz email"}' >&2; exit 1; }
[[ ! "$QUOTA_MB" =~ ^-?[0-9]+$ ]] && { echo '{"error":"quota_mb integer olmalı"}' >&2; exit 1; }

LOCAL="${EMAIL%@*}"
DOMAIN="${EMAIL#*@}"
MAILDIR="/var/vmail/${DOMAIN}/${LOCAL}/Maildir"

if [[ -d "$MAILDIR" ]] && command -v doveadm >/dev/null 2>&1; then
    doveadm quota recalc -u "$EMAIL" 2>/dev/null || true
fi

echo "{\"email\":\"$EMAIL\",\"quota_mb\":$QUOTA_MB,\"maildir\":\"$MAILDIR\",\"applied\":true}"
exit 0
