# By default, Authorities are not configured as exits
Authority = Node(tag="a", authority=1, relay=1, torrc="authority.tmpl")
ExitRelay = Node(tag="r", relay=1, exit=1, torrc="relay.tmpl")

BridgeAuthority = Node(tag="ba", authority=1, bridgeauthority=1,
                       relay=1, torrc="bridgeauthority.tmpl")

Bridge = Node(tag="br", bridge=1, relay=1, torrc="bridge.tmpl",
              launch_phase=2)

BridgeClient = Node(tag="bc", client=1, bridgeclient=1,
                    torrc="bridgeclient.tmpl",
                    launch_phase=3)

# Since only 25% of relays get the guard flag,
# TestingDirAuthVoteGuard * may need to be used in small networks
# (However, bridge clients use bridges instead of guards, so this
# is only an issue for the exit bootstrapping)

# The minimum number of authorities/relays/exits is 3, the minimum path length
# But relays and authorities need 1 extra node, because they won't make a path
# that includes themselves.
# (Bridges don't count, because they're not in the consensus.)
# Due to microdec download issues, tor 0.3.5 needs at least 5
# authorities/relays/exits in the consensus.
NODES = Authority.getN(3) + BridgeAuthority.getN(1) + ExitRelay.getN(1) + \
        Bridge.getN(1) + BridgeClient.getN(1)

ConfigureNodes(NODES)
