Am creat la github un proiect pentru domeniul public: Expose using UPnP a LAN port to WAN or IAN
Modulul permite configurarea automata prin UPnP (Universal Plug and Play) a unui router sa permita accesul din Internet la un server local.
Un exemplu de utilizare:
import os
from upnpgwcontrol import UpnpGWControl
PORT=os.getenv("PORT",8089)
gwc = UpnpGWControl()
if gwc.findGateway(5):
print "Gateway ip =", gwc.gateway_ip
print "Local ip =", gwc.myip
gwc.GetExternalIPAddress()
print "External ip =", gwc.myexternalip
gwc.DeletePortMapping(PORT)
gwc.AddPortMapping(PORT, PORT, "TCP", "Webserver port {}".format(PORT))
#start server
print "Start Server, port=",PORT
...
else:
print "Error findGateway"
Mai multe detalii de utilizare se gasesc la github, https://github.com/icoman/upnp-nat-punch, unde este inclus demonstrativ un server de web.
Atentie: utilizata abuziv, aplicatia permite accesul din Internet la orice server din reteaua locala.