#!/usr/bin/env bash
# web/upload-limit -- per-site request body size
set -o pipefail
SELF=$(readlink -f "${BASH_SOURCE[0]}")
NV_BASE=$(cd "$(dirname "$SELF")/../../.." && pwd)
export NV_BASE
# shellcheck source=/dev/null
. "$NV_BASE/lib/core/bootstrap.sh"

nv_require_root || exit 1
ui_header "$(t web_m_uploadlimit)"

site_pick_domain "${1:-}" || exit $?
domain=$SITE_DOMAIN
cur=$(nv_site_get "$domain" upload_limit "")

ui_kv "$(t col_domain)" "$domain"
ui_kv "$(t web_upload_now)" "${cur:-$(t web_upload_default)}"
ui_blank
ui_info "$(t web_upload_hint)"
ui_blank

printf '  %s [%s]: ' "$(t web_upload_prompt)" "${cur:-64M}"
read -r size || exit 130
size=$(nv_trim "$size")
[ -z "$size" ] && size=${cur:-64M}
size=$(printf '%s' "$size" | tr '[:lower:]' '[:upper:]')

if [ "$size" = "0" ] || [ "$size" = "DEFAULT" ]; then
    size=''
elif ! nv_valid_size "$size"; then
    ui_err "$(t phpini_bad_size)"
    exit 2
fi

prev=$cur
nv_site_set "$domain" upload_limit "$size"
if ! site_apply_vhost "$domain"; then
    nv_site_set "$domain" upload_limit "$prev"
    site_apply_vhost "$domain" >/dev/null 2>&1 || true
    nv_fail 3201 "$(t site_fail_nginx)"
    exit 1
fi
svc_reload "$(nv_site_get "$domain" php_version "$NV_SITE_PHP_VERSION")"
nv_trace upload-limit "$domain ${size:-default}"

if [ -n "$size" ]; then
    ui_ok "$(t web_upload_done "$size")"
else
    ui_ok "$(t web_upload_reset)"
fi
ui_info "$(t web_upload_php_note)"
exit 0
