Releases: ooni/probe-cli
OONI Probe CLI v3.24.0
This is a stable release. As usual, this release includes both an OONI Probe CLI release and the corresponding release of the measurement engine, which is hosted by the same repository.
What's Changed
- chore: update internal version to v3.24.0-alpha by @DecFox in #1650
- fix(dnscheck): reinstate richer input loader by @DecFox in #1653
- Fix missing enabledByDefault in echcheck by @hellais in #1655
- Switch to using cloudflare-ech.com as the target for the ech test by @hellais in #1658
- refactor(oonimkall): expose the session close call by @DecFox in #1657
- Simplify the dnscheck list by @hellais in #1656
- feat: add fallback domain names for openvpn experiment by @ainghazal in #1654
- chore: upgrade psiphon to latest staging-client commit by @DecFox in #1659
- chore: upgrade GOVERSION to go1.22.2 by @DecFox in #1661
- chore: upgrade android NDKVERSION by @DecFox in #1662
- chore: upgrade dependencies by @DecFox in #1663
- chore: upgrade C dependencies by @DecFox in #1664
- fix: reset go version to 1.21 by @DecFox in #1666
- fix: update cdeps version for mobile tests by @DecFox in #1668
- chore: update assets and definitions by @DecFox in #1665
- fix: dnscheck default input test by @DecFox in #1669
Full Changelog: v3.23.0...v3.24.0
OONI Probe CLI v3.24.0-alpha
This is an alpha release for creating a branching point for the release/3.24 branch. As usual, this release includes both an OONI Probe CLI release and the corresponding release of the measurement engine, which is hosted by the same repository.
What's Changed
- chore: update internal version to v3.24.0-alpha by @DecFox in #1650
- fix(dnscheck): reinstate richer input loader by @DecFox in #1653
- Fix missing enabledByDefault in echcheck by @hellais in #1655
- Switch to using cloudflare-ech.com as the target for the ech test by @hellais in #1658
- refactor(oonimkall): expose the session close call by @DecFox in #1657
- Simplify the dnscheck list by @hellais in #1656
- feat: add fallback domain names for openvpn experiment by @ainghazal in #1654
- chore: upgrade psiphon to latest staging-client commit by @DecFox in #1659
- chore: upgrade GOVERSION to go1.22.2 by @DecFox in #1661
- chore: upgrade android NDKVERSION by @DecFox in #1662
- chore: upgrade dependencies by @DecFox in #1663
- chore: upgrade C dependencies by @DecFox in #1664
- fix: reset go version to 1.21 by @DecFox in #1666
- fix: update cdeps version for mobile tests by @DecFox in #1668
- chore: update assets and definitions by @DecFox in #1665
- fix: dnscheck default input test by @DecFox in #1669
Full Changelog: v3.23.0-alpha...v3.24.0-alpha
v3.23.0
This is a stable release. As usual, this release includes both an OONI Probe CLI release and the corresponding release of the measurement engine, which is hosted by the same repository.
What's Changed
- chore: we're now hacking on v3.23.0-alpha by @bassosimone in #1607
- fix(cli/rm/rm.go): using panic is not user friendly by @bassosimone in #1608
- refactor: MeasurementTarget -> MeasurementInput by @bassosimone in #1609
- cleanup(oonirun): remove unused testing-hook argument by @bassosimone in #1610
- CODEOWNERS: add @DecFox by @bassosimone in #1611
- refactor(experiment): make report goroutine safe by @bassosimone in #1612
- cleanup: remove asynchronous experiments by @bassosimone in #1613
- fix(registry): instantiate factory for each invocation by @bassosimone in #1614
- feat: add the openvpn experiment by @ainghazal in #1585
- feat: introduce richer input by @bassosimone in #1615
- refactor: move engine.InputLoader to targetloading by @bassosimone in #1616
- refactor: construct TargetLoader using ExperimentBuilder by @bassosimone in #1617
- feat(dnscheck): implement richer input by @bassosimone in #1618
- cleanup(pkg/oonimkall): simplify test code by @bassosimone in #1619
- chore(richer input): add living design document by @bassosimone in #1621
- fix(dnscheck): gracefully cast to Target by @bassosimone in #1623
- chore(oonimkall): log the events when testing by @bassosimone in #1624
- doc: explain the throttling methodology by @bassosimone in #1546
- refactor(probeservices): use better naming by @bassosimone in #1628
- feat(openvpn): implement richer input by @ainghazal in #1625
- feat(oonirun): allow true JSON richer input by @bassosimone in #1629
- feat(miniooni): add authentication to oonirun by @ainghazal in #1627
- refactor(oonimkall): fakeSuccessful{Run => Deps} by @bassosimone in #1631
- fix: correctly set options from richer input by @bassosimone in #1630
- fix(oonimkall): use richer-input-aware target loader by @bassosimone in #1620
- dd-008-richer-input: mention @DecFox reviews by @bassosimone in #1633
- feat: add engine docs to docs.ooni.org by @DecFox in #1634
- Start working on fixing image paths by @hellais in #1635
- CODEOWNERS: remove @bassosimone by @bassosimone in #1636
- feat(openvpn): add a top-level test key with bootstrap time and handshake failure by @ainghazal in #1632
- feat: enable openvpn in the experimental group by @ainghazal in #1637
- refactor: remove dnscheck loader by @DecFox in #1640
- fix(probeservices): replace ams-pg-test with backend-hel by @DecFox in #1641
- hardcode openvpn endpoints under ooni infra by @ainghazal in #1638
- chore: updated psiphon dependency to latest commit by @DecFox in #1642
- chore: bump NDKVersion and android platforms by @DecFox in #1643
- chore: update C dependencies by @DecFox in #1644
- chore: update go version by @DecFox in #1645
- chore: update dependencies by @DecFox in #1646
- chore: update assets and definitions by @DecFox in #1647
- chore: address gosec warnings by @DecFox in #1648
Full Changelog: v3.22.0...v3.23.0
OONI Probe CLI v3.23.0-alpha
This is an alpha release for creating a branching point for the release/3.23
branch. As usual, this release includes both an OONI Probe CLI release and the corresponding release of the measurement engine, which is hosted by the same repository.
What's Changed
- chore: we're now hacking on v3.23.0-alpha by @bassosimone in #1607
- fix(cli/rm/rm.go): using panic is not user friendly by @bassosimone in #1608
- refactor: MeasurementTarget -> MeasurementInput by @bassosimone in #1609
- cleanup(oonirun): remove unused testing-hook argument by @bassosimone in #1610
- CODEOWNERS: add @DecFox by @bassosimone in #1611
- refactor(experiment): make report goroutine safe by @bassosimone in #1612
- cleanup: remove asynchronous experiments by @bassosimone in #1613
- fix(registry): instantiate factory for each invocation by @bassosimone in #1614
- feat: add the openvpn experiment by @ainghazal in #1585
- feat: introduce richer input by @bassosimone in #1615
- refactor: move engine.InputLoader to targetloading by @bassosimone in #1616
- refactor: construct TargetLoader using ExperimentBuilder by @bassosimone in #1617
- feat(dnscheck): implement richer input by @bassosimone in #1618
- cleanup(pkg/oonimkall): simplify test code by @bassosimone in #1619
- chore(richer input): add living design document by @bassosimone in #1621
- fix(dnscheck): gracefully cast to Target by @bassosimone in #1623
- chore(oonimkall): log the events when testing by @bassosimone in #1624
- doc: explain the throttling methodology by @bassosimone in #1546
- refactor(probeservices): use better naming by @bassosimone in #1628
- feat(openvpn): implement richer input by @ainghazal in #1625
- feat(oonirun): allow true JSON richer input by @bassosimone in #1629
- feat(miniooni): add authentication to oonirun by @ainghazal in #1627
- refactor(oonimkall): fakeSuccessful{Run => Deps} by @bassosimone in #1631
- fix: correctly set options from richer input by @bassosimone in #1630
- fix(oonimkall): use richer-input-aware target loader by @bassosimone in #1620
- dd-008-richer-input: mention @DecFox reviews by @bassosimone in #1633
- feat: add engine docs to docs.ooni.org by @DecFox in #1634
- Start working on fixing image paths by @hellais in #1635
- CODEOWNERS: remove @bassosimone by @bassosimone in #1636
- feat(openvpn): add a top-level test key with bootstrap time and handshake failure by @ainghazal in #1632
- feat: enable openvpn in the experimental group by @ainghazal in #1637
- refactor: remove dnscheck loader by @DecFox in #1640
- fix(probeservices): replace ams-pg-test with backend-hel by @DecFox in #1641
- hardcode openvpn endpoints under ooni infra by @ainghazal in #1638
- chore: updated psiphon dependency to latest commit by @DecFox in #1642
- chore: bump NDKVersion and android platforms by @DecFox in #1643
- chore: update C dependencies by @DecFox in #1644
- chore: update go version by @DecFox in #1645
- chore: update dependencies by @DecFox in #1646
- chore: update assets and definitions by @DecFox in #1647
- chore: address gosec warnings by @DecFox in #1648
Full Changelog: v3.22.0-alpha...v3.23.0-alpha
OONI Probe CLI v3.22.0
This is a stable release. As usual, this release includes both an OONI Probe CLI release and the corresponding release of the measurement engine, which is hosted by the same repository.
Here's a thematic summary of what changed since v3.21.0:
- ✨ Preparing Web Connectivity LTE for use in production
- 🐛 Prioritize DNS results when communicating with backends
- 🚧 Refactor and document communication with the OONI backend
- 📖 Documenting the release process
- 🚧 Minor changes & bug fixes
More in detail, here's what has changed:
✨ Preparing Web Connectivity LTE for use in production
We worked towards closing all the open Web Connectivity LTE issues, such that we can finally be well placed to run an A/B testing between the v0.4 and LTE using this version of the OONI Probe Engine.
- fix(webconnectivitylte): handle too many redirects by @bassosimone in #1550
🐛 Prioritize DNS results when communicating with backends
We documented the strategy to communicate with backends, including the OONI backend, and we discussed the design as part of the #1552. During such a review, it was requested to modify the policy with which we communicate with the backends, so that the DNS results have higher priority. The main concern of this change request was to avoid long recovery periods if the currently deployed bridge becomes unavailable as well as to tilt the overall design such that uncensored OONI Probe users communicate with the backends in the simplest possible way.
- feat(enginenetx): test
bridgesPolicy
with DNS success by @bassosimone in #1554 - feat(enginenetx): add algorithms to filter, mix, and stream tactics by @bassosimone in #1556
- refactor(enginenetx): assign InitialDelay when dialing by @bassosimone in #1555
- feat(enginenetx): implement deterministic+random mixing by @bassosimone in #1558
- refactor(enginenetx): split generation and mixing by @bassosimone in #1591
- fix(enginenetx): give priority to DNS by @bassosimone in #1592
- cleanup(enginenetx): remove previous policies by @bassosimone in #1593
- fix(enginenetx): compute zero time when we start dialing by @bassosimone in #1594
- doc(enginenetx): add design document by @bassosimone in #1595
🚧 Refactor and document communication with the OONI backend
We wanted to document the interaction with the OONI backend and specifically with the "probe services" (i.e., the collection of APIs used by OONI Probe), per ooni/probe#2700. To this end, we seized the opportunity to simplify the code interactions, reduce the number of used packages, and refactor the code to improve its reliability and future usability.
- cleanup(engine): remove redundant APIs by @bassosimone in #1536
- cleanup(engine): do not expose LookupLocationContext by @bassosimone in #1537
- cleanup(oonimkall): use (*Session).CheckIn directly by @bassosimone in #1538
- cleanup: use (*Session).NewSubmitter() by @bassosimone in #1539
- cleanup: SaveMeasurement doesn't belong to Experiment by @bassosimone in #1541
- refactor: move Saver, Submitter, and InputProcessor to oonirun by @bassosimone in #1543
- feat(testingx): add log collector by @bassosimone in #1562
- feat(testingx): add HTTPHandlerResetWhileReadingBody by @bassosimone in #1563
- chore(enginelocate): improve ubuntu and cloudflare tests by @bassosimone in #1564
- doc(oonirun): document v2.go and v2_test.go by @bassosimone in #1565
- chore(probeservices): better tests for bouncer, check-in, measurement-meta by @bassosimone in #1566
- feat(testingx): model OONI backend register/login flows by @bassosimone in #1567
- chore(probeservices): better tests for psiphon and tor by @bassosimone in #1568
- feat: introduce the httpclientx package by @bassosimone in #1569
- refactor(enginelocate): switch to httpclientx by @bassosimone in #1570
- oonirun: use httpclientx by @bassosimone in #1571
- chore(probeservices): improve tests for /api/v1/login by @bassosimone in #1572
- chore(probeservices): improve tests for /api/v1/register by @bassosimone in #1573
- feat(testingx): add OONI collector for testing by @bassosimone in #1574
- chore(probeservices): improve tests for measurement submission by @bassosimone in #1575
- refactor(probeservices): httpx -> httpclientx by @bassosimone in #1576
- fix(httpclientx): add support for cloudfronting by @bassosimone in #1577
- cleanup(probeservices): remove residual httpx.Client dependency by @bassosimone in #1578
- cleanup: remove unused httpx package by @bassosimone in #1579
- refactor(probeservices): use httpclientx for check-in by @bassosimone in #1580
- feat(session): implement CallWebConnectivityTestHelper by @bassosimone in #1581
- refactor(webconnectivity*): don't call httpapi directly by @bassosimone in #1582
- cleanup: only define ErrNoAvailableTestHelpers once by @bassosimone in #1583
- refactor(httpclientx): couple URL and cloudfront host header by @bassosimone in #1584
- httpclientx: implement fast recovery and return endpoint index by @bassosimone in #1586
- multierror: implement BuildErrorString and mark as legacy by @bassosimone in #1587
- feat(httpclientx): allow configuring max-response-body size by @bassosimone in #1588
- refactor(webconnectivityqa): use httpclientx by @bassosimone in #1589
- cleanup: remove httpapi and ooapi by @bassosimone in #1560
- doc: document probe services interactions by @bassosimone in #1590
📖 Documenting the release process
We were asked to document the release process in ooni/probe#2698, and the resulting work is this:
- doc: start improving releases documentation by @bassosimone in #1533
- doc: document the release process by @bassosimone in #1534
🚧 Releasing & maintenance
This set of changes deal with preparing a release. In particular, in this case, we took on the chore of reducing the number of warnings emitted by gosec
, such that its output can actually be informative and actionable (there was lots of noise). In terms of behavioral changes in the ooniprobe
binary, these are the two most "impactful" changes:
-
I explicitly ignore errors when resetting with
-f
theOONI_HOME
directory, to keep the previous idempotent behavior, because I think that otherwise the desktop app may emit errors if asked to delete theOONI_HOME
multiple times: https://github.com/ooni/probe-cli/pull/1603/files#diff-2e841e5388e3f75b0ab808e74d5b34a9ebb72466a508daecda35625a7eab5c7fR29 -
I have improved how we manage
survey
errors: https://github.com/ooni/probe-cli/pull/1603/files#diff-3e09d6a095d686f531f06efe21b6e430b311340af5ce74989f110dc05424cbcdR24 and #1608 -
I am now reporting an error if we fail to update the database to set the upload status: https://github.com/ooni/probe-cli/pull/1603/files#diff-2a4cd822f78eb174dc7c6b88e3ab71be4810624b358b98109c10bcb5371e4844R249
-
I have now configured timeouts for receiving headers in
oohelperd
: https://github.com/ooni/probe-cli/pull/1603/files#diff-663f720a0015bc642e1957e965f9bc9115cea500fc0268bf5a6e22b5ad7cb44dR111
Here's the full list of pull requests:
- chore: we're now hacking on v3.22.0-alpha by @bassosimone in #1532
- chore(deps): bump golang.org/x/net from 0.22.0 to 0.23.0 by @dependabot in #1559
- fix(gobash.yml): drop macos-latest checks by @bassosimone in #1561
- chore: upgrade to go1.21.9 by @bassosimone in #1548
- chore(deps): bump github.com/quic-go/quic-go from 0.40.1 to 0.42.0 by @dependabot in #1535
- chore: update to go1.21.10 by @bassosimone in #1596
- chore(NDKVERSION): upgrade to latest LTS release by @bassosimone in #1597
- chore: upgrade most dependencies by @bassosimone in #1598
- chore: upgrade C dependencies by @bassosimone in https://github...
OONI Probe CLI v3.22.0-alpha
This is an alpha release for creating a branching point for the release/3.22
branch. As usual, this release includes both an OONI Probe CLI release and the corresponding release of the measurement engine, which is hosted by the same repository.
Here's a thematic summary of what changed since v3.21.0-alpha:
- ✨ Preparing Web Connectivity LTE for use in production
- 🐛 Prioritize DNS results when communicating with backends
- 🚧 Refactor and document communication with the OONI backend
- 📖 Documenting the release process
- 🚧 Minor changes & bug fixes
In terms of testing requirements, this release mostly changed the interaction with backend services, so we need
-
QA testing of
ooniprobe
andminiooni
operating in normal and restricted operating conditions, to see how the new algorithms are faring, collect feedback, and plan for future changes (or revert patches if needed). -
We should also probably test whether we're able to trigger the Web Connectivity LTE A/B testing using the check-in API, so we're actually able to perform the A/B testing 😅.
-
We should also test the new
oohelperd
in production, for now the code has a generous 8 seconds timeout for receiving HTTP headers rather than leaving the timeout unbounded (we should be fine, but we should nonetheless test). -
We should ensure in the desktop app that we can reset the
OONI_HOME
multiple times without errors. -
We should test in the CLI that the "panics" added for handling
survey
errors have no practical implication unless something very weird like not being able to write the standard output happens.
More in detail, here's what has changed:
✨ Preparing Web Connectivity LTE for use in production
We worked towards closing all the open Web Connectivity LTE issues, such that we can finally be well placed to run an A/B testing between the v0.4 and LTE using this version of the OONI Probe Engine.
- fix(webconnectivitylte): handle too many redirects by @bassosimone in #1550
🐛 Prioritize DNS results when communicating with backends
We documented the strategy to communicate with backends, including the OONI backend, and we discussed the design as part of the #1552. During such a review, it was requested to modify the policy with which we communicate with the backends, so that the DNS results have higher priority. The main concern of this change request was to avoid long recovery periods if the currently deployed bridge becomes unavailable as well as to tilt the overall design such that uncensored OONI Probe users communicate with the backends in the simplest possible way.
- feat(enginenetx): test
bridgesPolicy
with DNS success by @bassosimone in #1554 - feat(enginenetx): add algorithms to filter, mix, and stream tactics by @bassosimone in #1556
- refactor(enginenetx): assign InitialDelay when dialing by @bassosimone in #1555
- feat(enginenetx): implement deterministic+random mixing by @bassosimone in #1558
- refactor(enginenetx): split generation and mixing by @bassosimone in #1591
- fix(enginenetx): give priority to DNS by @bassosimone in #1592
- cleanup(enginenetx): remove previous policies by @bassosimone in #1593
- fix(enginenetx): compute zero time when we start dialing by @bassosimone in #1594
- doc(enginenetx): add design document by @bassosimone in #1595
🚧 Refactor and document communication with the OONI backend
We wanted to document the interaction with the OONI backend and specifically with the "probe services" (i.e., the collection of APIs used by OONI Probe), per ooni/probe#2700. To this end, we seized the opportunity to simplify the code interactions, reduce the number of used packages, and refactor the code to improve its reliability and future usability.
- cleanup(engine): remove redundant APIs by @bassosimone in #1536
- cleanup(engine): do not expose LookupLocationContext by @bassosimone in #1537
- cleanup(oonimkall): use (*Session).CheckIn directly by @bassosimone in #1538
- cleanup: use (*Session).NewSubmitter() by @bassosimone in #1539
- cleanup: SaveMeasurement doesn't belong to Experiment by @bassosimone in #1541
- refactor: move Saver, Submitter, and InputProcessor to oonirun by @bassosimone in #1543
- feat(testingx): add log collector by @bassosimone in #1562
- feat(testingx): add HTTPHandlerResetWhileReadingBody by @bassosimone in #1563
- chore(enginelocate): improve ubuntu and cloudflare tests by @bassosimone in #1564
- doc(oonirun): document v2.go and v2_test.go by @bassosimone in #1565
- chore(probeservices): better tests for bouncer, check-in, measurement-meta by @bassosimone in #1566
- feat(testingx): model OONI backend register/login flows by @bassosimone in #1567
- chore(probeservices): better tests for psiphon and tor by @bassosimone in #1568
- feat: introduce the httpclientx package by @bassosimone in #1569
- refactor(enginelocate): switch to httpclientx by @bassosimone in #1570
- oonirun: use httpclientx by @bassosimone in #1571
- chore(probeservices): improve tests for /api/v1/login by @bassosimone in #1572
- chore(probeservices): improve tests for /api/v1/register by @bassosimone in #1573
- feat(testingx): add OONI collector for testing by @bassosimone in #1574
- chore(probeservices): improve tests for measurement submission by @bassosimone in #1575
- refactor(probeservices): httpx -> httpclientx by @bassosimone in #1576
- fix(httpclientx): add support for cloudfronting by @bassosimone in #1577
- cleanup(probeservices): remove residual httpx.Client dependency by @bassosimone in #1578
- cleanup: remove unused httpx package by @bassosimone in #1579
- refactor(probeservices): use httpclientx for check-in by @bassosimone in #1580
- feat(session): implement CallWebConnectivityTestHelper by @bassosimone in #1581
- refactor(webconnectivity*): don't call httpapi directly by @bassosimone in #1582
- cleanup: only define ErrNoAvailableTestHelpers once by @bassosimone in #1583
- refactor(httpclientx): couple URL and cloudfront host header by @bassosimone in #1584
- httpclientx: implement fast recovery and return endpoint index by @bassosimone in #1586
- multierror: implement BuildErrorString and mark as legacy by @bassosimone in #1587
- feat(httpclientx): allow configuring max-response-body size by @bassosimone in #1588
- refactor(webconnectivityqa): use httpclientx by @bassosimone in #1589
- cleanup: remove httpapi and ooapi by @bassosimone in #1560
- doc: document probe services interactions by @bassosimone in #1590
📖 Documenting the release process
We were asked to document the release process in ooni/probe#2698, and the resulting work is this:
- doc: start improving releases documentation by @bassosimone in #1533
- doc: document the release process by @bassosimone in #1534
🚧 Releasing & maintenance
This set of changes deal with preparing a release. In particular, in this case, we took on the chore of reducing the number of warnings emitted by gosec
, such that its output can actually be informative and actionable (there was lots of noise). In terms of behavioral changes in the ooniprobe
binary, these are the two most "impactful" changes:
-
I explicitly ignore errors when resetting with
-f
theOONI_HOME
directory, to keep the previous idempotent behavior, because I think that otherwise the desktop app may emit errors if asked to delete theOONI_HOME
multiple times: https://github.com/ooni/probe-cli/pull/1603/files#diff-2e841e5388e3f75b0ab808e74d5b34a9ebb72466a508daecda35625a7eab5c7fR29 -
I am now panicking if
survey
fails (which should not happen unless we misconfiguresurvey
in the code or we're not able to write to the standard output): https://github.com/ooni/probe-cli/pull/1603/files#diff-3e09d6a095d686f531f06efe21b6e430b311340af5ce74989f110dc05424cbcdR24 -
I am now reporting an error if we fail to update the database to set the upload status: https://github.com/ooni/probe-cli/pull/1603/files#diff-2a4cd822f78eb174dc7c6b88e3ab71be4810624b358b98109c10...
OONI Probe CLI v3.21.1
This is a stable release. On a high-level, this is what changed since 3.19:
- ✨ 🐛 🚧 Web Connectivity LTE improvements
- ✨ 🐛 🚧 Web Connectivity Test Helper improvements
- 🐛 TorSf experiment: fixed data quality issue
- ✨ Add the
./script/go.bash
script to help development - 🚧 OONI Run v2: more flexible Engine<->App interface
- ✨ Adding Wikimedia DNS-over-HTTPS resolver
- 🚧 Removing the run experiment
- 🚧 Improve SummaryKeys management
- 🚧 Updating dependencies
- 🚧 Minor Miscellaneous Maintenance
- 🐛 Minor Miscellaneous Bug Fixes
For more details, please see OONI Probe CLI v3.21.0's ChangeLog.
Since v3.21.0 we additionally:
- ✨ backport: feat(miniooni): add --software-name and --software-version 294ce23
This release does not include a linux/armv6
binary because of ooni/probe#2694.
OONI Probe CLI v3.21.0
This is a stable release. On a high-level, this is what changed since 3.19:
- ✨ 🐛 🚧 Web Connectivity LTE improvements
- ✨ 🐛 🚧 Web Connectivity Test Helper improvements
- 🐛 TorSf experiment: fixed data quality issue
- ✨ Add the
./script/go.bash
script to help development - 🚧 OONI Run v2: more flexible Engine<->App interface
- ✨ Adding Wikimedia DNS-over-HTTPS resolver
- 🚧 Removing the run experiment
- 🚧 Improve SummaryKeys management
- 🚧 Updating dependencies
- 🚧 Minor Miscellaneous Maintenance
- 🐛 Minor Miscellaneous Bug Fixes
More in detail:
✨ 🐛 🚧 Web Connectivity LTE improvements
We made sure that Web Connectivity LTE handles internationalized domain names correctly:
- fix(webconnectivitylte): make IDNA WAI by @bassosimone in #1460
We improved Web Connectivity LTE to correctly handle malformed URLs:
- fix(webconnectivitylte): handle malformed redirect URLs by @bassosimone in #1480
We ensured that we correctly handle measurements containing loopback addresses:
- fix(webconnectivitylte): handle measurements with loopback addrs by @bassosimone in #1462
We fixed a bug where Web Connectivity LTE was not correctly counting bytes sent and received:
- fix(webconnectivitylte): count bytes sent and received by @bassosimone in #1488
We ensured that Web Connectivity LTE correctly handle cases of websites with missing A/AAAA addresses:
- fix(webconnectivitylte): handle domains w/o A/AAAA records by @bassosimone in #1473
We fixed a bug where Web Connectivity LTE was not including the network events:
- fix(webconnectivitylte): include network events by @bassosimone in #1503
We updated Web Connectivity LTE's "classic" analysis engine to generate the extended blocking flags, such that it is now possible to always use the "classic" engine. In practical term, this implied improving the minipipeline
package and making sure the "classic" engine, which already generates v0.4-compatible tests keys, could also generate the test keys that were previously generated by the "orig" engine. After this change, we removed the now-unneded "orig" analysis engine.
- refactor(webconnectivitylte): make analysis flags public by @bassosimone in #1447
- refactor(minipipeline): allow avoiding linear analysis by @bassosimone in #1448
- feat(minipipeline): add DNSLookupSuccessWithBogonAddresses by @bassosimone in #1449
- chore(minipipeline): increase code coverage by @bassosimone in #1450
- feat(minipipeline): add ControlFinalResponseExpectations by @bassosimone in #1451
- feat(minipipeline): add ControlFinalResponseExpectations (2/2) by @bassosimone in #1452
- feat(minipipeline): add DNS and HTTP unexplained failures by @bassosimone in #1453
- feat(webconnectivitylte): classic computes XBlockingFlags by @bassosimone in #1446
- feat(webconnectivitylte): classic supports XNullNullFlags by @bassosimone in #1454
- cleanup(webconnectivitylte): remove the orig engine by @bassosimone in #1455
- cleanup(webconnectivitytle): avoid code duplication by @bassosimone in #1456
- feat(webconnectivitylte): handle ghost DNS censorship by @bassosimone in #1457
- feat(webconnectivitylte): add more tests and comments by @bassosimone in #1458
- minipipeline: fix expected TCP & TLS failures by @bassosimone in #1459
We added more test Web Connectivity LTE and minipipeline
test cases:
- chore(minipipeline): add http://firefox.com test case by @bassosimone in #1470
- feat(webconnectivitylte): add Cloudflare CAPTCHA test cases by @bassosimone in #1476
- chore(webconnectivityqa): reproduce ooni/probe#2628 issue by @bassosimone in #1479
- minipipeline: fix computing HTTPResponseBodyIsTruncated by @bassosimone in #1481
- chore(webconnectivitylte): add large file test cases by @bassosimone in #1475
- chore(minipipeline): add test case for ooni/probe#2456 by @bassosimone in #1461
- chore(minipipeline): regenerate test cases by @bassosimone in #1469
We improved Web Connectivity LTE to correctly handle more blocking=null accessible=null
cases:
- chore(minipipeline): add data to understand ooni/probe#1511 by @bassosimone in #1471
- fix(minipipeline): handle IP-addr URLs in classic linear analysis by @bassosimone in #1472
We improved (and modified) the implementation of StreamAllContext and moved it inside the netxlite
package:
- BREAKING CHANGE: feat: move StreamAllContext to netxlite by @bassosimone in #1490
We implemented support for SummaryKeys in Web Connectivity LTE:
- feat(webconnectivitylte): wire-in SummaryKeys by @bassosimone in #1493
We factored Web Connectivity LTE algorithms into the webconnectivityalgo
package and added support for cycling through several DNS-over-UDP resolvers, thus implementing a feature request demanded by users in the SEA region:
- refactor: move webconnectivitylte algos to webconnectivityalgo by @bassosimone in #1496
- feat(webconnectivityalgo): test OpportunisticDNSOverHTTPSURLProvider by @bassosimone in #1497
- feat(webconnectivityalgo): test DNSWhoamiService by @bassosimone in #1498
- fix(DNSWhoamiService): implement cache expiration by @bassosimone in #1499
- feat(webconnectivitylte): use random DNS-over-UDP resolver by @bassosimone in #1500
We did work to reduce to ~zero the churn caused by regenerating minipipeline
test cases, after we realized the non-determinism in generating the test cases was going to cause too many large and ~hard-to-review properly diffs:
- fix(qatool): reduce generated test cases churn by @bassosimone in #1505
- fix(webconnectivitylte): never sort test keys by @bassosimone in #1506
- fix(webconnectivitylte): use scope for endpoint IDs by @bassosimone in #1507
- fix(webconnectivitylte): don't use a DoH URL provider singleton by @bassosimone in #1508
- fix(minipipeline): sort A before AAAA by @bassosimone in #1509
- fix(qatool): normalize test keys by @bassosimone in #1510
- fix(qatool): make Date header constant by @bassosimone in #1511
- fix(qatool): do not save large response bodies on disk by @bassosimone in #1512
- fix(webconnectivitylte): add 10k*i scope to all IDs by @bassosimone in #1513
- cleanup(netemx): simplify idna and large-file test cases by @bassosimone in #1514
- fix(qatool): remove remaining causes of churn by @bassosimone in #1515
We ensured that Web Connectivity LTE correctly includes the client_resolver
field:
- fix(webconnectivitylte): include client_resolver by @bassosimone in #1504
We ensured that Web Connectivity LTE correctly uses the tcptls_experiment
tag when needed:
- fix(webconnectivitylte): add classic and tcptls_experiment tags by @bassosimone in #1502
We implemented additional, misc changes to improve the codebase
- refactor(webconnectivitylte): use NewHTTPTransportWithOptions by @bassosimone in #1494
- doc(webconnectivitylte): clarify http_transaction_{start,end} semantics by @bassosimone in #1495
✨ 🐛 🚧 Web Connectivity Test Helper improvements
We implemented protection against oohelperd overload, which can be caused by synchronized clients:
- ✨ feat(oohelperd): protect against overload and add metrics by @bassosimone in #1442
We implemented logs and tests to make sure oohelperd does not try connecting to bogons:
- 🐛 fix(oohelperd): make sure endpoints don't connect to 127.0.0.1 by @bassosimone in #1463
We removed technical debt in the oohelperd, which was making GVisor-based integration tests tricky. Specifically, we ensured we have a single constructor for oohelperd and that such a constructor depends on a *netxlite.Netx
. In turn, this allowed us to use the exact same constructor for running oohelperd in production and in integration testing, thus allowing for less fragile integration testing.
- 🐛 fix(oohelperd,netemx): construct equivalent HTTPTransports by @bassosimone in #1464
- 🚧 cleanup(netxlite): remove first-order implicit-Netx wrappers by @bassosimone in https://...
OONI Probe CLI v3.21.0-alpha
This is an alpha release for creating a branching point for the release/3.21
branch.
Please see release 3.21.0 for an explanatory changelog.
This build lacks linux/armv6
binaries because of ooni/probe#2694.
What's Changed
- chore: we're now hacking on v3.21.0-alpha by @bassosimone in #1439
- chore(deps): bump golang.org/x/crypto from 0.16.0 to 0.17.0 by @dependabot in #1441
- feat(oohelperd): protect against overload and add metrics by @bassosimone in #1442
- chore(deps): bump github.com/cloudflare/circl from 1.3.6 to 1.3.7 by @dependabot in #1443
- fix(dnsping): make output more actionable by @bassosimone in #1444
- fix(libtor): prevent concurrent instances by @bassosimone in #1445
- refactor(webconnectivitylte): make analysis flags public by @bassosimone in #1447
- refactor(minipipeline): allow avoiding linear analysis by @bassosimone in #1448
- feat(minipipeline): add DNSLookupSuccessWithBogonAddresses by @bassosimone in #1449
- chore(minipipeline): increase code coverage by @bassosimone in #1450
- feat(minipipeline): add ControlFinalResponseExpectations by @bassosimone in #1451
- feat(minipipeline): add ControlFinalResponseExpectations (2/2) by @bassosimone in #1452
- feat(minipipeline): add DNS and HTTP unexplained failures by @bassosimone in #1453
- feat(webconnectivitylte): classic computes XBlockingFlags by @bassosimone in #1446
- feat(webconnectivitylte): classic supports XNullNullFlags by @bassosimone in #1454
- cleanup(webconnectivitylte): remove the orig engine by @bassosimone in #1455
- cleanup(webconnectivitytle): avoid code duplication by @bassosimone in #1456
- feat(webconnectivitylte): handle ghost DNS censorship by @bassosimone in #1457
- feat(webconnectivitylte): add more tests and comments by @bassosimone in #1458
- minipipeline: fix expected TCP & TLS failures by @bassosimone in #1459
- fix(webconnectivitylte): make IDNA WAI by @bassosimone in #1460
- chore(minipipeline): add test case for ooni/probe#2456 by @bassosimone in #1461
- fix(oohelperd): make sure endpoints don't connect to 127.0.0.1 by @bassosimone in #1463
- fix(oohelperd,netemx): construct equivalent HTTPTransports by @bassosimone in #1464
- cleanup(netxlite): remove first-order implicit-Netx wrappers by @bassosimone in #1465
- refactor(oohelperd): depend on netxlite.Netx only by @bassosimone in #1466
- refactor(oohelperd,netmx): reduce construction diff to zero by @bassosimone in #1467
- refactor(netemx,oohelperd): use oohelperd.NewHandler constructor by @bassosimone in #1468
- chore(minipipeline): regenerate test cases by @bassosimone in #1469
- fix(webconnectivitylte): handle measurements with loopback addrs by @bassosimone in #1462
- chore(minipipeline): add http://firefox.com test case by @bassosimone in #1470
- chore(minipipeline): add data to understand ooni/probe#1511 by @bassosimone in #1471
- fix(minipipeline): handle IP-addr URLs in classic linear analysis by @bassosimone in #1472
- fix(webconnectivitylte): handle domains w/o A/AAAA records by @bassosimone in #1473
- chore: use latest zlib version published (1.3.1) by @ainghazal in #1477
- doc(Readme.md): add link to miniooni by @bassosimone in #1478
- feat(webconnectivitylte): add Cloudflare CAPTCHA test cases by @bassosimone in #1476
- chore(webconnectivityqa): reproduce ooni/probe#2628 issue by @bassosimone in #1479
- fix(webconnectivitylte): handle malformed redirect URLs by @bassosimone in #1480
- minipipeline: fix computing HTTPResponseBodyIsTruncated by @bassosimone in #1481
- chore(webconnectivitylte): add large file test cases by @bassosimone in #1475
- chore(buildtool): support go1.18+ by @bassosimone in #1483
- feat(buildtool): add the gofixpath subcommand by @bassosimone in #1484
- feat(buildtool): introduce script/go.bash wrapper by @bassosimone in #1485
- feat(Makefile): use ./script/go.bash by @bassosimone in #1482
- doc(Readme.md): mention ./script/go.bash by @bassosimone in #1486
- fix(script/go.bash): support Ubuntu 22.04 LTS and Debian 11 by @bassosimone in #1487
- fix(webconnectivitylte): count bytes sent and received by @bassosimone in #1488
- feat(engineresolver): add wikimedia DNS by @bassosimone in #1489
- BREAKING CHANGE: feat: move StreamAllContext to netxlite by @bassosimone in #1490
- cleanup(all): remove the run experiment by @bassosimone in #1492
- refactor(all): improve SummaryKeys management by @bassosimone in #1491
- feat(webconnectivitylte): wire-in SummaryKeys by @bassosimone in #1493
- refactor(webconnectivitylte): use NewHTTPTransportWithOptions by @bassosimone in #1494
- doc(webconnectivitylte): clarify http_transaction_{start,end} semantics by @bassosimone in #1495
- refactor: move webconnectivitylte algos to webconnectivityalgo by @bassosimone in #1496
- feat(webconnectivityalgo): test OpportunisticDNSOverHTTPSURLProvider by @bassosimone in #1497
- feat(webconnectivityalgo): test DNSWhoamiService by @bassosimone in #1498
- fix(DNSWhoamiService): implement cache expiration by @bassosimone in #1499
- feat(webconnectivitylte): use random DNS-over-UDP resolver by @bassosimone in #1500
- fix(CDEPS/tor): allow compiling under ArchLinux by @bassosimone in #1501
- fix(webconnectivitylte): include network events by @bassosimone in #1503
- fix(webconnectivitylte): include client_resolver by @bassosimone in #1504
- fix(qatool): reduce generated test cases churn by @bassosimone in #1505
- fix(webconnectivitylte): never sort test keys by @bassosimone in #1506
- fix(webconnectivitylte): use scope for endpoint IDs by @bassosimone in #1507
- fix(webconnectivitylte): don't use a DoH URL provider singleton by @bassosimone in #1508
- fix(minipipeline): sort A before AAAA by @bassosimone in #1509
- fix(qatool): normalize test keys by @bassosimone in #1510
- fix(qatool): make Date header constant by @bassosimone in #1511
- fix(qatool): do not save large response bodies on disk by @bassosimone in #1512
- fix(webconnectivitylte): add 10k*i scope to all IDs by @bassosimone in #1513
- cleanup(netemx): simplify idna and large-file test cases by @bassosimone in #1514
- fix(qatool): remove remaining causes of churn by @bassosimone in #1515
- fix(webconnectivitylte): add classic and tcptls_experiment tags by @bassosimone in #1502
- fix(gardener): avoid issues caused by stale databases by @bassosimone in #1516
- oohelperd: move prometheus metrics behind HTTP basic auth + docker image build + codepipeline buildspec by @hellais in #1520
- fix(tlsmiddlebox): if RemoteAddr is IPv6 set IPV6_UNICAST_HOPS by @Lanius-collaris in #1517
- chore(deps): bump google.golang.org/protobuf from 1.31.0 to 1.33.0 by @dependabot in #1519
- fix(pkg/gobash/version.go): validate zip files content by @bassosimone in #1521
- doc(gobash.yml): explain what to do during releases by @bassosimone in https://github.com/ooni/pro...
OONI Probe CLI v3.20.1
This is a stable release. On a high-level, this is what changed since 3.19:
- ✨ Web Connectivity v0.5 is nearly production ready
- ✨ Initial support for Go 1.21
- 🚧 Scripting to make research faster
- 🚧 Refactoring and improvements for the experimental
dslx
package - 🚧 Release engineering (aka keeping the lights on)
- 🐛 Miscellaneous bug fixes
See https://github.com/ooni/probe-cli/releases/tag/v3.20.0 for a detailed changelog with respect to 3.19.
On top of 3.20.0, this release adds the following commits: