123456789101112131415161718192021222324252627282930313233343536373839 |
- # 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")
- Client = Node(tag="c", client=1, torrc="client.tmpl")
- BridgeAuthority = Node(tag="ba", authority=1, bridgeauthority=1,
- relay=1, torrc="bridgeauthority.tmpl")
- Bridge = Node(tag="br", bridge=1, pt_bridge=1, relay=1, pt_transport="obfs4",
- torrc="bridge-obfs4.tmpl")
- def obfs4_extra_args(env):
- import os, re
- # find the obfs4_bridgeline file.
- location = os.path.join(env['dir'],
- "pt_state",
- "obfs4_bridgeline.txt")
- if not os.path.exists(location):
- return ""
- # read the file and find the actual line
- with open(location, 'r') as f:
- for line in f:
- if line.startswith("#"):
- continue
- if line.isspace():
- continue
- m = re.match(r'(.*<FINGERPRINT>) (cert.*)', line)
- if m:
- return m.group(2)
- return ""
- Bridge.set_runtime("pt_extra", obfs4_extra_args)
- BridgeClient = Node(tag="bc", client=1, bridgeclient=1,
- torrc="bridgeclient-obfs4.tmpl", config_phase=2, launch_phase=2)
- NODES = Authority.getN(3) + BridgeAuthority.getN(1) + ExitRelay.getN(4) + \
- Bridge.getN(1) + Client.getN(1) + BridgeClient.getN(1)
- ConfigureNodes(NODES)
|