PyStreamy | Realiza stream seguro enigma2

Pulsar para soporte en grupo en foro

¿ Que hace jungle Script ?

¿ Sabias que cuando realizamos stream desde nuestro receptor a otros dispositivos a traves del puerto 8001 o 8002 o cualquier otro de los puertos que podamos usar, este servicio se realiza a través de protocolo http, y que si esta comunicacion es interceptada por una tercera persona la informacion viaja sin cifrar ?

Esto implica que cualquier persona que acceda a esta informacion como hemos mencionado que va sin cifrar va a tener a su disposicion los datos de acceso a nuestro receptor, es decir nuestro usuario y password, y como ademas en enigma2 el usuario y password de streaming coinicide con el usuario y password del sistema pues tendran acceso completo a nuestro receptor.

HTTP-HTTPS

Los receptores enigma2 no tienen la posibilidad de usar el protocolo https mediante streaming, en el caso de usar openvpn o zerotier no tenemos problema ya que estos protocolos ya cifran la comunicación.

¿ Pero que ocurre si el dispositivo cliente no tenemos la posibilidad de usar openvpn ni zerotier, o no deseamos usar estos protocolos ?

En este caso el compañero @amoyse del grupo telegram jungle-team ha creado un script python que a traves de un reverse proxy nos permite que el streaming se realice de una manera segura y cifrada a traves del protocolo https, al que ha denominado PyStreamy que vamos a tratar en este articulo.

1 Registrarse Duckdns para obtener dominio 

En primer lugar vamos a ver como crearnos un dominio a través del servicio gratuito Duckdns, cuya utilidad es basicamente para acceder a nuestro receptor fuera de nuestra red local para convertir nuestra ip publica por un nombre que ademas de ser mas facil de recordar nos permite el acceso a nuestro receptor aunque nos cambie la ip publica en caso que esta sea dinamica, asi como tambien nos va a permiter como veremos mas adelante crear certificados para el servidor https asociados a nuestro host Duckdns.

1.1. Accedemos a la web oficial a través de este enlace

2.2. Ahora simplemente nos registramos, introducimos el nombre que deseemos y pulsamos en add domain, ahora observaremos dos datos que deseamos guardar y que nos haran falta posteriormente:

  • Dominio creado, en este ejemplo jungleteam.duckdns.org
  • Token

2 Creacion de Certificados SSL

Como el fin de PyStreamy es crear en nuestro receptor un servidor bajo protocolo https para la emision del streaming que nos va a garantizar la proteccion y seguridad de la emision, y este protocolo necesita la obtención de unos certificados que permiten autentificar la identidad de nuestro servidor https y cifrar la informacion transmitida, vamos a ver como crear nuestros certificados.

A traves de openssl en nuestros receptores tendriamos la opcion de crear certificados autofirmados, el problema que tenemos es que este tipo de certificados por los navegadores web o aplicaciones no son reconocidos como de confianza, por lo que para evitar posibles restricciones por este motivo vamos a realizar el proceso de creacion de los certificados usando:

  • Let’s Encrypt, que es una autoridad de certificacion gratuita
  • dehydrated, que es un cliente para Let’s Encrypt y que vamos a utilizar para crear los certificados para nuestro dominio duckdns que hemos creado en el paso anterior

Para creacion de estos certificados hemos tomado como base de fuente el manual de esta web , pero para realizar el proceso automatizado y facil asi como adaptado a nuestros receptores enigma2, hemos creado un script que va a realizar todo el proceso facilmente y automatico asi como la ubicacion de los certificados para el uso de PyStreamy, el script va a realizar lo siguiente:

  • Creacion de certificados cert.pem y key.pem
  • Enlace simbolico a los mismos en el directorio /etc/enigma2/certs
  • Creacion en crontab de dos funciones (actualizacion de ip en duckdns y actualizacion mensual de los certificados)
  • Instalacion de curl necesaria en los receptores que no lo tengan instalado necesaria para la creacion de los certificados.

2.1. En primer lugar nos descargamos el script que hemos creado del siguiente enlace, una vez descargado lo descomprimimos en nuestro pc y lo introducimos por ejemplo en el directorio /usr/bin de nuestro receptor.

2.2 El script necesita permisos de ejecucion para ello simplemente ejecutamos por terminal

chmod 777 /usr/bin/certificados.sh

2.3 Ahora vamos a proceder a la ejecucion del script, es muy sencilla solo tenemos que tener en cuenta dos parametros para su ejecucion

Parámetro Funcion
-host Introducir nuestro host duckdns, ejemplo -host jungleteam.duckdns.org
-token Introducir el token de nuestra cuenta duckdns, ejemplo -token 34t5tgslsldfldlsw75757ldl
-h Ayuda, nos muestra las variables de ejecucion del script

