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 usingminiooni
'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 oftor
tunnel to a well know file inside the temporary directory -
session
: add support for contacting probe-services using an already runningtor
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
andcollector
have been merged into packageprobeservices
-
netx/httpclient
: factor here commonDNSClient
code fromexperiment/urlgetter
, which allows to create a top-level DNS client object, useful for example also to theSession
-
geoiplookup/mmdblookup
: renameLookupASN
=>ASN
andLookupCC
=>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 use127.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