#!/bin/bash

# omarchy:summary=Remove Sunshine and close Omarchy-managed Moonlight streaming ports.
# omarchy:requires-sudo=true

set -e

TCP_PORTS=(47984 47989 48010)
UDP_PORTS=(5353 47998 47999 48000 48002 48010)
PRIVATE_CIDRS=(10.0.0.0/8 172.16.0.0/12 192.168.0.0/16)
SUNSHINE_ADMIN_APP="Sunshine Admin"
HYPR_AUTOSTART_FILE="$HOME/.config/hypr/autostart.lua"
HYPR_AUTOSTART_ENTRY='o.launch_on_start("sunshine")'

# Fedora fork: firewalld instead of ufw; removes the rules
# omarchy-install-service-sunshine adds.
TAILSCALE_CIDR=100.64.0.0/10

remove_sunshine_rules() {
  local proto=$1 port=$2 cidr

  for cidr in "${PRIVATE_CIDRS[@]}" "$TAILSCALE_CIDR"; do
    sudo firewall-cmd --permanent --remove-rich-rule="rule family=\"ipv4\" source address=\"$cidr\" port port=\"$port\" protocol=\"$proto\" accept" >/dev/null 2>&1 || true
  done
}

close_firewall_ports() {
  local port

  if ! systemctl is-active --quiet firewalld; then
    return
  fi

  for port in "${TCP_PORTS[@]}"; do
    remove_sunshine_rules tcp "$port"
  done
  for port in "${UDP_PORTS[@]}"; do
    remove_sunshine_rules udp "$port"
  done

  sudo firewall-cmd --reload >/dev/null
}

disable_hyprland_autostart() {
  if [[ -f $HYPR_AUTOSTART_FILE ]]; then
    sed -i "\|^$HYPR_AUTOSTART_ENTRY$|d" "$HYPR_AUTOSTART_FILE"
  fi
}

systemctl --user disable --now sunshine 2>/dev/null || true
omarchy-pkg-drop sunshine
omarchy-webapp-remove "$SUNSHINE_ADMIN_APP" 2>/dev/null || true
disable_hyprland_autostart
close_firewall_ports

echo ""
echo "Sunshine has been removed and its Omarchy-managed Moonlight streaming ports have been closed."
