#!/system/bin/sh
# Instala settings.bin de Ojo desde archivo de URLs (sin UI automatizada).
PKG=it.danieleverducci.ojo
CAMFILE=/data/local/tmp/ojo-cameras.txt
SETTINGS=/data/data/$PKG/files/settings.bin
WALL_CONF=/data/local/tmp/cctv-wall.conf

[ -f "$WALL_CONF" ] && . "$WALL_CONF"
WALL_CAMS="${CCTV_WALL_CAMS:-9}"

pm path "$PKG" >/dev/null 2>&1 || { log -t cctv_ojo "Ojo no instalada"; exit 1; }
[ -f "$CAMFILE" ] || { log -t cctv_ojo "Falta $CAMFILE"; exit 1; }

# Contar URLs esperadas
EXPECTED=0
while IFS= read -r line; do
  case "$line" in \#*|"") continue ;; esac
  EXPECTED=$((EXPECTED + 1))
done < "$CAMFILE"
[ "$EXPECTED" -gt 0 ] || EXPECTED="$WALL_CAMS"

# Si settings.bin ya tiene las URLs correctas, no repetir
if [ -f "$SETTINGS" ] && [ -f "$PREGEN" ]; then
  OLD=$(strings "$SETTINGS" 2>/dev/null | grep -c 'rtsp://' || echo 0)
  NEW=$(strings "$PREGEN" 2>/dev/null | grep -c 'rtsp://' || echo 0)
  if [ "$OLD" -eq "$NEW" ] 2>/dev/null; then
    DIFF=$(cmp -s "$SETTINGS" "$PREGEN" 2>/dev/null; echo $?)
    [ "$DIFF" -eq 0 ] && { log -t cctv_ojo "Ojo ya configurada ($OLD streams)"; exit 0; }
  fi
fi

# settings.bin pregenerado en deploy (mas fiable que UI)
PREGEN=/data/local/tmp/ojo-settings.bin
if [ -f "$PREGEN" ]; then
  am force-stop "$PKG" 2>/dev/null
  mkdir -p /data/data/$PKG/files
  cp "$PREGEN" "$SETTINGS"
  UID=$(dumpsys package "$PKG" 2>/dev/null | grep userId= | head -1 | sed 's/.*userId=//;s/ .*//')
  [ -z "$UID" ] && UID=$(dumpsys package "$PKG" 2>/dev/null | grep appId= | head -1 | sed 's/.*appId=//;s/ .*//')
  if [ -n "$UID" ]; then
    chown "$UID:$UID" "$SETTINGS" 2>/dev/null
    chmod 600 "$SETTINGS" 2>/dev/null
  fi
  N=$(strings "$SETTINGS" 2>/dev/null | grep -c 'rtsp://' || echo 0)
  log -t cctv_ojo "Ojo settings.bin instalado ($N camaras)"
  exit 0
fi

log -t cctv_ojo "AVISO: falta ojo-settings.bin — ejecuta deploy desde PC con JDK"
exit 1
