python networking nat upnp

Implementación de Python UPnP/IGD Client?



networking nat (2)

El código fuente MiniUPnP contiene un código de ejemplo de Python que utiliza la biblioteca C como un módulo de extensión (consulte testupnpigd.py ), que considero una solución adecuada para mi problema.

Justificación: esta no es la solución pura de Python que estaba buscando, sino:

  • un esfuerzo significativo ya ha sido invertido en esta biblioteca,
  • es liviano (no soluciona los problemas del servidor de medios),
  • Normalmente, IGD solo se utiliza en la configuración de la conexión, por lo que no parece ser un problema integrarlo más estrechamente con el código de Python.
  • como beneficio adicional, también proporciona una implementación NAT-PNP (Apple concurrente de IGD, parte de Bonjour ).

Estoy buscando una implementación de código abierto de un cliente UPnP en Python, y más específicamente de su parte de dispositivo de puerta de enlace de Internet (IGD).

Por ahora, solo he podido encontrar implementaciones de UPnP Media Server, en proyectos como PyMediaServer , PyMedS , BRisa o Coherence .

Estoy seguro de que podría usar esas bases de código como inicio, pero la parte del Servidor de Medios introducirá una complejidad innecesaria.

Entonces, ¿puedes recomendar una biblioteca de Pynn de cliente UPnP (y con suerte IGD)? Una alternativa sería enviar llamadas a una biblioteca C como MiniUPnP , pero preferiría una implementación pura de Python.

Actualización: una discusión interesante y relacionada de SSDP y UPnP está disponible en StackOverflow .


Creo que deberías considerar a BRisa. Recientemente se convirtió en un framework UPnP de python puro, no enfocado solo en Media Server.

Proporciona muchos módulos y funciones de utilidad para que pueda compilar e implementar su dispositivo UPnP.

El proyecto también carece de comentarios :-). Te sugiero que uses el último código svn, si estás dispuesto a probar BRisa.

También puede contactar a los desarrolladores en #brisa en irc.freenode.org, estamos en línea o en ralentí.