Ejemplo n.º 1
0
 def got_host_req(data):
     if not hw.pid:
         (hw.pid, hw.sock) = start_hostwatch(data.strip().split())
         handlers.append(Handler(socks=[hw.sock], callback=hostwatch_ready))
Ejemplo n.º 2
0
        debug1('Accept: %s:%r -> %s:%r.\n' %
               (srcip[0], srcip[1], dstip[0], dstip[1]))
        if dstip[1] == listener.getsockname()[1] and islocal(dstip[0]):
            debug1("-- ignored: that's my address!\n")
            sock.close()
            return
        chan = mux.next_channel()
        if not chan:
            log('warning: too many open channels.  Discarded connection.\n')
            sock.close()
            return
        mux.send(chan, ssnet.CMD_CONNECT, '%s,%s' % dstip)
        outwrap = MuxWrapper(mux, chan)
        handlers.append(Proxy(SockWrapper(sock, sock), outwrap))

    handlers.append(Handler([listener], onaccept))

    dnsreqs = {}

    def dns_done(chan, data):
        peer, timeout = dnsreqs.get(chan) or (None, None)
        debug3('dns_done: channel=%r peer=%r\n' % (chan, peer))
        if peer:
            del dnsreqs[chan]
            debug3('doing sendto %r\n' % (peer, ))
            dnslistener.sendto(data, peer)

    def ondns():
        pkt, peer = dnslistener.recvfrom(4096)
        now = time.time()
        if pkt: