From 347df2b3d9168bf07b4c937c2c6b54175a268f3b Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 7 Mar 2014 19:08:14 +0000 Subject: hs-intro-fail initial test --- networks/hs-intro-fail | 168 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 networks/hs-intro-fail diff --git a/networks/hs-intro-fail b/networks/hs-intro-fail new file mode 100644 index 0000000..222136c --- /dev/null +++ b/networks/hs-intro-fail @@ -0,0 +1,168 @@ +Authority = Node.create(3, { + "tag": "a", + "authority": 1, + "relay": 1, + "torrc": "authority.tmpl" +}) + +Relay = Node.create(10, { + "tag": "r", + "relay": 1, + "torrc": "intro.tmpl" +}) + +Client = Node.create(4, { + "tag": "c", + "torrc": "client.tmpl" +}) + +initialNodes = Authority + Relay + Client + +HiddenService = Node( + tag="h", + hiddenservice=1, + torrc="hidden-service.tmpl", + hiddenservicetarget="127.0.0.1:8081" +) + +initialNodes.append(HiddenService) + +DelayedHiddenService = Node( + tag="h", + hiddenservice=1, + torrc="hidden-service.tmpl", + hiddenservicetarget="127.0.0.1:8082" +) + +#nodes = {} + +#for node in initialNodes + [ DelayedHiddenService ]: +# nodes[node._env.nodenum] = node + +# Introduction Point Tracking + +nodeIntroCircuits = {} + +def trackIntroductionPoints(node): + nodenum = node._env["nodenum"] + nodeIntroCircuits[nodenum] = {} + + def listener(logevent): + if not (logevent.message.startswith("rend_services_introduce") or + logevent.message.startswith("rend_service_launch_establish_intro") or + logevent.message.startswith("rend_service_intro_has_opened")): + return + + #print(logevent.message) + + """prefix = "rend_service_launch_establish_intro(): Launched circuit " + if logevent.message.startswith(prefix): + circuit = logevent.message[len(prefix):].split(" ")[0] + introid = logevent.message[len(prefix):].split(" ")[4] + + nodeCircuits[nodenum][circuit] = introid + return + + prefix = "rend_service_launch_establish_intro(): The intro circuit " + if logevent.message.startswith(prefix): + circuit = logevent.message[len(prefix):].split(" ")[0] + introid = logevent.message[len(prefix):].split(" ")[6] + + nodeCircuits[nodenum][circuit] = introid + return""" + + prefix = "rend_service_intro_has_opened(): Established circuit " + if logevent.message.startswith(prefix): + circuit = logevent.message[len(prefix):].split(" ")[0] + introid = logevent.message[len(prefix):].split(" ")[1] + + nodeIntroCircuits[nodenum][circuit] = introid + return + + node.getStemController().add_event_listener(listener, EventType.INFO) + +# Use twisted to create web servers in this script +class Site(resource.Resource): + isLeaf = True + numberRequests = 0 + + def __init__(self, siteNum): + self.siteNum = siteNum + + def render_GET(self, request): + self.numberRequests += 1 + request.setHeader("content-type", "text/plain") + return str(self.siteNum) + +def start_test(): + print("Starting test") + + port8081 = reactor.listenTCP(8081, server.Site(Site(1))) + port8082 = reactor.listenTCP(8082, server.Site(Site(2))) + + def cleanup(): + port8081.stopListening() + print("stopped 8081") + port8082.stopListening() + print("stopped 8082") + reactor.stop() + print("stopped the reactor") + + def test(): + print("connecting to clients") + responses = {"1": 0, "2": 0} + + for c in Client: + result = c.query("http://2oiifbe3wne4iaqb.onion/"); + + responses[result] += 1 + + print(result) + + print(responses) + + time.sleep(5) + + print("disabling an introduction point") + + # Need to be able to tell which introduction points are being used + + cleanup() + + thread.start_new_thread(test, ()) + + print("running reactor") + reactor.run(installSignalHandlers=0) + +def start(): + print("Starting hidden service test") + + if not all([ n.getController().start() for n in initialNodes ]): + return False + else: + print("All initial nodes running") + + trackIntroductionPoints(HiddenService) + + def start_listener(logevent): + # Probably after what needs waiting for + if "Successfully uploaded v2 rend descriptors" in logevent.message: + print("Node Circuits") + print(nodeIntroCircuits) + + start_test() + + def log_listener(logevent): + if "Successfully uploaded v2 rend descriptors" in logevent.message: + print("log message: " + logevent.message) + + print("Node Circuits") + print(nodeIntroCircuits) + + DelayedHiddenService.getController().start() + + DelayedHiddenService.getStemController().add_event_listener(start_listener, EventType.INFO) + + trackIntroductionPoints(DelayedHiddenService) + + HiddenService.getStemController().add_event_listener(log_listener, EventType.INFO) -- cgit v1.2.3