#!/bin/sh
# Meshet · configurar navegadores (Linux). Ejecuta: sh Meshet-Navegadores-Linux.sh
# Pone el proxy automático de Meshet (http://127.0.0.1:7777/proxy.pac) en el
# escritorio (GNOME/KDE) y en Firefox. Si ya estaba puesto, ofrece quitarlo.
PAC="http://127.0.0.1:7777/proxy.pac"
echo "== Meshet · configurar navegadores =="
DIR="$(cd "$(dirname "$0")" && pwd)"
BIN=""
for b in "$DIR/meshet" "$HOME/.local/bin/meshet" /usr/bin/meshet /usr/local/bin/meshet "$(command -v meshet 2>/dev/null)"; do
  [ -n "$b" ] && [ -x "$b" ] && "$b" -capacidades >/dev/null 2>&1 && { BIN="$b"; break; }
done
configured() {
  if command -v gsettings >/dev/null 2>&1; then
    gsettings get org.gnome.system.proxy autoconfig-url 2>/dev/null | grep -q "127.0.0.1:7777/proxy.pac" && \
      gsettings get org.gnome.system.proxy mode 2>/dev/null | grep -q auto && return 0
  fi
  grep -qs '"network.proxy.type", 2' "$HOME"/.mozilla/firefox/*/user.js && return 0
  return 1
}
ACCION=instalar
if configured; then
  printf "Meshet ya está configurado en tus navegadores. ¿Quieres QUITARLO? (s/N) "
  read r
  case "$r" in s*|S*|y*|Y*) ACCION=quitar ;; *) echo "No se ha cambiado nada."; exit 0 ;; esac
fi
if [ -n "$BIN" ]; then
  exec "$BIN" proxy "$ACCION"
fi
if command -v gsettings >/dev/null 2>&1; then
  if [ "$ACCION" = instalar ]; then
    gsettings set org.gnome.system.proxy autoconfig-url "$PAC" && gsettings set org.gnome.system.proxy mode auto && echo "  ✔ Escritorio: proxy automático → $PAC"
  else
    gsettings set org.gnome.system.proxy mode none && gsettings reset org.gnome.system.proxy autoconfig-url && echo "  ✔ Escritorio: proxy automático quitado"
  fi
fi
KW=$(command -v kwriteconfig6 || command -v kwriteconfig5)
if [ -n "$KW" ]; then
  if [ "$ACCION" = instalar ]; then
    "$KW" --file kioslaverc --group "Proxy Settings" --key ProxyType 2
    "$KW" --file kioslaverc --group "Proxy Settings" --key "Proxy Config Script" "$PAC"
  else
    "$KW" --file kioslaverc --group "Proxy Settings" --key ProxyType 0
  fi
  echo "  ✔ KDE Plasma actualizado"
fi
n=0
for p in "$HOME"/.mozilla/firefox/*/ "$HOME"/snap/firefox/common/.mozilla/firefox/*/ "$HOME"/.var/app/org.mozilla.firefox/.mozilla/firefox/*/; do
  [ -f "$p/prefs.js" ] || continue
  uj="$p/user.js"
  [ -f "$uj" ] && sed -i '/^\/\/ >>> Meshet/,/^\/\/ <<< Meshet/d' "$uj"
  {
    echo "// >>> Meshet (proxy automático)"
    if [ "$ACCION" = instalar ]; then
      echo 'user_pref("network.proxy.type", 2);'
      echo "user_pref(\"network.proxy.autoconfig_url\", \"$PAC\");"
      echo 'user_pref("network.proxy.failover_direct", true);'
    else
      echo 'user_pref("network.proxy.type", 5);'
    fi
    echo "// <<< Meshet"
  } >> "$uj"
  n=$((n+1))
done
[ $n -gt 0 ] && echo "  ✔ Firefox: $n perfil(es) (reinícialo si estaba abierto)"
if [ "$ACCION" = instalar ]; then
  echo
  echo "Listo. Con Meshet abierto, escribe en el navegador http://NOMBRE.tld (p. ej. http://gonzalo.miweb)."
  echo "Sin proxy también funciona: http://NOMBRE.localhost:7777/"
  echo "¿Aún no tienes Meshet? https://meshet.com/#descargas"
  echo "Para deshacerlo, vuelve a ejecutar este archivo."
fi
