#!/bin/sh
# Lanceur du relais UDP de secours installe par le paquet Arch.
#
# PROCESSUS SEPARE du serveur de signalisation, et c'est un piege : app.py
# ALLOUE les ports du pool mais ne relaie rien lui-meme. Sans ce processus, un
# client qui demande un relais recoit bien un numero de port, et rien n'ecoute
# dessus — l'echec est alors totalement silencieux et ressemble a un bug du
# client.
#
# Ecoute sur 0.0.0.0 (contrairement au serveur de signalisation, qui peut se
# limiter a 127.0.0.1 derriere Caddy) : les deux pairs s'y connectent
# DIRECTEMENT en UDP, aucun reverse proxy n'est possible. Les ports du pool
# doivent donc etre rediriges sur la box vers cette machine.
#
# Aucun privilege : les ports du pool sont superieurs a 1024.
# Surchargeable par MESHAMOTO_RELAY_PORT_START / MESHAMOTO_RELAY_PORT_POOL_SIZE.

set -eu

# Canal par lequel ce processus signale a app.py quels ports voient passer du trafic,
# sans quoi l'allocation expire en plein trafic et la paire oscille entre relais et
# direct toutes les ~60 s (defaut mesure le 2026-08-05, voir
# config.RELAY_ALLOCATION_TTL_SECONDS).
#
# LE CHEMIN DOIT ETRE IDENTIQUE A CELUI DU LANCEUR DU SERVEUR : les deux processus ne
# partagent aucune memoire, ce fichier est leur unique point de rendez-vous. Et le
# defaut de config.py tombe dans /usr/share/meshamoto-server/, en lecture seule une
# fois empaquete — meme piege que la base SQLite (point 45).
: "${MESHAMOTO_RELAY_ACTIVITY_PATH:=${XDG_DATA_HOME:-$HOME/.local/share}/meshamoto-server/relay-activity.json}"
export MESHAMOTO_RELAY_ACTIVITY_PATH
mkdir -p "$(dirname "$MESHAMOTO_RELAY_ACTIVITY_PATH")"

exec python3 /usr/share/meshamoto-server/relay.py "$@"
