mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-06-03 10:50:20 +00:00
tor: Support obfs4 for upstream bridges
Refactor augeas lens for readability.
This commit is contained in:
parent
4eaff44b49
commit
31f95cfb12
@ -181,6 +181,9 @@ def subcommand_set_upstream_bridges(arguments):
|
||||
if bridge.strip():
|
||||
aug.set(TOR_CONFIG + '/Bridge[last() + 1]', bridge.strip())
|
||||
|
||||
aug.set(TOR_CONFIG + '/ClientTransportPlugin',
|
||||
'obfs4 exec /usr/bin/obfs4proxy')
|
||||
|
||||
aug.save()
|
||||
|
||||
|
||||
|
||||
@ -9,3 +9,4 @@ test Tor.lns get "ExitPolicy reject *:*\n" = { "ExitPolicy" = "reject *:*" }
|
||||
test Tor.lns get "VirtualAddrNetworkIPv4 10.192.0.0/10\n" = { "VirtualAddrNetworkIPv4" = "10.192.0.0/10" }
|
||||
test Tor.lns get "ServerTransportPlugin obfs3,obfs4 exec /usr/bin/obfs4proxy\n" = { "ServerTransportPlugin" = "obfs3,obfs4 exec /usr/bin/obfs4proxy" }
|
||||
test Tor.lns get "HiddenServiceDir /var/lib/tor-instances/plinth/hidden_service/\n" = { "HiddenServiceDir" = "/var/lib/tor-instances/plinth/hidden_service/" }
|
||||
test Tor.lns get "Bridge obfs4 10.1.1.1:30000 0123456789ABCDEF0123456789ABCDEF01234567 cert=A/b+1 iat-mode=0\n" = { "Bridge" = "obfs4 10.1.1.1:30000 0123456789ABCDEF0123456789ABCDEF01234567 cert=A/b+1 iat-mode=0" }
|
||||
|
||||
@ -22,13 +22,17 @@ autoload xfm
|
||||
let eol = Util.eol
|
||||
|
||||
let ws = /[ \t]/
|
||||
let kc = /[A-Za-z0-9_.,:*]/
|
||||
let vc = /[-A-Za-z0-9_.,:*\/ ]/
|
||||
let keyname = kc+
|
||||
let val = /[[\/]*/ . kc . (vc* . /[]]*/ . vc* . kc . /[\/]*/)?
|
||||
let k = /[A-Za-z0-9_.,:*]+/
|
||||
let val = /[A-Za-z0-9_.,:*+-=\/]+/
|
||||
|
||||
let entry = [ key keyname . del ws+ " " . store val . eol ]
|
||||
let bracket_val = "[" . val* . "]" . val*
|
||||
let multi_val = val . (" " . val)+
|
||||
|
||||
let simple_entry = [ key k . del ws+ " " . store val . eol ]
|
||||
let bracket_entry = [ key k . del ws+ " " . store bracket_val . eol ]
|
||||
let multi_entry = [ key k . del ws+ " " . store multi_val . eol ]
|
||||
|
||||
let entry = simple_entry|bracket_entry|multi_entry
|
||||
let lns = (entry|Util.comment|Util.empty_dos)*
|
||||
|
||||
let filter = (incl "/etc/tor/torrc")
|
||||
|
||||
@ -49,7 +49,8 @@ def bridges_validator(bridges):
|
||||
parts = bridge.split()
|
||||
|
||||
# IP:ORPort is required, transport and fingerprint are optional.
|
||||
if len(parts) < 1 or len(parts) > 3:
|
||||
# Transports may have additional options after the fingerprint.
|
||||
if len(parts) < 1:
|
||||
raise ValidationError(
|
||||
BRIDGE_VALIDATION_ERROR_MESSAGE, code='invalid')
|
||||
|
||||
@ -94,7 +95,8 @@ class TorForm(forms.Form): # pylint: disable=W0232
|
||||
help_text=_('If you need to use a bridge to connect to Tor network, '
|
||||
'you can get some bridges from '
|
||||
'https://bridges.torproject.org/ and paste the bridge '
|
||||
'information here.'),
|
||||
'information here. Note: If you need to use a pluggable '
|
||||
'transport, only obfs4 is supported currently.'),
|
||||
validators=[bridges_validator])
|
||||
relay_enabled = forms.BooleanField(
|
||||
label=_('Enable Tor relay'),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user