aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <cb15g11@soton.ac.uk>2014-03-07 19:08:14 +0000
committerChristopher Baines <cb15g11@soton.ac.uk>2014-03-07 19:08:14 +0000
commit347df2b3d9168bf07b4c937c2c6b54175a268f3b (patch)
treed3e4132cee30ae6fb688f7014f1db7f4570a69d6
parentce9b5b34c98922edcda748ac02850609a058d923 (diff)
downloadchutney-347df2b3d9168bf07b4c937c2c6b54175a268f3b.tar
chutney-347df2b3d9168bf07b4c937c2c6b54175a268f3b.tar.gz
hs-intro-fail initial test
-rw-r--r--networks/hs-intro-fail168
1 files changed, 168 insertions, 0 deletions
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)