Exemple #1
0
 def test_str(self):
     stream = Stream(self)
     stream.update(
         "316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER"
         .split())
     stream.circuit = FakeCircuit(1)
     str(stream)
Exemple #2
0
 def test_args_in_ctor(self):
     stream = Stream(self)
     stream.update(
         "1 NEW 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH"
         .split())
     self.assertEqual(stream.id, 1)
     self.assertEqual(stream.state, 'NEW')
Exemple #3
0
 def test_circuit_already_valid_in_new(self):
     stream = Stream(self)
     stream.circuit = FakeCircuit(1)
     stream.update("1 NEW 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH".split())
     errs = self.flushLoggedErrors()
     self.assertEqual(len(errs), 1)
     self.assertTrue('Weird' in errs[0].getErrorMessage())
Exemple #4
0
    def test_ipv6(self):
        listener = Listener([('new', {'target_host': '::1',
                                      'target_port': 80})])

        stream = Stream(self)
        stream.listen(listener)
        stream.update("1234 NEW 0 ::1:80 SOURCE_ADDR=127.0.0.1:57349 PURPOSE=USER".split())
Exemple #5
0
    def test_listener_new(self):
        listener = Listener([('new', {'target_port': 9001})])

        stream = Stream(self)
        stream.listen(listener)
        stream.update(
            "1 NEW 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH"
            .split())
Exemple #6
0
 def test_magic_circuit_detach(self):
     stream = Stream(self)
     stream.circuit = FakeCircuit(1)
     stream.circuit.streams = [stream]
     stream.update(
         "1 SENTCONNECT 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH"
         .split())
     self.assertTrue(stream.circuit is None)
Exemple #7
0
    def test_update_illegal_state(self):
        self.circuits[186] = FakeCircuit(186)

        stream = Stream(self)
        try:
            stream.update("316 FOO 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER".split())
            self.fail()
        except Exception as e:
            self.assertTrue('Unknown state' in str(e))
Exemple #8
0
 def test_circuit_already_valid_in_new(self):
     stream = Stream(self)
     stream.circuit = FakeCircuit(1)
     stream.update(
         "1 NEW 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH"
         .split())
     errs = self.flushLoggedErrors()
     self.assertEqual(len(errs), 1)
     self.assertTrue('Weird' in errs[0].getErrorMessage())
Exemple #9
0
    def test_update_wrong_stream(self):
        self.circuits[186] = FakeCircuit(186)

        stream = Stream(self)
        stream.update("316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER".split())
        try:
            stream.update("999 SENTCONNECT 186 1.2.3.4:80 SOURCE=EXIT".split())
            self.fail()
        except Exception as e:
            self.assertTrue('wrong stream' in str(e))
Exemple #10
0
    def test_ipv6_source(self):
        listener = Listener([('new', {
            'source_addr': maybe_ip_addr('::1'),
            'source_port': 12345
        })])

        stream = Stream(self)
        stream.listen(listener)
        stream.update(
            "1234 NEW 0 127.0.0.1:80 SOURCE_ADDR=::1:12345 PURPOSE=USER".split(
            ))
Exemple #11
0
    def test_ipv6(self):
        listener = Listener([('new', {
            'target_host': '::1',
            'target_port': 80
        })])

        stream = Stream(self)
        stream.listen(listener)
        stream.update(
            "1234 NEW 0 ::1:80 SOURCE_ADDR=127.0.0.1:57349 PURPOSE=USER".split(
            ))
Exemple #12
0
    def test_update_illegal_state(self):
        self.circuits[186] = FakeCircuit(186)

        stream = Stream(self)
        try:
            stream.update(
                "316 FOO 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER"
                .split())
            self.fail()
        except Exception as e:
            self.assertTrue('Unknown state' in str(e))
Exemple #13
0
    def test_ipv6_source(self):
        listener = Listener(
            [
                ('new', {'source_addr': maybe_ip_addr('::1'),
                         'source_port': 12345})
            ]
        )

        stream = Stream(self)
        stream.listen(listener)
        stream.update("1234 NEW 0 127.0.0.1:80 SOURCE_ADDR=::1:12345 PURPOSE=USER".split())
Exemple #14
0
    def test_update_wrong_stream(self):
        self.circuits[186] = FakeCircuit(186)

        stream = Stream(self)
        stream.update(
            "316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER"
            .split())
        try:
            stream.update("999 SENTCONNECT 186 1.2.3.4:80 SOURCE=EXIT".split())
            self.fail()
        except Exception as e:
            self.assertTrue('wrong stream' in str(e))
Exemple #15
0
    def test_listener_attach_no_remap(self):
        "Attachment is via SENTCONNECT on .onion addresses (for example)"
        self.circuits[186] = FakeCircuit(186)

        listener = Listener([('new', {'target_host': 'www.yahoo.com',
                                      'target_port': 80}),
                             ('attach', {})])

        stream = Stream(self)
        stream.listen(listener)
        stream.update("316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER".split())
        stream.update("316 SENTCONNECT 186 1.2.3.4:80 SOURCE=EXIT".split())

        self.assertEqual(self.circuits[186].streams[0], stream)
Exemple #16
0
    def test_stream_changed_with_detach(self):
        "Change a stream-id mid-stream, but with a DETACHED message"
        self.circuits[123] = FakeCircuit(123)
        self.circuits[456] = FakeCircuit(456)

        listener = Listener(
            [
                ('new', {'target_host': 'www.yahoo.com', 'target_port': 80}),
                ('attach', {}),
                ('detach', {'kwargs': dict(reason='END', remote_reason='MISC')}),
                ('attach', {})
            ]
        )

        stream = Stream(self)
        stream.listen(listener)
        stream.update("999 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER".split())
        stream.update("999 SENTCONNECT 123 1.2.3.4:80".split())
        self.assertEqual(len(self.circuits[123].streams), 1)
        self.assertEqual(self.circuits[123].streams[0], stream)

        stream.update("999 DETACHED 123 1.2.3.4:80 REASON=END REMOTE_REASON=MISC".split())
        self.assertEqual(len(self.circuits[123].streams), 0)

        stream.update("999 SENTCONNECT 456 1.2.3.4:80 SOURCE=EXIT".split())
        self.assertEqual(len(self.circuits[456].streams), 1)
        self.assertEqual(self.circuits[456].streams[0], stream)
Exemple #17
0
    def test_stream_changed_with_detach(self):
        "Change a stream-id mid-stream, but with a DETACHED message"
        self.circuits[123] = FakeCircuit(123)
        self.circuits[456] = FakeCircuit(456)

        listener = Listener([('new', {
            'target_host': 'www.yahoo.com',
            'target_port': 80
        }), ('attach', {}),
                             ('detach', {
                                 'kwargs':
                                 dict(reason='END', remote_reason='MISC')
                             }), ('attach', {})])

        stream = Stream(self)
        stream.listen(listener)
        stream.update(
            "999 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER"
            .split())
        stream.update("999 SENTCONNECT 123 1.2.3.4:80".split())
        self.assertEqual(len(self.circuits[123].streams), 1)
        self.assertEqual(self.circuits[123].streams[0], stream)

        stream.update(
            "999 DETACHED 123 1.2.3.4:80 REASON=END REMOTE_REASON=MISC".split(
            ))
        self.assertEqual(len(self.circuits[123].streams), 0)

        stream.update("999 SENTCONNECT 456 1.2.3.4:80 SOURCE=EXIT".split())
        self.assertEqual(len(self.circuits[456].streams), 1)
        self.assertEqual(self.circuits[456].streams[0], stream)
Exemple #18
0
    def test_closed_remaining_streams(self):
        tor = FakeTorController()
        circuit = Circuit(tor)
        circuit.listen(tor)
        circuit.update('1 LAUNCHED PURPOSE=GENERAL'.split())
        stream = Stream(tor)
        stream.update("1 NEW 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH".split())
        circuit.streams.append(stream)
        self.assertEqual(len(circuit.streams), 1)

        circuit.update('1 CLOSED $E11D2B2269CC25E67CA6C9FB5843497539A74FD0=eris,$50DD343021E509EB3A5A7FD0D8A4F8364AFBDCB5=venus,$253DFF1838A2B7782BE7735F74E50090D46CA1BC=chomsky PURPOSE=GENERAL REASON=FINISHED'.split())
        circuit.update('1 FAILED $E11D2B2269CC25E67CA6C9FB5843497539A74FD0=eris,$50DD343021E509EB3A5A7FD0D8A4F8364AFBDCB5=venus,$253DFF1838A2B7782BE7735F74E50090D46CA1BC=chomsky PURPOSE=GENERAL REASON=TIMEOUT'.split())
        errs = self.flushLoggedErrors()
        self.assertEqual(len(errs), 2)
