Skip to content
This repository was archived by the owner on Mar 2, 2022. It is now read-only.

Commit d62dca2

Browse files
committed
Use txtorcon's new web_agent utilities.
This replaces our OnionRoutedAgent and txsocksx
1 parent 97f93b6 commit d62dca2

1 file changed

Lines changed: 20 additions & 13 deletions

File tree

bwscanner/measurement.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
from twisted.internet import defer
77

88
from bwscanner.logger import log
9-
from bwscanner.attacher import SOCKSClientStreamAttacher
109
from bwscanner.circuit import TwoHop
11-
from bwscanner.fetcher import OnionRoutedAgent, hashingReadBody
10+
from bwscanner.fetcher import OnionRoutedAgent
11+
from bwscanner.fetcher import get_tor_socks_endpoint, hashingReadBody
1212
from bwscanner.writer import ResultSink
1313

1414
# defer.setDebugging(True)
@@ -31,6 +31,7 @@ def __init__(self, state, clock, measurement_dir, **kwargs):
3131
this_partition: which partition of circuit we will process
3232
"""
3333
self.state = state
34+
self._socks = None
3435
self.clock = clock
3536
self.measurement_dir = measurement_dir
3637
self.partitions = kwargs.get('partitions', 1)
@@ -55,9 +56,6 @@ def __init__(self, state, clock, measurement_dir, **kwargs):
5556

5657
self.result_sink = ResultSink(self.measurement_dir, chunk_size=10)
5758

58-
# Add a stream attacher
59-
self.state.set_attacher(SOCKSClientStreamAttacher(self.state), clock)
60-
6159
def now(self):
6260
return time.time()
6361

@@ -162,14 +160,16 @@ def gotResult(result):
162160
return result
163161
deferred.addBoth(gotResult)
164162

165-
agent = OnionRoutedAgent(self.clock, path=path, state=self.state)
166-
request = agent.request("GET", url)
167-
request.addCallback(hashingReadBody) # returns a readBody Deferred
168-
timeoutDeferred(request, self.request_timeout)
169-
request.addCallbacks(get_circuit_bw)
170-
request.addErrback(circ_failure)
171-
request.addCallback(self.result_sink.send)
172-
return request
163+
d = self.state.build_circuit(path, False)
164+
d.addCallback(lambda c: c.when_built())
165+
d.addCallback(lambda c: c.web_agent(self.clock, self.socks))
166+
d.addCallback(lambda a: a.request("GET", url))
167+
d.addCallback(hashingReadBody)
168+
timeoutDeferred(d, self.request_timeout)
169+
d.addCallbacks(get_circuit_bw)
170+
d.addErrback(circ_failure)
171+
d.addCallback(self.result_sink.send)
172+
return d
173173

174174
@defer.inlineCallbacks
175175
def get_r_ns_bw(self, router):
@@ -197,3 +197,10 @@ def get_r_desc_bw(self, router):
197197
defer.returnValue((server_descriptor.average_bandwidth,
198198
server_descriptor.burst_bandwidth,
199199
server_descriptor.observed_bandwidth))
200+
201+
@property
202+
@defer.inlineCallbacks
203+
def socks(self):
204+
if self._socks is None:
205+
self._socks = yield get_tor_socks_endpoint(self.state)
206+
defer.returnValue(self._socks)

0 commit comments

Comments
 (0)