Ejemplo n.º 1
0
    def test_stunmapper(self):
        from shtoom.stun import getSTUN, STUNMapper
        ae = self.assertEquals
        ar = self.assertRaises

        d = getSTUN()
        s = Saver()
        d.addCallback(s.save)
        util.wait(d, timeout=64)
        if not s.arg.useful:
            raise unittest.SkipTest('No useful STUN')

        mapper = STUNMapper()
        # Check we have a hate-on for TCP ports
        class tfactory(Factory):
            protocol = Protocol
        tport = reactor.listenTCP(0, tfactory())
        ar(ValueError, mapper.map, tport)
        tport.stopListening()
        ar(ValueError, mapper.map, tport)

        prot = DatagramProtocol()
        port = reactor.listenUDP(0, prot)
        ar(ValueError, mapper.info, port)
        t = TestMapper(mapper, port)
        d = t.go()
        util.wait(d, timeout=512)
        ae(len(t.map_res), 2)
        ae(t.map_res, t.info_res)
        ae(t.unmap_res, None)
        d = port.stopListening()
        util.wait(d)
        ar(ValueError, mapper.map, port)
        ar(ValueError, mapper.info, port)
Ejemplo n.º 2
0
def detectNAT():
    # We prefer UPnP when available, as it's less pissing about (ha!)
    from shtoom.upnp import getUPnP
    from shtoom.stun import getSTUN
    ud = getUPnP()
    sd = getSTUN()
    dl = defer.DeferredList([ud, sd])
    dl.addCallback(cb_detectNAT).addErrback(log.err)
    return dl
Ejemplo n.º 3
0
 def test_stundiscovery(self):
     from shtoom.stun import getSTUN, _NatType
     ae = self.assertEquals
     a_ = self.assert_
     d = getSTUN()
     s = Saver()
     d.addCallback(s.save)
     util.wait(d, timeout=16)
     a_(isinstance(s.arg, _NatType), "%s, %s :: %s" % (s, s.arg, type(s.arg),))
Ejemplo n.º 4
0
Archivo: nat.py Proyecto: braams/shtoom
def detectNAT():
    # We prefer UPnP when available, as it's less pissing about (ha!)
    from shtoom.upnp import getUPnP
    from shtoom.stun import getSTUN
    ud = getUPnP()
    sd = getSTUN()
    dl = defer.DeferredList([ud, sd])
    dl.addCallback(cb_detectNAT).addErrback(log.err)
    return dl
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
Archivo: nat.py Proyecto: braams/shtoom
def getMapper():
    # We prefer UPnP when available, as it's more robust
    global _installedShutdownHook
    if not _installedShutdownHook:
        from twisted.internet import reactor
        t = reactor.addSystemEventTrigger('after',
                                          'shutdown',
                                          clearCache)
        _installedShutdownHook = True
    try:
        from __main__ import app
    except:
        app = None
    natPref = 'both'
    if app is not None:
        #print "app is", app
        natPref = app.getPref('nat')
        log.msg('NAT preference says to use %s (%s)'%(natPref, app.getPref('nat')), system='nat')
        #print "NAT pref sez", natPref
    if _forcedMapper is not None:
        return defer.succeed(_forcedMapper)
    from shtoom.upnp import getUPnP
    from shtoom.stun import getSTUN
    if natPref == 'both':
        ud = getUPnP()
        sd = getSTUN()
        d = defer.DeferredList([ud, sd])
    elif natPref == 'upnp':
        ud = getUPnP()
        d = defer.DeferredList([ud, defer.succeed(None) ])
    elif natPref == 'stun':
        ud = getSTUN()
        d = defer.DeferredList([defer.succeed(None), sd])
    else:
        nm = NullMapper()
        d = defer.DeferredList([defer.succeed(None),
                                defer.succeed(None)])
    d.addCallback(cb_getMapper).addErrback(log.err)
    return d
Ejemplo n.º 8
0
def getMapper():
    # We prefer UPnP when available, as it's more robust
    global _installedShutdownHook
    if not _installedShutdownHook:
        from twisted.internet import reactor
        t = reactor.addSystemEventTrigger('after', 'shutdown', clearCache)
        _installedShutdownHook = True
    try:
        from __main__ import app
    except:
        app = None
    natPref = 'both'
    if app is not None:
        #print("app is", app)
        natPref = app.getPref('nat')
        log.msg('NAT preference says to use %s (%s)' %
                (natPref, app.getPref('nat')),
                system='nat')
        #print("NAT pref sez", natPref)
    if _forcedMapper is not None:
        return defer.succeed(_forcedMapper)
    from shtoom.upnp import getUPnP
    from shtoom.stun import getSTUN
    if natPref == 'both':
        ud = getUPnP()
        sd = getSTUN()
        d = defer.DeferredList([ud, sd])
    elif natPref == 'upnp':
        ud = getUPnP()
        d = defer.DeferredList([ud, defer.succeed(None)])
    elif natPref == 'stun':
        ud = getSTUN()
        d = defer.DeferredList([defer.succeed(None), sd])
    else:
        nm = NullMapper()
        d = defer.DeferredList([defer.succeed(None), defer.succeed(None)])
    d.addCallback(cb_getMapper).addErrback(log.err)
    return d