Title: [Bug/Patch] anon-connection-wizard: Allow WebTunnel bridge strings in validation
Hey team,
Running into a UX blocker on Whonix 17.x where anon-connection-wizard rejects perfectly valid WebTunnel bridge strings during manual configuration.
Context: I’m currently dealing with an ISP that uses active DPI to fingerprint and drop obfs4 handshakes, so WebTunnel is essentially my only viable transport for bootstrapping. If I manually edit /etc/tor/torrc, the WebTunnel connection works flawlessly and stays stable. However, the GUI wizard rejects the string outright.
The Issue: Looking at the source, the validation logic in anon-connection-wizard.py only whitelists obfs4 and meek_lite. It chokes as soon as it sees the webtunnel prefix (and likely the url= parameter).
Here’s a quick diff to add WebTunnel to the allowed prefixes. I’ve tested this locally and it allows the wizard to parse the string and bootstrap correctly.
Diff
--- a/usr/libexec/python3-whonix/anon-connection-wizard.py
+++ b/usr/libexec/python3-whonix/anon-connection-wizard.py
@@ -xxx,x +xxx,x @@
- if not bridge_string.startswith(('obfs4 ', 'meek_lite ')):
+ if not bridge_string.startswith(('obfs4 ', 'meek_lite ', 'webtunnel ')):
Repro Steps:
-
Open ACW → Configure → “Provide a bridge I know.”
-
Paste a standard WebTunnel string:
webtunnel 192.0.2.1:443 <FINGERPRINT> url=https://example.com/path -
Hit Next → Fails with the generic “Invalid Bridge String” dialog.
Let me know if you want me to open a formal Merge Request for this over on the GitLab instance, or if you prefer to just cherry-pick the logic straight from here.