#!/bin/sh
# Lanceur du serveur de signalisation installe par le paquet Arch.
#
# Existe pour que l'unite systemd (et le panneau « Heberger un serveur » de
# l'interface) pointe sur un chemin FIXE. Une unite generee a l'execution
# pointerait sur un chemin choisi par la session, ce qui reviendrait a laisser
# l'interface faire lancer un executable arbitraire au demarrage.
#
# Aucun privilege : le port par defaut (8765) est superieur a 1024.

set -eu

# La base SQLite DOIT etre placee explicitement. Par defaut, database.py la met
# a cote de son propre fichier — donc dans /usr/share/meshamoto-server/, en
# lecture seule une fois empaquete : le serveur ne demarrerait pas du tout.
# Le repli sur ~/.local/share suit XDG, comme le client (voir client/config.py).
: "${MESHAMOTO_DB_PATH:=${XDG_DATA_HOME:-$HOME/.local/share}/meshamoto-server/server.db}"
export MESHAMOTO_DB_PATH
mkdir -p "$(dirname "$MESHAMOTO_DB_PATH")"

# Meme raison que ci-dessus, et meme piege : par defaut config.py place ce fichier a
# cote de son propre module, donc dans /usr/share/meshamoto-server/ en lecture seule.
# Le relais ne pourrait pas l'ecrire, et app.py ne saurait jamais qu'une session de
# relais travaille — c'est le defaut corrige le 2026-08-05 (voir
# config.RELAY_ALLOCATION_TTL_SECONDS). Le relais et le serveur DOIVENT s'accorder sur
# le meme chemin : c'est leur seul canal, ils n'ont aucune memoire commune.
: "${MESHAMOTO_RELAY_ACTIVITY_PATH:=${XDG_DATA_HOME:-$HOME/.local/share}/meshamoto-server/relay-activity.json}"
export MESHAMOTO_RELAY_ACTIVITY_PATH

# Ecoute sur toutes les interfaces par defaut, comme l'executable serveur
# Windows (regle de symetrie du projet) : c'est ce qui permet d'heberger pour
# des amis derriere une simple redirection de port, sans reverse proxy.
#
# ATTENTION : sans TLS, le mot de passe d'un reseau circule en clair. Pour une
# exposition sur Internet, mettre un reverse proxy Caddy devant et lier le
# serveur a 127.0.0.1 (MESHAMOTO_BIND_HOST=127.0.0.1) — le proxy porte alors le
# TLS et ajoute le vrai X-Forwarded-For, sans lequel la limitation des
# tentatives d'authentification est contournable (README, point 42).
exec python3 /usr/share/meshamoto-server/server_main.py "$@"
