# Velmo: la chiavetta VELMO-DATI inserita o tolta mentre il router è acceso.
# hotplug-call legge questo file con «.» in una sottoshell: exit chiude solo lei.
# tornano in RAM prima che 10-mount smonti con umount -l.

case "$DEVICENAME" in
sd[a-z]|sd[a-z][0-9]*) ;;
*) exit 0 ;;
esac
[ -x /usr/lib/velmo/dati.sh ] || exit 0
# Solo per un dispositivo che supera i controlli sopra: comune.sh gira su
# ogni evento hotplug dei dischi altrimenti, per niente. Da qui in poi si puo'
# chiamare prepara_aggiornamento, lo stesso posto solo che la prepara per
# ogni modo in cui puo' nascere (comune.sh).
. /usr/lib/velmo/comune.sh

case "$ACTION" in
add)
	blkid "/dev/$DEVICENAME" 2>/dev/null | grep -q 'LABEL="VELMO-DATI"' || exit 0
	logger -t velmo-dati "chiavetta $DEVICENAME inserita"
	(
		sleep 3
		/etc/init.d/velmo-dati restart
		# Un pacchetto di aggiornamento sulla stessa chiavetta dei registri
		# (Task 13, spec 2026-09-21 §12): si guarda un file, non l'etichetta -
		# la stessa chiavetta va bene, e chi aggiorna non deve preparare un
		# supporto dedicato. Si scrive solo la proposta: applicare e' un
		# gesto di una persona autenticata dalla console, o del soccorso in
		# stato di guasto conclamato (usr/sbin/velmo-soccorso,
		# soccorso-chiavetta.sh) - infilare una chiavetta e basta non deve
		# mai bastare da solo.
		#
		# Si accettano anche i nomi con cui velmo.one pubblica i file
		# (liste-<versione>.tar.gz, software-<versione>.tar.gz, Makefile
		# "rilascio"): chi scarica dalla pagina e copia sulla chiavetta senza
		# rinominare non deve trovarsi un Velmo che non vede niente. Prima di
		# questa riga il file appena scaricato non veniva mai proposto
		# (trovato il 22 settembre 2026, controlli.py lo sorveglia).
		for p in /mnt/velmo-data/velmo-*.pacchetto /mnt/velmo-data/liste-*.tar.gz /mnt/velmo-data/software-*.tar.gz; do
			[ -f "$p" ] || continue
			nome=$(basename "$p")
			case "$nome" in
			*.tar.gz) versione=${nome#*-}; versione=${versione%.tar.gz} ;;
			*) versione=${nome#velmo-}; versione=${versione%.pacchetto} ;;
			esac
			[ -n "$versione" ] && [ "$versione" != "$nome" ] || continue
			# Il tipo non sta nel nome del file (spec §12: "velmo-<versione>.
			# pacchetto", niente "liste" o "software" dentro): si guarda cosa
			# contiene il tar, senza scompattarlo. Non e' la verifica vera -
			# quella la rifa' velmod sull'impronta, contro l'ultimo manifesto
			# firmato (ArtefattoConImpronta) - e' solo per scrivere la riga
			# "tipo" giusta nella proposta. Scriverci sempre "software"
			# (trovato in revisione, 21 settembre 2026) significava che un
			# pacchetto "liste" sulla chiavetta non veniva MAI proposto: la
			# verifica vera confronta il tipo dichiarato qui con quello del
			# manifesto, e "software" contro "liste" non torna mai.
			#
			# Il pacchetto autonomo (velmo-<tipo>-<versione>.pacchetto) e' un tar
			# non compresso con manifesto, firma e l'archivio dentro: si legge
			# con -tf, e il tipo lo dice il nome dell'archivio. La verifica vera,
			# con la firma che porta dentro, la fa velmod (DaFile).
			elenco=$(tar -tzf "$p" 2>/dev/null) || elenco=$(tar -tf "$p" 2>/dev/null) || continue
			case "$elenco" in
			*usr/sbin/velmod*|*software-*.tar.gz*) tipo=software ;;
			*ammessi.txt*|*liste-*.tar.gz*) tipo=liste ;;
			*) continue ;;
			esac
			versione=${versione#"$tipo"-}
			prepara_aggiornamento
			printf 'pacchetto %s\ntipo %s\nversione %s\n' "$p" "$tipo" "$versione" \
				> /etc/velmo/aggiornamento/.chiavetta.nuovo &&
				mv /etc/velmo/aggiornamento/.chiavetta.nuovo /etc/velmo/aggiornamento/chiavetta
			logger -t velmo-dati "pacchetto $nome ($tipo) trovato sulla chiavetta: proposto nella console, non applicato"
			break
		done
	) >/dev/null 2>&1 &
	;;
remove)
	grep -q "^/dev/$DEVICENAME /mnt/velmo-data " /proc/mounts || exit 0
	logger -t velmo-dati "chiavetta $DEVICENAME tolta: registri in RAM"
	# La proposta letta dalla chiavetta non vale piu' senza il supporto: si
	# toglie qui, anche se Controllo si sarebbe comunque accorto da solo che
	# il pacchetto non e' piu' raggiungibile (non riesce piu' a calcolarne
	# l'impronta) e non l'avrebbe piu' proposto.
	rm -f /etc/velmo/aggiornamento/chiavetta
	/etc/init.d/velmo-dati restart >/dev/null 2>&1
	;;
esac
