Skip to content

v0.12.0

Compare
Choose a tag to compare
@bassosimone bassosimone released this 29 May 14:45
· 480 commits to master since this release
v0.12.0

Improvements

  • We now publish iOS frameworks at BinTray

  • We now include the assets version as an annotation called assets_version

  • We now choose a probe service and stick to it for the lifetime of the session, rather than using separate bouncer and collector (this change is possible because we migrated to the new probe services model where a single host provides to probes most OONI APIs)

  • Implement netx/selfcensor package that allow you to trigger some forms of censorship and see how the code reacts. You can trigger self censorship using miniooni's --self-censor-spec cmdline flag.

  • experiment/urlgetter: allow the programmer to choose a specific TLS version

  • netx/archival: annotate all DNS resolutions with ASN and org name

  • experiment/urlgetter: accept and forward all cookies

  • Specify and use a new data format that describes measurements using a tunnel (e.g. psiphon)

  • probeservices: add support for cloud fronted probe services

  • session: by default use Cloudflare's DNS over HTTPS resolver and fallback to the system resolver if the former resolver does not work, thus working around simple system resolver censorship

  • session: add support for saving logs of tor tunnel to a well know file inside the temporary directory

  • session: add support for contacting probe-services using an already running tor instance

  • netx/dialer/proxy.go: allow to specify extemporary proxy via a context

  • netx/dialer/tls.go: rewrite TLS handshake so we don't have the confusing "usage of closed network connection" when there is a timeout during the TLS handshake

session.go: significantly change initialisation: now it's not possible to modify most aspects of the session once the session has been initialised. Specifically: AddAvailableHTTPBouncer and AddAvailableHTTPCollector have been removed; SetIncludeProbe{ASN,CC,IP} have been removed. You should now properly configure SessionConfig before creating a Session instance.

API Changes

  • Packages bouncer and collector have been merged into package probeservices

  • netx/httpclient: factor here common DNSClient code from experiment/urlgetter, which allows to create a top-level DNS client object, useful for example also to the Session

  • geoiplookup/mmdblookup: rename LookupASN => ASN and LookupCC => CC

  • libminiooni: fail if --bouncer-base-url or --collector-base-url are used and nudge users towards using the --probe-services-url flag instead

Updates

  • Update all dependencies

  • Update HTTP header used to perform measurements

  • Update assets (we're now using a asn.mmdb generated by us)

Bug fixes

  • dash, ndt7: include missing extensions dictionary

  • ndt7: make sure we don't depend on any m-lab code, thus reducing dependencies

  • libminiooni: make sure experiments with optional input run as intended when no input is provided

  • libooniffi: make sure tests don't write outside of topdir

  • model/model.go: now use 127.0.0.2 if the resolver IP is unknown, thus allowing bulk replacement of unknown probe IP and unknown resolver IP more easily, because they don't conflict

  • netx/archival: fix very-annoying bug where DNS information was not written in case of error