SATPLAYTV WEBPLAYER - VERSION PARA HOSTING COMPARTIDO (cPanel / FTP)
=====================================================================
Creado por SatPlayTV - © 2026 SatPlayTV. Todos los derechos reservados.

Esta es la MISMA aplicacion que corre en tu servidor Ubuntu (https://webplayer.cojedor.top),
preparada para un hosting compartido: PHP + SQLite o MySQL/MariaDB. No necesita Docker, ni acceso root,
y ffmpeg es OPCIONAL (solo para el modo "Compatibilidad", ver seccion 5b). Incluye su panel de administracion completo (DNS, clientes, actividad, ajustes).

IMPORTANTE: este paquete NO se ha subido a ningun hosting. Lo subes tu cuando quieras
(el hosting real de satplaytv.com no se ha tocado).

---------------------------------------------------------------------
1. REQUISITOS DEL HOSTING
---------------------------------------------------------------------
- PHP 7.4 o superior (recomendado 8.1 - 8.3). En cPanel: "Seleccionar version de PHP".
- Extensiones: pdo_sqlite (o pdo_mysql), curl, openssl, mbstring, json. (El instalador las comprueba.)
- Que el hosting permita conexiones salientes (cURL) a tus servidores IPTV (puertos http/https normales y
  puertos altos como 8080/25461). Algunos hostings bloquean puertos altos: pregunta al soporte si no conecta.
- HTTPS activo en el dominio (Let's Encrypt/AutoSSL de cPanel).

---------------------------------------------------------------------
2. SUBIDA (Administrador de archivos de cPanel o FTP)
---------------------------------------------------------------------
Recomendado: un subdominio propio, p. ej. webplayer.satplaytv.com (cPanel > Dominios > Crear subdominio;
carpeta raiz del subdominio, p. ej. /home/USUARIO/webplayer.satplaytv.com).
(Tambien vale una subcarpeta: https://satplaytv.com/webplayer/ ; la aplicacion detecta la ruta sola.)

1) Descomprime Webplayer-hosting.zip en tu PC. Dentro hay la carpeta  webplayer/  con todo el codigo.
2) Sube TODO EL CONTENIDO de la carpeta webplayer/ (no la carpeta en si) a la carpeta raiz del subdominio.
   Debes ver directamente en la raiz: index.php, install.php, api.php, p.php, admin/, assets/, includes/, data/, .htaccess ...
   (Si usas el Administrador de archivos puedes subir el zip entero y "Extraer"; despues mueve el contenido.)
   Asegurate de subir tambien los archivos ocultos (.htaccess, .user.ini, data/.htaccess).
3) Permisos: carpetas 755 (o 750) y archivos 644. La carpeta data/ y la raiz deben ser escribibles por PHP
   (en cPanel normalmente ya lo son; si el instalador se queja, pon 755/775 a data/).

---------------------------------------------------------------------
3. INSTALACION (instalador web)
---------------------------------------------------------------------
1) Abre  https://TU-DOMINIO/install.php
2) Revisa que todos los requisitos salgan en verde.
3) Base de datos:
   - SQLite (recomendado, sin configurar nada): se crea un fichero con nombre aleatorio dentro de data/.
   - MySQL/MariaDB: crea antes en cPanel > "Bases de datos MySQL" una base y un usuario con todos los
     privilegios, y rellena servidor (normalmente localhost), base, usuario y clave. Prefijo de tablas: wp_.
4) Administrador: escribe un nombre de usuario y deja la clave vacia para que se genere una aleatoria fuerte
   (o pon una de 12+ caracteres).
5) Si el dominio va por Cloudflare, marca "detras de Cloudflare / proxy" para registrar la IP real del visitante.
6) (Opcional, recomendado si tu hosting NO es Apache, p. ej. Nginx/LiteSpeed sin .htaccess): en "Carpeta de datos"
   pon una ruta absoluta FUERA de la web, p. ej. /home/USUARIO/webplayer-data (la crea el instalador).
7) Pulsa Instalar. Se muestra UNA SOLA VEZ el usuario y la clave del administrador: guardalos.
   El instalador crea config.php en la raiz (si no puede, te muestra el contenido para pegarlo tu).
8) BORRA install.php del hosting inmediatamente despues.

Panel de administracion:  https://TU-DOMINIO/admin/
Reproductor de clientes:  https://TU-DOMINIO/
API del reproductor:      https://TU-DOMINIO/api.php   (la usa el propio reproductor)
Proxy de streams:         https://TU-DOMINIO/p.php     (solo funciona con token; sin token responde 403)

---------------------------------------------------------------------
4. PRIMEROS PASOS
---------------------------------------------------------------------
1) Entra en /admin/  > "DNS / Servidores" > "+ Anadir DNS":
   - Nombre visible (lo ven los clientes, p. ej. "Servidor 1").
   - Tipo Xtream: URL base (http://servidor:puerto) y usuario/clave IPTV por defecto.
     Tambien puedes pegar una URL get.php con usuario y clave: se convierte sola a Xtream.
   - Tipo M3U: URL de la lista.
   - Pulsa "Probar" para comprobar que conecta.
2) "Clientes" > "+ Nuevo cliente": usuario, caducidad, maximo de conexiones, DNS permitidos (ninguno marcado =
   todos los activos) y, si quieres, usuario/clave IPTV propios por DNS. Si dejas la clave vacia se genera una
   segura y se muestra una sola vez (copiala).
