#!/bin/bash
# alpha-phpext — enable/disable a manageable PHP extension for one version's FPM.
# Root-owned; called by www-data via NOPASSWD sudoers. Validates version + that
# the extension is a real mods-available module. Reload is detached (no 502).
#   enable|disable <ver> <ext>
set -euo pipefail
ACTION="${1:-}"; VER="${2:-}"; EXT="${3:-}"

[[ "$VER" =~ ^[0-9]+\.[0-9]+$ ]] && [ -d "/etc/php/${VER}/mods-available" ] || { echo "BAD_VER: $VER"; exit 2; }
[[ "$EXT" =~ ^[a-z0-9_]+$ ]] && [ -f "/etc/php/${VER}/mods-available/${EXT}.ini" ] || { echo "BAD_EXT: $EXT"; exit 3; }

case "$ACTION" in
  enable)  phpenmod  -v "$VER" -s fpm "$EXT" 2>&1 || { echo "FAIL"; exit 5; } ;;
  disable) phpdismod -v "$VER" -s fpm "$EXT" 2>&1 || { echo "FAIL"; exit 5; } ;;
  *) echo "BAD_ACTION: $ACTION"; exit 1 ;;
esac

# reload that version's FPM detached + delayed so we never drop the caller's own response
setsid bash -c "sleep 1; systemctl reload php${VER}-fpm 2>/dev/null || systemctl restart php${VER}-fpm 2>/dev/null" >/dev/null 2>&1 </dev/null &
echo "OK"
