# Check that a single onion service makes 3-hop connections to # unreachable intro points and rend points, by forcing it to connect # through only one guard # It should act exactly like a hidden service, except that it might make # direct connections to that one guard if that guard is also intro or rend # By default, Authorities are not configured as exits Authority = Node(tag="a", authority=1, relay=1, torrc="authority.tmpl") NonExitRelay = Node(tag="r", relay=1, torrc="relay-non-exit.tmpl") Client = Node(tag="c", client=1, torrc="client.tmpl") SingleOnionIndirect = Node(tag="h", hs=1, torrc="single-onion-indirect.tmpl") # A hidden service needs 5 authorities/relays to ensure it can build HS # connections: # a minimum path length of 3, plus the client-nominated rendezvous point, # plus a seperate introduction point NODES = Authority.getN(2) + NonExitRelay.getN(3) + \ Client.getN(1) + SingleOnionIndirect.getN(1) ConfigureNodes(NODES)