#!/bin/bash
# Zenyth Browser - lanceur Firefox durci anti-fingerprinting
# Cree/utilise un profil dedie "zenyth" et y injecte user.js a chaque lancement.

set -eu

PROFILE_ROOT="${HOME}/.zenyth"
PROFILE_DIR="${PROFILE_ROOT}/profile"
SELF_DIR="$(cd "$(dirname "$0")" && pwd)"

# localise les assets du paquet (ou fallback dev)
for ASSET_DIR in "${ZENYTH_ASSETS:-}" /usr/lib/zenyth /usr/share/zenyth "${SELF_DIR}"; do
  [ -n "${ASSET_DIR}" ] && [ -f "${ASSET_DIR}/user.js" ] && break
done
[ -f "${ASSET_DIR}/user.js" ] || { echo "zenyth: user.js introuvable" >&2; exit 1; }

mkdir -p "${PROFILE_DIR}"

# re-injection dure a chaque lancement (impossible a desactiver par l'utilisateur)
install -m 0644 "${ASSET_DIR}/user.js" "${PROFILE_DIR}/user.js"

# extensions embarquees -> profil (installation deterministe, sans droits root)
if [ -d "${ASSET_DIR}/extensions" ]; then
  mkdir -p "${PROFILE_DIR}/extensions"
  for XPI in "${ASSET_DIR}"/extensions/*.xpi; do
    [ -e "${XPI}" ] || continue
    BASE="$(basename "${XPI}")"
    install -m 0644 "${XPI}" "${PROFILE_DIR}/extensions/${BASE}" 2>/dev/null || true
  done
fi

# policies: tente le repartage dans le dossier d'installation firefox si inscriptible
FIREFOX_BIN="$(command -v firefox || true)"
if [ -n "${FIREFOX_BIN}" ]; then
  FF_REAL="$(readlink -f "${FIREFOX_BIN}")"
  DIST_DIR="$(dirname "$(dirname "${FF_REAL}")")/distribution"
  if [ -f "${ASSET_DIR}/policies.json" ]; then
    if mkdir -p "${DIST_DIR}" 2>/dev/null && [ -w "${DIST_DIR}" ]; then
      install -m 0644 "${ASSET_DIR}/policies.json" "${DIST_DIR}/policies.json" 2>/dev/null || true
    fi
  fi
fi

exec "${FIREFOX_BIN:-firefox}" --profile "${PROFILE_DIR}" --new-instance "$@"
