#!/bin/sh
# Включает/выключает системный «автоматический прокси» (PAC) в macOS через networksetup.
# По умолчанию: PAC http://localhost:1089/proxy.pac на сервисах Wi-Fi и Thunderbolt Bridge 2.
#
# Переменные окружения:
#   MACOS_PAC_URL       — URL proxy.pac (по умолчанию http://localhost:1089/proxy.pac)
#   MACOS_PAC_SERVICES  — список имён сетевых сервисов через «|» (см. networksetup -listallnetworkservices)

usage() {
  printf '%s\n' "Usage: $(basename "$0") on|off|status" >&2
  exit 1
}

[ "$#" -eq 1 ] || usage
cmd=$1

PAC_URL="${MACOS_PAC_URL:-http://localhost:1089/proxy.pac}"
SERVICES="${MACOS_PAC_SERVICES:-Wi-Fi|Thunderbolt Bridge 2}"

svc_exists() {
  networksetup -listallnetworkservices 2>/dev/null | grep -Fqx "$1"
}

case "$cmd" in
  on)
    OLDIFS=$IFS
    IFS='|'
    for svc in $SERVICES; do
      IFS=$OLDIFS
      [ -z "$svc" ] && continue
      if ! svc_exists "$svc"; then
        echo "skip (нет сервиса): $svc" >&2
        continue
      fi
      networksetup -setautoproxyurl "$svc" "$PAC_URL"
      networksetup -setautoproxystate "$svc" on
      echo "PAC on: $svc"
    done
    ;;
  off)
    OLDIFS=$IFS
    IFS='|'
    for svc in $SERVICES; do
      IFS=$OLDIFS
      [ -z "$svc" ] && continue
      if ! svc_exists "$svc"; then
        echo "skip (нет сервиса): $svc" >&2
        continue
      fi
      networksetup -setautoproxystate "$svc" off
      echo "PAC off: $svc"
    done
    ;;
  status)
    printf '%s\n' "PAC_URL=$PAC_URL"
    printf '%s\n' "SERVICES=$SERVICES"
    printf '%s\n' "---"
    OLDIFS=$IFS
    IFS='|'
    for svc in $SERVICES; do
      IFS=$OLDIFS
      [ -z "$svc" ] && continue
      if svc_exists "$svc"; then
        echo "[$svc]"
        networksetup -getautoproxyurl "$svc"
      else
        echo "[$svc] (нет такого сервиса)"
      fi
    done
    printf '%s\n' "--- scutil --proxy ---"
    scutil --proxy 2>/dev/null || true
    ;;
  *)
    usage
    ;;
esac
