#!/bin/sh /etc/rc.common
# velmo-bacheca: la bacheca dei blocchi sul lato televisori (ADR 0016). Server
# statico: consegna i quattro file che velmod scrive in /var/run/velmo-bacheca,
# byte per byte, e non esegue niente.
#
# Ascolta direttamente sulla 80: apre la porta da root e scende subito a
# nobody, prima di consegnare qualunque pagina (control/internal/privilegi,
# spec 2026-09-22 §4). Non serve più nessuna deviazione del firewall dalla
# 8089 - VELMO_BACHECA_PORTA_LOCALE è sparita con lei.
#
# Dopo velmod (START=96), che è chi scrive le pagine: se parte prima, la cartella
# è vuota e la bacheca risponde 404 finché velmod non ha fatto il primo giro.

START=97
STOP=04
USE_PROCD=1

start_service() {
	. /etc/velmo/router.conf
	procd_open_instance
	# -nomi sono le intestazioni Host accettate oltre all'indirizzo di ascolto,
	# contro il DNS rebinding: un altro Host riceve 421 e nessuna pagina.
	#
	# nobody: questo processo parla con la rete dei televisori, che la spec
	# tratta come ostile, e non ha niente da scrivere. Le pagine le legge e
	# basta (velmod le scrive 0644, nella cartella che il suo init.d prepara
	# 0755: nobody ci legge già senza bisogno di toccarla da qui).
	procd_set_param command /usr/sbin/velmo-bacheca \
		-ascolto "$VELMO_INDIRIZZO:$VELMO_BACHECA_PORTA" \
		-cartella /var/run/velmo-bacheca \
		-nomi "$VELMO_BACHECA_NOME" \
		-scendi-a nobody
	# Non più «procd_set_param user nobody»: il processo parte da root per
	# legare la 80 e scende da sé con -scendi-a (control/internal/privilegi).
	# no_new_privs impedisce comunque a questo processo, o a chiunque exec da
	# qui in avanti, di riguadagnare privilegi con un binario setuid - come in
	# velmod (provision/openwrt-1806/files/etc/init.d/velmod).
	procd_set_param no_new_privs 1
	procd_set_param respawn 3600 5 0
	procd_set_param stdout 1
	procd_set_param stderr 1
	procd_close_instance
}
