Require("IPV6")
import os
# By default, Authorities are not configured as exits
Authority6 = Node(tag="a", authority=1, relay=1,
                  ipv6_addr=os.environ.get('CHUTNEY_LISTEN_ADDRESS_V6',
                                           '[::1]'),
                  torrc="authority-orport-v6.tmpl")
NonExitRelay6 = Node(tag="r", relay=1,
                     ipv6_addr=os.environ.get('CHUTNEY_LISTEN_ADDRESS_V6',
                                              '[::1]'),
                     torrc="relay-orport-v6-non-exit.tmpl")
Client6 = Node(tag="c", client=1, torrc="client-only-v6-md.tmpl")
HS = Node(tag="h", hs=1, torrc="hs.tmpl")

# Since only 25% of relays get the guard flag,
# TestingDirAuthVoteGuard * may need to be used in small networks

# 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 = Authority6.getN(2) + NonExitRelay6.getN(3) + \
        Client6.getN(1) + HS.getN(1)

ConfigureNodes(NODES)