Ejemplo de la ejecucion:

/usr/bin/certificados.sh -host jungleteam.duckdns.org -token 34t5tgslsldfldlsw75757ldl

Una vez finalizada la creacion nos aparecera en el script:

y se nos ha creado en el directorio /etc/enigma2/certs los enlaces simbolicos que usaremos como veremos mas tarde para la utilidad pystreamy

3 PyStreamy | Manual de uso

Una vez que ya tenemos todo preparado, ahora vamos a entrar el uso de PyStreamy creacion de @amoyse que nos va a permitir realizar streaming vitaminado, que como vimos en  la introducción de este articulo el emitir nuestro streaming de la siguiente manera:

  • De manera segura por protocolo https
  • De manera autentificada el acceso, lo que nos permitirá no tener que usar el usuario y password del receptor, si no el del servidor https.
  • Descargar lista canales de los favoritos de nuestro receptor
  • Usar url de las listas canales de los favoritos de nuestro receptor
  • Listas canales con picones
  • Url para epg 3 dias koala para movistar+

 

REQUISITOS:

  • Autentificacion enlace http en openwebif en NO
  • Habilitar autentificacion para streaming http en openwebif en NO
  • Habilitar autentificacion para streaming http en configuracion de enigma en NO

 

3.1. Instalacion pystreamy

