Opened 5 years ago

Closed 5 years ago

#13597 closed task (implemented)

Add obfs4 support to ooniprobe bridge reachability

Reported by: hellais Owned by: hellais
Priority: Medium Milestone:
Component: Archived/Ooni Version:
Severity: Keywords: bridge-reachability, pt
Cc: yawning, dawuud, asn, isis, joelanders@…, dcf@… Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

This involves taking what dawuud wrote for installing obfs4: https://github.com/david415/ansible-tor/commit/f897581daa79389ddcb28c7dae601473e85e8226 and adding it to the ooniprobe ansible:https://github.com/hellais/ansible-ooniprobe/blob/master/tasks/install_pluggable_transports.yml.

Some changes are also needed in ooniprobe, here are some notes:

03:14 < hellais> https://github.com/TheTorProject/ooni-probe/blob/master/ooni/nettests/blocking/bridge_reachability.py#L150
03:14 < hellais> this line would be different, right?
03:15 < Yawning> ever so slightly
03:16 < Yawning> "%s exec %s" % (transport_name, self.obfs4proxy_bin)
03:16 < Yawning> if you don't care about logging
03:16 < hellais> is there a way to enable logging?
03:17 < Yawning> yeah but the log output location is hardcoded to a file in the DataDir
03:17 < hellais> we recently spotted a bug in scramblesuit thanks to logging
03:17 < Yawning> -enableLogging
03:17 < Yawning> (-- works too)
03:17 < hellais> what is the filename it writes to?
03:17 < Yawning> there's a man page and -h will dump usage
03:17 < Yawning> obfs4proxy.log
03:18 < Yawning> -logLevel=INFO will crank up the verbosity

Child Tickets

Change History (15)

comment:1 Changed 5 years ago by arma

Component: - Select a componentOoni
Owner: set to hellais

comment:2 Changed 5 years ago by isis

Cc: isis added
Keywords: bridge-reachability pt added

comment:3 Changed 5 years ago by joelanders

Cc: joelanders@… added

ooniprobe change looks something like this: https://github.com/joelanders/ooni-probe/commits/joe/13597

comment:4 Changed 5 years ago by joelanders

ansible-ooniprobe change, maybe: https://github.com/joelanders/ansible-ooniprobe/commits/master

Some notes:

  • ansible-tor didn't seem to work against wheezy, some package conflict I didn't record... Jessie works.
  • I had to give a couple directories +x mode to fix some permissions errors I was getting.
  • ansible-ooniprobe might also need apt-get install python-dev python-pip libssl-dev
  • backports_url and backports_distribution_release seem unused in ansible-{tor,ooniprobe}
  • I made apt pull obfs4proxy out of jessie in a slightly different way than it was done in ansible-tor, but I'm not attached to it :)

comment:5 Changed 5 years ago by joelanders

Status: newneeds_review

comment:6 Changed 5 years ago by hellais

This is awesome!

Thanks for getting to this. I will start reviewing it now.

comment:7 Changed 5 years ago by hellais

Status: needs_reviewneeds_revision

It all looks good, but there are a few things that need to be changed in this commit: https://github.com/joelanders/ooni-probe/commit/726a65fc42eaf22a88cd0eaf8ac844469f1887df.

In particular we should keep testing obfs2/obfs3 using pyobfsproxy and not require obfs4proxy.

This is both to avoid breaking clients that have not installed obfs4proxy and previously were able to run the bridge reachability test and to make sure that we are comparing results against the same baseline.

comment:8 Changed 5 years ago by joelanders

Cool, fixes at that same branch (I can rebase later if you want).

comment:9 Changed 5 years ago by joelanders

Status: needs_revisionneeds_review

comment:10 Changed 5 years ago by joelanders

Status: needs_reviewneeds_revision

comment:11 Changed 5 years ago by joelanders

Status: needs_revisionneeds_review

Cleaned up some of the stuff around creating the various ClientTransportPlugin lines.
Also grabbing the obfs4proxy log.
https://github.com/joelanders/ooni-probe/commits/joe/13597

comment:12 Changed 5 years ago by hellais

comment:13 Changed 5 years ago by dcf

Cc: dcf@… added

comment:14 Changed 5 years ago by hellais

This has been merged into master.

comment:15 Changed 5 years ago by hellais

Resolution: implemented
Status: needs_reviewclosed
Note: See TracTickets for help on using tickets.