Exemple #19
0
    def test_states_and_uris(self):
        self.circuits[1] = FakeCircuit(1)

        stream = Stream(self)
        for address in [
                '1.2.3.4:80',
                '1.2.3.4.315D5684D5343580D409F16119F78D776A58AEFB.exit:80',
                'timaq4ygg2iegci7.onion:80']:

            line = "316 %s 1 %s REASON=FOO"
            for state in ['NEW', 'SUCCEEDED', 'REMAP',
                          'SENTCONNECT',
                          'DETACHED', 'NEWRESOLVE', 'SENTRESOLVE',
                          'FAILED', 'CLOSED']:
                stream.update((line % (state, address)).split(' '))
                self.assertEqual(stream.state, state)
Exemple #20
0
    def test_listener_attach(self):
        self.circuits[186] = FakeCircuit(186)

        listener = Listener(
            [
                ('new', {'target_host': 'www.yahoo.com', 'target_port': 80}),
                ('attach', {'target_addr': maybe_ip_addr('1.2.3.4')})
            ]
        )

        stream = Stream(self)
        stream.listen(listener)
        stream.update("316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER".split())
        stream.update("316 REMAP 186 1.2.3.4:80 SOURCE=EXIT".split())

        self.assertEqual(self.circuits[186].streams[0], stream)
Exemple #21
0
    def test_listener_exception(self):
        """A listener throws an exception during notify"""

        exc = Exception("the bad stuff happened")

        class Bad(StreamListenerMixin):
            def stream_new(*args, **kw):
                raise exc
        listener = Bad()

        stream = Stream(self)
        stream.listen(listener)
        stream.update("1 NEW 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH".split())

        errors = self.flushLoggedErrors()
        self.assertEqual(1, len(errors))
        self.assertEqual(errors[0].value, exc)
Exemple #22
0
    def test_states_and_uris(self):
        self.circuits[1] = FakeCircuit(1)

        stream = Stream(self)
        for address in [
                '1.2.3.4:80',
                '1.2.3.4.315D5684D5343580D409F16119F78D776A58AEFB.exit:80',
                'timaq4ygg2iegci7.onion:80'
        ]:

            line = "316 %s 1 %s REASON=FOO"
            for state in [
                    'NEW', 'SUCCEEDED', 'REMAP', 'SENTCONNECT', 'DETACHED',
                    'NEWRESOLVE', 'SENTRESOLVE', 'FAILED', 'CLOSED'
            ]:
                stream.update((line % (state, address)).split(' '))
                self.assertEqual(stream.state, state)
Exemple #23
0
    def test_listener_attach_no_remap(self):
        "Attachment is via SENTCONNECT on .onion addresses (for example)"
        self.circuits[186] = FakeCircuit(186)

        listener = Listener([('new', {
            'target_host': 'www.yahoo.com',
            'target_port': 80
        }), ('attach', {})])

        stream = Stream(self)
        stream.listen(listener)
        stream.update(
            "316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER"
            .split())
        stream.update("316 SENTCONNECT 186 1.2.3.4:80 SOURCE=EXIT".split())

        self.assertEqual(self.circuits[186].streams[0], stream)
Exemple #24
0
    def test_listener_attach(self):
        self.circuits[186] = FakeCircuit(186)

        listener = Listener([('new', {
            'target_host': 'www.yahoo.com',
            'target_port': 80
        }), ('attach', {
            'target_addr': maybe_ip_addr('1.2.3.4')
        })])

        stream = Stream(self)
        stream.listen(listener)
        stream.update(
            "316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER"
            .split())
        stream.update("316 REMAP 186 1.2.3.4:80 SOURCE=EXIT".split())

        self.assertEqual(self.circuits[186].streams[0], stream)
Exemple #25
0
    def test_listener_exception(self):
        """A listener throws an exception during notify"""

        exc = Exception("the bad stuff happened")

        class Bad(StreamListenerMixin):
            def stream_new(*args, **kw):
                raise exc

        listener = Bad()

        stream = Stream(self)
        stream.listen(listener)
        stream.update(
            "1 NEW 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH"
            .split())

        errors = self.flushLoggedErrors()
        self.assertEqual(1, len(errors))
        self.assertEqual(errors[0].value, exc)
Exemple #26
0
 def test_listener_fail(self):
     listener = Listener(
         [
             ('new', {'target_host': 'www.yahoo.com', 'target_port': 80}),
             ('attach', {'target_addr': maybe_ip_addr('1.2.3.4')}),
             ('failed', {'kwargs': dict(REASON='TIMEOUT', REMOTE_REASON='DESTROYED')})
         ]
     )
     stream = Stream(self)
     stream.listen(listener)
     stream.update("316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER".split())
     self.circuits[186] = FakeCircuit(186)
     stream.update("316 REMAP 186 1.2.3.4:80 SOURCE=EXIT".split())
     stream.update("316 FAILED 0 1.2.3.4:80 REASON=TIMEOUT REMOTE_REASON=DESTROYED".split())
Exemple #27
0
    def test_close_stream(self):
        self.circuits[186] = FakeCircuit(186)
        stream = Stream(self)
        stream.update("316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER".split())
        stream.update("316 REMAP 186 1.2.3.4:80 SOURCE=EXIT".split())

        self.assertEqual(len(self.circuits[186].streams), 1)

        d = stream.close()
        self.assertTrue(not d.called)
        self.assertEqual(len(self.circuits[186].streams), 1)

        stream.update("316 CLOSED 186 1.2.3.4:80 REASON=END REMOTE_REASON=DONE".split())
        self.assertTrue(d.called)
        self.assertEqual(len(self.circuits[186].streams), 0)
Exemple #28
0
    def test_listener_close(self):
        self.circuits[186] = FakeCircuit(186)

        listener = Listener(
            [
                ('new', {'target_host': 'www.yahoo.com', 'target_port': 80}),
                ('attach', {'target_addr': maybe_ip_addr('1.2.3.4')}),
                ('closed', {'kwargs': dict(REASON='END', REMOTE_REASON='DONE')})
            ]
        )
        stream = Stream(self)
        stream.listen(listener)
        stream.update("316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER".split())
        stream.update("316 REMAP 186 1.2.3.4:80 SOURCE=EXIT".split())
        stream.update("316 CLOSED 186 1.2.3.4:80 REASON=END REMOTE_REASON=DONE".split())

        self.assertEqual(len(self.circuits[186].streams), 0)
Exemple #29
0
    def test_close_stream(self):
        self.circuits[186] = FakeCircuit(186)
        stream = Stream(self)
        stream.update(
            "316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER"
            .split())
        stream.update("316 REMAP 186 1.2.3.4:80 SOURCE=EXIT".split())

        self.assertEqual(len(self.circuits[186].streams), 1)

        d = stream.close()
        self.assertTrue(not d.called)
        self.assertEqual(len(self.circuits[186].streams), 1)

        stream.update(
            "316 CLOSED 186 1.2.3.4:80 REASON=END REMOTE_REASON=DONE".split())
        self.assertTrue(d.called)
        self.assertEqual(len(self.circuits[186].streams), 0)
Exemple #30
0
    def test_stream_changed(self):
        "Change a stream-id mid-stream."
        self.circuits[186] = FakeCircuit(186)

        listener = Listener([('new', {'target_host': 'www.yahoo.com',
                                      'target_port': 80}),
                             ('attach', {}),
                             ('succeeded', {})])

        stream = Stream(self)
        stream.listen(listener)
        stream.update("316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER".split())
        stream.update("316 SENTCONNECT 186 1.2.3.4:80 SOURCE=EXIT".split())
        self.assertEqual(self.circuits[186].streams[0], stream)

        # magically change circuit ID without a DETACHED, should fail
        stream.update("316 SUCCEEDED 999 1.2.3.4:80 SOURCE=EXIT".split())
        errs = self.flushLoggedErrors()
        self.assertEqual(len(errs), 1)
        # kind of fragile to look at strings, but...
        self.assertTrue('186 to 999' in str(errs[0]))
Exemple #31
0
    def test_listener_close(self):
        self.circuits[186] = FakeCircuit(186)

        listener = Listener([('new', {
            'target_host': 'www.yahoo.com',
            'target_port': 80
        }), ('attach', {
            'target_addr': maybe_ip_addr('1.2.3.4')
        }), ('closed', {
            'kwargs': dict(REASON='END', REMOTE_REASON='DONE')
        })])
        stream = Stream(self)
        stream.listen(listener)
        stream.update(
            "316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER"
            .split())
        stream.update("316 REMAP 186 1.2.3.4:80 SOURCE=EXIT".split())
        stream.update(
            "316 CLOSED 186 1.2.3.4:80 REASON=END REMOTE_REASON=DONE".split())

        self.assertEqual(len(self.circuits[186].streams), 0)
Exemple #32
0
 def test_listener_fail(self):
     listener = Listener([('new', {
         'target_host': 'www.yahoo.com',
         'target_port': 80
     }), ('attach', {
         'target_addr': maybe_ip_addr('1.2.3.4')
     }),
                          ('failed', {
                              'kwargs':
                              dict(REASON='TIMEOUT',
                                   REMOTE_REASON='DESTROYED')
                          })])
     stream = Stream(self)
     stream.listen(listener)
     stream.update(
         "316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER"
         .split())
     self.circuits[186] = FakeCircuit(186)
     stream.update("316 REMAP 186 1.2.3.4:80 SOURCE=EXIT".split())
     stream.update(
         "316 FAILED 0 1.2.3.4:80 REASON=TIMEOUT REMOTE_REASON=DESTROYED".
         split())
Exemple #33
0
    def test_stream_changed(self):
        "Change a stream-id mid-stream."
        self.circuits[186] = FakeCircuit(186)

        listener = Listener([('new', {
            'target_host': 'www.yahoo.com',
            'target_port': 80
        }), ('attach', {}), ('succeeded', {})])

        stream = Stream(self)
        stream.listen(listener)
        stream.update(
            "316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER"
            .split())
        stream.update("316 SENTCONNECT 186 1.2.3.4:80 SOURCE=EXIT".split())
        self.assertEqual(self.circuits[186].streams[0], stream)

        # magically change circuit ID without a DETACHED, should fail
        stream.update("316 SUCCEEDED 999 1.2.3.4:80 SOURCE=EXIT".split())
        errs = self.flushLoggedErrors()
        self.assertEqual(len(errs), 1)
        # kind of fragile to look at strings, but...
        self.assertTrue('186 to 999' in str(errs[0]))
Exemple #34
0
 def test_stream_addrmap_remap(self):
     addrmap = AddrMap()
     addrmap.update('meejah.ca 1.2.3.4 never')
     stream = Stream(self, addrmap)
     stream.update("1604 NEW 0 1.2.3.4:0 PURPOSE=DNS_REQUEST".split())
     self.assertEqual(stream.target_host, "meejah.ca")
Exemple #35
0
 def test_str(self):
     stream = Stream(self)
     stream.update("316 NEW 0 www.yahoo.com:80 SOURCE_ADDR=127.0.0.1:55877 PURPOSE=USER".split())
     stream.circuit = FakeCircuit(1)
     str(stream)
Exemple #36
0
 def test_ipv6_remap(self):
     stream = Stream(self)
     stream.update("1234 REMAP 0 ::1:80 SOURCE_ADDR=127.0.0.1:57349 PURPOSE=USER".split())
     self.assertEqual(stream.target_addr, maybe_ip_addr('::1'))
Exemple #37
0
 def test_ipv6_remap(self):
     stream = Stream(self)
     stream.update(
         "1234 REMAP 0 ::1:80 SOURCE_ADDR=127.0.0.1:57349 PURPOSE=USER".
         split())
     self.assertEqual(stream.target_addr, maybe_ip_addr('::1'))
Exemple #38
0
 def test_magic_circuit_detach(self):
     stream = Stream(self)
     stream.circuit = FakeCircuit(1)
     stream.circuit.streams = [stream]
     stream.update("1 SENTCONNECT 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH".split())
     self.assertTrue(stream.circuit is None)
Exemple #39
0
 def test_args_in_ctor(self):
     stream = Stream(self)
     stream.update("1 NEW 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH".split())
     self.assertEqual(stream.id, 1)
     self.assertEqual(stream.state, 'NEW')
Exemple #40
0
 def test_parse_resolve(self):
     stream = Stream(self)
     stream.update("1604 NEWRESOLVE 0 www.google.ca:0 PURPOSE=DNS_REQUEST".split())
     self.assertEqual(stream.state, 'NEWRESOLVE')
Exemple #41
0
 def test_parse_resolve(self):
     stream = Stream(self)
     stream.update(
         "1604 NEWRESOLVE 0 www.google.ca:0 PURPOSE=DNS_REQUEST".split())
     self.assertEqual(stream.state, 'NEWRESOLVE')
Exemple #42
0
 def test_stream_addrmap_remap(self):
     addrmap = AddrMap()
     addrmap.update('meejah.ca 1.2.3.4 never')
     stream = Stream(self, addrmap)
     stream.update("1604 NEW 0 1.2.3.4:0 PURPOSE=DNS_REQUEST".split())
     self.assertEqual(stream.target_host, "meejah.ca")
Exemple #43
0
    def test_listener_new(self):
        listener = Listener([('new', {'target_port': 9001})])

        stream = Stream(self)
        stream.listen(listener)
        stream.update("1 NEW 0 94.23.164.42.$43ED8310EB968746970896E8835C2F1991E50B69.exit:9001 SOURCE_ADDR=(Tor_internal):0 PURPOSE=DIR_FETCH".split())