En primer lugar nos descargamos pystreamy de la  siguiente pagina descarga (y lo introducimos en el directorio /tmp de nuestro receptor

A continuacion por terminal ejecutamos el siguiente comando:

opkg install /tmp/(version de pystreamy)

Ejemplo:

opkg install /tmp/pystreamy_0.2.6_all.ipk

3.2. Configuracion pystreamy

PyStreamy busca el archivo de configuración en la siguiente ubicación del receptor, el cual se  introduce en el receptor en la instalacion del .ipk:

  • /etc/enigma2/pystreamy.conf

Los parametros de configuracion de PyStreamy son los siguientes:

 

Parámetro Funcion
bind valor por defecto 0.0.0.0, parámetro que no se debe cambiar para la generación de listas canales para en caso de usar openvpn o zerotier
port Puerto de acceso en red local, por defecto 3128, ejemplo introducimos en el navegador web  https://192.168.1.45:3128/services
webif_port El puerto de openwebif, por defecto es 80, en caso de haberlo cambiado en el menu de openwebif introducir en este parametro el nuevo puerto.
zap Por defecto True, es decir cuando realizamos streaming y cambiamos de canal se producira zaping en el receptor, utilidad para receptores de un solo tuner, en caso contrario introduciremos False para no realizar zaping en el receptor
ext_scheme Por defecto vacío, en este caso no se activa, necesario introducir https para la activacion del servicio
ext_host Introducimos el dominio para acceder fuera de nuestra red, ejemplo con dominio ducksdns, jungleteam.duckdns.org
ext_port Puerto de acceso para fuera de nuestra red local, por defecto 3129, sera el puerto que deberemos abrir en nuestro router a la ip del receptor, ejemplo introduciremos en nuestro navegador web  https://jungleteam.duckdns.org:3129/services
user Nombre usuario de acceso a nuestro servidor, por ejemplo jungle
password Contraseña de acceso a nuestro servidor, por ejemplo jungleteam
guest_user Da lo posibilidad de crear invitados para acceder a las listas streaming, es decir puedes crear con este parametro distinos usuarios para acceder al streaming, ejemplo: guest_user=jungle1:pepito, puedes crear tantas lineas como usuarios quieras crear.
keyfile Ruta ubicacion a key.pem, por defecto en el lugar donde se crea con el script certificados en /etc/enigma2/certs/key.pem
certfile Ruta ubicacion a cert.pem, por defecto en el lugar donde se crea con el script certificados en /etc/enigma2/certs/cert.pem
log_level Por defecto 20 (info), valores admitidos: 50 (critical), 40 (error), 30 (warning), 10 (debug), 0(noset), el archivo log se guarda en: /var/log/pystreamy.log

 

3.3 Iniciar | parar | reiniciar Pystreamy

Tras la instalacion de pystreamy se nos crea un daemon de activacion  en /etc/init.d/pystreamy  que permite iniciar el servicio en un renicio completo del receptor, en el caso que deseemos iniciar, parar o reiniciar el servicio podemos ejecutar los siguientes comandos:

/etc/init.d/pystreamy start

/etc/init.d/pystreamy stop

/etc/init.d/pystreamy restart

IMPORTANTE:

  • Cuando realizamos cualquier cambio en el archivo de configuracion de pystreamy es necesario reiniciar el servicio.

3.4. pystreamy | generacion listas m3u

Una vez hemos iniciado el servicio pystreamy vamos a ver como realizar el uso del mismo, mediante unos ejemplos de configuracion del archivo /etc/enigma2/pystreamy.conf:

Ejemplo 1

bind=0.0.0.0
port=3128
deco_ip=
webif_port=80
zap=True
ext_scheme=
ext_host=
ext_port=3129
keyfile=/etc/enigma2/certs/key.pem
certfile=/etc/enigma2/certs/cert.pem
user=manolo
password=terww455
log_level=20En este caso:

  • Realizamos zap en el receptor a traves del streaming, utilidad para receptores de un solo tuner
  • No usamos dominio para acceder fuera de nuestra red
  • Usamos usuario y contraseña para acceder
  • Protocolo es http

En este ejemplo introducimos en nuestro navegador web : http://ipdelreceptor:3128/services  y accederiamos a la lista de canales de nuestro receptor, este ejemplo seria basicamente para usar en red local

Ejemplo 2

bind=0.0.0.0
port=3128
deco_ip=

webif_port=80
zap=False
ext_scheme=https
ext_host=jungleteam.duckdns.org
ext_port=3129
user=root
password=jungleteam
keyfile=/etc/enigma2/certs/key.pem
certfile=/etc/enigma2/certs/cert.pem
log_level=20

En este caso:

  • Vamos a usar transcode ademas de streaming normal
  • No realizamos zap en el receptor
  • usamos dominio para acceder fuera de nuestra red local
  • Usamos usuario y contraseña para acceder

En este ejemplo introducimos en nuestro navegador web : https://dominioduckdns:3129/services  y accederiamos a la lista de canales de nuestro receptor, todo bajo protocolo https y las podemos generar tanto para ip local como para dominio duckdns asi como normales y transcodificadas

Una vez hemos accedido a la interfaz web podemos pulsar sobre cualquiera de la listas para descargar en nuestro pc la lista generada para ser usada en cualquier dispositivo o pulsar boton derecho sobre las mismas para obtener una  url de la lista para introducir dicha url en las aplicaciones de los dispositivos si no deseamos realizar la descarga.

  • Las listas de canales llevan picones de los canales
  • En la interfaz web como observamos tambien podemos usar url para asignar epg a los canales

ATENCION:

  • Si tenemos habilitado dominio en la opcion ex_host, es posible que en algunos router de las  compañias de internet no sea posible acceder a traves de red local, y sea necesario acceder desde red exterior.

3.5. Pystreamy | ejemplos de uso

Una vez que ya hemos hecho un recorrido de configuración y activación de pystreamy, ahora vamos a ver ejemplo de uso en diferentes aplicaciones, y la potencia de esta herramienta para la realización de streaming seguro a través del protocolo https.

Partiendo de la base que hemos realizado una configuración tipo ejemplo 2 anterior, es decir con uso de protocolo https y dominio duckdns, pues pulsamos en este ejemplo boton derecho sobre la lista para obtener el enlace url a la misma

En este caso obtendremos la siguiente url:

https://root:jungleteam@jungleteam.duckdns.org:3129/channels?s=0&t=e

  • En el caso de usar VLC introducimos dicha url obtenida en medios de red de vlc

Nos aparecer el listado de canales correspondiente a la url que hemos obtenido:

Y lo que es mas importante de todo, el streaming se realiza totalmente seguro y cifrado a traves del protocolo https, como vemos a continuacion:

De la misma manera podemos usar tanto las listas m3u descargadas en la interfaz web de pystreamy asi como las url sin necesidad de descarga, al igual que en VLC, en diferentes aplicaciones como kodi, iptvextrem, tiviomate, smartiptv…… y lo mas importante usando el protocolo https el streaming como se ha indicado se realiza cifrado y sin necesidad de usar el usuario del sistema de enigma2.

3.6 Status Conexion

A partir de las versiones 4.0 es posible ver la conexiones conectadas a nuestro receptor, asi podemos saber quien esta usando el streaming en nuestro receptor, para ello en el navegador introducimos:

https://dominioduckdns:3129/status

A partir de version 4.1 es posible parar streaming dentro de estatus

3.7. Crear usuarios streaming

A partir de la version 5.0 de pystreamy es posible la creacion de distintos usuarios para que accedan a nuestras listas canales, para ello se realiza con el parametro:

guest_user=usuarios:password

Podemos crear tantas lineas como usuarios deseemos tener, un ejemplo para dos usuarios:

Ahora cuando accedemos a /services nos apareceran tantas listas como usuarios hallamos añadido

Y en status podemos ver los usuarios conectados

 

4. Creditos

Dar las gracias al compañero @amoyse del grupo telegram jungle-team  por la creacion, desarrollo y liberar esta poderosa herramienta para nuestros receptores enigma2, que nos permite de una manera facil el poder realizar la emision de streamin a traves de protocolo https de una manera totalmente segura.

Related posts

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: