#!/bin/bash
# =============================================================================
#  Identification des services qui ecoutent sur le NAS — 01/09/2026
#
#  A COLLER DANS : DSM -> Panneau de configuration -> Planificateur de taches
#                  -> Creer -> Tache declenchee -> Script defini par l utilisateur
#                  Utilisateur : root      puis "Executer"
#
#  Ce script ne modifie RIEN. Il ne fait que lire et ecrire un rapport.
#  Seul root voit le nom du programme derriere un port : c est pourquoi il faut
#  passer par le planificateur plutot que par une session SSH ordinaire.
# =============================================================================

RAPPORT=/volume1/homes/SAS_NEXTE/.ssh/ports_nas.txt

{
  echo "=== Identification des ports en ecoute — $(date) ==="
  echo
  echo "--- Ports encore exposes, avec le programme responsable ---"
  printf "%-8s %-22s %s\n" PORT PROGRAMME CHEMIN
  for p in 5510 6281 5108 5109 6690 80 443; do
      ligne=$(netstat -lntp 2>/dev/null | grep -m1 ":$p ")
      if [ -n "$ligne" ]; then
          prog=$(echo "$ligne" | awk '{print $NF}')
          pid=${prog%%/*}
          nom=${prog##*/}
          chemin=$(readlink -f "/proc/$pid/exe" 2>/dev/null)
          printf "%-8s %-22s %s\n" "$p" "$nom" "${chemin:-inconnu}"
      else
          printf "%-8s %s\n" "$p" "(plus en ecoute)"
      fi
  done

  echo
  echo "--- Paquets installes (pour retrouver quoi desinstaller) ---"
  ls /var/packages/ 2>/dev/null | tr '\n' ' '

  echo
  echo
  echo "--- Reglage UPnP actuel ---"
  # L emplacement du reglage varie selon les versions de DSM ; on lit la valeur
  # directement dans la configuration, ce qui evite de la chercher dans l interface.
  grep -riE "upnp" /etc/synoinfo.conf 2>/dev/null | head -5
  echo "(valeur 'yes' = UPnP actif)"

  echo
  echo "--- Services de decouverte en cours ---"
  ps w 2>/dev/null | grep -iE "upnp|ssdp|dlna|minidlna" | grep -v grep
} > "$RAPPORT" 2>&1

chown SAS_NEXTE:users "$RAPPORT"
chmod 644 "$RAPPORT"