3) Pasa a tu cliente la direccion del reproductor (https://TU-DOMINIO/) y su usuario/clave del WebPlayer.
   El cliente NUNCA ve el DNS real ni las credenciales IPTV: todo pasa por el servidor.
4) "Actividad": quien esta en linea, que ve, expulsar reproducciones y registro de eventos.
5) "Ajustes": titulo, intro, tiempos, limite de intentos de login, cambiar la clave de administrador.

---------------------------------------------------------------------
5. LIMITES DEL HOSTING COMPARTIDO (importante)
---------------------------------------------------------------------
- El video pasa por PHP: cada espectador mantiene un proceso PHP ocupado mientras ve. Los hostings compartidos
  suelen limitar los procesos simultaneos (p. ej. 20-30 "entry processes") y el tiempo maximo de ejecucion.
  Resultado: sirve bien para pocos clientes a la vez. Para muchos espectadores usa la version del servidor Ubuntu.
- Si el hosting corta las conexiones largas, el reproductor se reconecta solo (hasta 4 veces) y despues cambia
  al siguiente formato/DNS.
- Algunos hostings prohiben el streaming de video por la cuenta compartida; revisa sus condiciones de uso.
- Si el hosting solo ofrece PHP 7.4 funciona igual; con PHP 8.x es algo mas rapido.

---------------------------------------------------------------------
5b. TRANSCODIFICACION / MODO COMPATIBILIDAD (OPCIONAL, necesita ffmpeg)
---------------------------------------------------------------------
- La aplicacion detecta SOLA si el hosting tiene ffmpeg (y la funcion PHP proc_open). Si no lo tiene (lo normal en
  hosting compartido), la opcion NO aparece en Ajustes ni el boton "Compatibilidad" en el reproductor, y todo
  funciona como siempre (reproduccion directa; algunos formatos como MKV/AVI/HEVC/AC3 pueden no verse en ciertos
  navegadores, sobre todo iPhone).
- Si tu hosting es un VPS/servidor propio con ffmpeg instalado (apt install ffmpeg) y proc_open habilitado,
  en Ajustes aparecera la seccion "Transcodificacion / Compatibilidad (ffmpeg)": activar, maximo de
  transcodificaciones simultaneas (por defecto 2) y calidad. Convierte a HLS (H.264 + AAC) bajo demanda y borra
  los temporales solos (carpeta data/tc). Si ffmpeg esta en una ruta no estandar, anade en config.php:
  'ffmpeg_path' => '/ruta/ffmpeg', 'ffprobe_path' => '/ruta/ffprobe'.
- Limpieza: se hace sola mientras haya espectadores. Opcional (cron cada minuto): php /ruta/tools/tc_reaper.php
- Aviso: transcodificar consume mucha CPU; en un hosting compartido suele estar prohibido. Usalo solo en
  servidores propios.

---------------------------------------------------------------------
6. SEGURIDAD
---------------------------------------------------------------------
- Claves guardadas con hash (bcrypt/argon), CSRF en todos los formularios, consultas preparadas, limite de intentos
  de login (por IP y usuario), cookies de sesion HttpOnly/SameSite/Secure, cabeceras de seguridad (CSP, HSTS...).
- Las carpetas includes/, data/ y tools/ llevan .htaccess que deniega el acceso web. Compruebalo tras instalar:
  https://TU-DOMINIO/includes/db.php  y  https://TU-DOMINIO/data/  deben dar 403 o 404.
  Si NO dan 403/404 (hosting sin Apache), usa la "Carpeta de datos" fuera de la web (paso 3.6) y pide al soporte
  que bloquee includes/ y tools/.
- Borra install.php tras instalar. No subas config.php a repositorios ni lo compartas (lleva la clave de cifrado).

---------------------------------------------------------------------
7. ACTUALIZAR A UNA VERSION NUEVA
---------------------------------------------------------------------
1) Haz copia de config.php y de la carpeta data/ (o de la base MySQL).
2) Sube los archivos nuevos encima, SIN sobrescribir config.php ni data/.
3) Vacia la cache desde Ajustes si hace falta.

COPIA DE SEGURIDAD: basta con guardar config.php + la carpeta data/ (SQLite) o config.php + exportar la base MySQL.

RECUPERAR LA CLAVE DE ADMIN: si tienes acceso SSH/cron, ejecuta  php tools/reset_admin.php  (muestra una clave nueva).
Sin SSH: borra config.php y data/ (pierdes datos) y vuelve a instalar, o restaura la copia.

DESINSTALAR: borra los archivos y, si usaste MySQL, las tablas con prefijo wp_.
