def addPortMapping(self, intport, extport, desc, proto='UDP', lease=0): "add a port mapping. returns a deferred" from .nat import getLocalIPAddress from twisted.internet import defer cd = defer.Deferred() d = getLocalIPAddress() d.addCallback(lambda locIP: self._cbAddPortMapping(intport, extport, desc, proto, lease, locIP, cd)) return cd
def main(): from twisted.internet import defer from shtoom.upnp import getUPnP from shtoom.stun import getSTUN from shtoom.nat import getLocalIPAddress, getMapper ud = getUPnP() sd = getSTUN() ld = getLocalIPAddress() md = getMapper() dl = defer.DeferredList([ud, sd, ld, md]) dl.addCallback(gotResults).addErrback(didntGetResults)
def startDiscovery(self): from shtoom.nat import isBogusAddress, getLocalIPAddress if _ForceStunType is not None: self.natType = _ForceStunType reactor.callLater(0, self._finishedStun) return localAddress = self.transport.getHost().host if isBogusAddress(localAddress): d = getLocalIPAddress() d.addCallback(self._resolveStunServers) else: self._resolveStunServers(localAddress)
def _cb_map_gotUPnP(self, upnp, port): from shtoom.nat import isBogusAddress, getLocalIPAddress # XXX Test that upnp is present self.upnp = upnp # Extract local address from the port locAddr = port.getHost().host if isBogusAddress(locAddr): # lookup local IP. d = getLocalIPAddress() d.addCallback(lambda x: self._cb_map_gotLocalIP(x, port)) else: self._cb_map_gotLocalIP(locAddr, port)