From 95906fbcce31a456a6190b4934f5f49ea8c25959 Mon Sep 17 00:00:00 2001 From: Simone Basso Date: Thu, 26 Nov 2020 18:48:20 +0100 Subject: [PATCH] feat: use ooni/probe-engine@286613b74e6c and cleanup (#177) * feat: use ooni/probe-engine@286613b74e6c and cleanup 1. zap unused configuration settings from the config file but do not bump the version number because doing that _may_ interact in unexpected ways with probe-desktop (hence https://github.com/ooni/probe/issues/1297) and also because we've just _removed_ stuff for now, therefore any previous configuration file will continue to work, except that we'll be ignoring a bunch of options. In a future version of probe-cli I'll spend some time to further improve config file management. 2. accordingly, make sure all current configuration files that are around in the tree are current and only feature supported options. 3. update to ooni/probe-engine@286613b74e6c, which contains a bunch of APIs that should allow us to simplify the interaction between the cli and the engine, by sharing code more cleverly. 4. zap GetTestKeys because now we use code in probe-engine instead. 5. zap LogSummary because it was not being used. 6. the main change related to cleaning up the config and to the update to the latest probe-engine is that include_{cc,asn,ip} settings are gone and we now share the CC and the ASN and we never share the IP addr. Reference issue: https://github.com/ooni/probe/issues/1283. After this change is landed, there's a bunch more work to do to further unify cli and engine. The final state will be that the cli uses ~the code used by miniooni, so it will have a bunch of desirable options. * fix: bindata after recent changes --- data/default-config.json | 8 +-- go.mod | 2 +- go.sum | 4 +- internal/bindata/bindata.go | 2 +- internal/cli/onboard/onboard.go | 2 - internal/config/parser_test.go | 12 +--- internal/config/settings.go | 2 - internal/config/testdata/valid-config.json | 8 +-- internal/nettests/dash.go | 49 ------------- internal/nettests/facebook_messenger.go | 37 ---------- .../http_header_field_manipulation.go | 32 --------- .../nettests/http_invalid_request_line.go | 27 -------- internal/nettests/ndt.go | 68 ------------------- internal/nettests/nettests.go | 9 +-- internal/nettests/psiphon.go | 35 ---------- internal/nettests/telegram.go | 45 ------------ internal/nettests/tor.go | 56 --------------- internal/nettests/web_connectivity.go | 47 ------------- internal/nettests/whatsapp.go | 43 ------------ internal/ooni/ooni.go | 12 +--- testdata/testing-config.json | 8 +-- 21 files changed, 13 insertions(+), 495 deletions(-) diff --git a/data/default-config.json b/data/default-config.json index 5109d86..f609bdf 100644 --- a/data/default-config.json +++ b/data/default-config.json @@ -2,18 +2,12 @@ "_version": 1, "_informed_consent": false, "sharing": { - "include_ip": false, - "include_asn": true, - "include_country": true, "upload_results": true }, "nettests": { "websites_url_limit": 0 }, "advanced": { - "use_domain_fronting": false, - "send_crash_reports": true, - "collector_url": "", - "bouncer_url": "https://bouncer.ooni.io" + "send_crash_reports": true } } diff --git a/go.mod b/go.mod index f66f7c4..52bc6dc 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/mattn/go-colorable v0.1.8 github.com/mattn/go-sqlite3 v1.14.5 // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect - github.com/ooni/probe-engine v0.20.2 + github.com/ooni/probe-engine v0.20.1-0.20201126115133-286613b74e6c github.com/pkg/errors v0.9.1 github.com/rubenv/sql-migrate v0.0.0-20200616145509-8d140a17f351 github.com/sirupsen/logrus v1.7.0 // indirect diff --git a/go.sum b/go.sum index f8b5ced..eb3e2bf 100644 --- a/go.sum +++ b/go.sum @@ -350,8 +350,8 @@ github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/ooni/probe-engine v0.20.2 h1:QO4HsHw5lG8vshtV0MQwINuYlVnVPPqaVCq8Zx+9guQ= -github.com/ooni/probe-engine v0.20.2/go.mod h1:58nNKsvU/jPjsQ8OZJFNu06l6yRJYYWfNE1JwGmbRwc= +github.com/ooni/probe-engine v0.20.1-0.20201126115133-286613b74e6c h1:+4uKh4ljd5Lui16QAKSKLw4Ld2NACDnuW7lxnUDZ8n8= +github.com/ooni/probe-engine v0.20.1-0.20201126115133-286613b74e6c/go.mod h1:58nNKsvU/jPjsQ8OZJFNu06l6yRJYYWfNE1JwGmbRwc= github.com/ooni/psiphon v0.1.0 h1:fUcDpzZSd2McI5GomHtwusQllYPQoq3ETM3GMfQxCQQ= github.com/ooni/psiphon v0.1.0/go.mod h1:p+l7SBAGTH3bw9ALcLvlrz6ry+isIM2f51Y5yOhgmTQ= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= diff --git a/internal/bindata/bindata.go b/internal/bindata/bindata.go index 763ae13..0a347a8 100644 --- a/internal/bindata/bindata.go +++ b/internal/bindata/bindata.go @@ -80,7 +80,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _bindataDataDefaultconfigJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x5c\x8f\x41\x4e\xc4\x30\x0c\x45\xf7\x3d\x85\x95\x35\x9a\x81\x6d\x2f\x63\x65\x12\x0f\xb5\x94\xda\x95\xed\x0c\x42\x68\xee\x8e\x5a\xaa\x52\xd8\xfe\x97\x9f\xff\xfc\x35\x00\x24\x7c\x90\x39\xab\xa4\x11\xde\x5e\xb6\x80\xe5\xae\x36\x53\xc5\xa2\xe2\x24\x91\x46\xb8\xe7\xe6\xb4\x51\x9f\xb2\xb1\xbc\xa7\x11\xd6\x36\x40\x62\x29\xad\x57\x42\x5e\xce\xef\x4e\x20\xfb\xfa\x77\x58\xff\x0f\x8a\x76\x09\xfb\xfc\x0b\xfb\xd2\x34\x57\x34\xf2\xde\xc2\x77\x36\x00\x3c\xb7\x75\xa1\x08\xf2\x2d\xdf\xe7\x3f\xe8\xe6\x1c\xe4\xd8\xad\x61\xe3\x99\x57\xdd\xd7\xa3\x90\xeb\x23\x4b\xa1\xfa\x5b\xe8\x4e\x58\x75\xce\x2c\x78\x37\x95\xf8\x39\xe6\x2c\xee\x24\x15\x8b\x65\x9f\xd0\x68\x51\x3b\x34\x76\x5e\xb4\x35\x2a\xa1\xb6\x6e\xa6\x11\x52\xda\xc1\x4d\xbb\x14\x3a\xe2\x29\x62\xf1\xf1\x7a\xdd\xe3\x8b\xaa\xf0\x85\x35\xad\x72\xc3\x73\xf8\x0e\x00\x00\xff\xff\xfb\x1f\x97\x64\x7e\x01\x00\x00") +var _bindataDataDefaultconfigJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x54\x8d\x31\x0e\xc2\x30\x0c\x45\xf7\x9c\xc2\xca\xcc\x00\x6b\x2e\x63\x85\xe6\x97\x46\x4a\x9d\xca\x4e\xca\x80\x7a\x77\xd4\x08\x81\x58\x9f\xdf\xf3\x7f\x39\x22\xcf\x3b\xd4\x72\x15\x1f\xe8\x76\x19\x20\xcb\x5c\x75\x45\xe2\xa9\x8a\x41\x9a\x0f\x34\xc7\x62\x18\x57\x5b\xa2\x66\x79\xf8\x40\x67\x4d\xe4\xfb\x56\x6a\x4c\xac\xb0\x5e\x9a\xf9\x40\x4d\x3b\x1c\xd1\x31\x74\x41\x6b\xb0\xc1\x3f\xfe\x13\x77\xcb\x0d\xc6\x5d\x0b\x97\xbc\xe6\xf3\xff\xf5\x1b\xc4\xb4\x47\x99\x90\x7e\x81\x41\x12\x4f\x1a\x6d\x61\xc5\x56\xf5\x6f\xc4\x1d\xee\x1d\x00\x00\xff\xff\x5e\x8a\x1a\x13\xc6\x00\x00\x00") func bindataDataDefaultconfigJsonBytes() ([]byte, error) { return bindataRead( diff --git a/internal/cli/onboard/onboard.go b/internal/cli/onboard/onboard.go index 14a4262..ad16918 100644 --- a/internal/cli/onboard/onboard.go +++ b/internal/cli/onboard/onboard.go @@ -134,8 +134,6 @@ func Onboarding(config *config.Config) error { config.Lock() config.InformedConsent = true config.Advanced.SendCrashReports = settings.SendCrashReports - config.Sharing.IncludeIP = settings.IncludeIP - config.Sharing.IncludeASN = settings.IncludeNetwork config.Sharing.UploadResults = settings.UploadResults config.Unlock() diff --git a/internal/config/parser_test.go b/internal/config/parser_test.go index 9dfae6c..255cc9c 100644 --- a/internal/config/parser_test.go +++ b/internal/config/parser_test.go @@ -28,8 +28,8 @@ func TestParseConfig(t *testing.T) { if err != nil { t.Error(err) } - if config.Sharing.IncludeASN == false { - t.Error("network should be included") + if config.Sharing.UploadResults != true { + t.Fatal("not the expected value for UploadResults") } } @@ -58,8 +58,6 @@ func TestUpdateConfig(t *testing.T) { if err != nil { t.Error(err) } - origIncludeIP := config.Sharing.IncludeIP - origIncludeASN := config.Sharing.IncludeASN origUploadResults := config.Sharing.UploadResults origInformedConsent := config.InformedConsent if err != nil { @@ -79,12 +77,6 @@ func TestUpdateConfig(t *testing.T) { if err != nil { t.Error(err) } - if newConfig.Sharing.IncludeIP != origIncludeIP { - t.Error("includeIP differs") - } - if newConfig.Sharing.IncludeASN != origIncludeASN { - t.Error("includeASN differs") - } if newConfig.Sharing.UploadResults != origUploadResults { t.Error("UploadResults differs") } diff --git a/internal/config/settings.go b/internal/config/settings.go index 8dbe4bf..4715eef 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -35,8 +35,6 @@ var websiteCategories = []string{ // Sharing settings type Sharing struct { - IncludeIP bool `json:"include_ip"` - IncludeASN bool `json:"include_asn"` UploadResults bool `json:"upload_results"` } diff --git a/internal/config/testdata/valid-config.json b/internal/config/testdata/valid-config.json index 5109d86..f609bdf 100644 --- a/internal/config/testdata/valid-config.json +++ b/internal/config/testdata/valid-config.json @@ -2,18 +2,12 @@ "_version": 1, "_informed_consent": false, "sharing": { - "include_ip": false, - "include_asn": true, - "include_country": true, "upload_results": true }, "nettests": { "websites_url_limit": 0 }, "advanced": { - "use_domain_fronting": false, - "send_crash_reports": true, - "collector_url": "", - "bouncer_url": "https://bouncer.ooni.io" + "send_crash_reports": true } } diff --git a/internal/nettests/dash.go b/internal/nettests/dash.go index ef7eef4..80f8618 100644 --- a/internal/nettests/dash.go +++ b/internal/nettests/dash.go @@ -1,9 +1,5 @@ package nettests -import ( - "github.com/pkg/errors" -) - // Dash test implementation type Dash struct { } @@ -16,48 +12,3 @@ func (d Dash) Run(ctl *Controller) error { } return ctl.Run(builder, []string{""}) } - -// DashTestKeys for the test -// TODO: process 'receiver_data' to provide an array of performance for a chart. -type DashTestKeys struct { - Latency float64 `json:"connect_latency"` - Bitrate float64 `json:"median_bitrate"` - Delay float64 `json:"min_playout_delay"` - IsAnomaly bool `json:"-"` -} - -// GetTestKeys generates a summary for a test run -func (d Dash) GetTestKeys(tk map[string]interface{}) (interface{}, error) { - var err error - - testKeys := DashTestKeys{IsAnomaly: false} - - simple, ok := tk["simple"].(map[string]interface{}) - if !ok { - return testKeys, errors.New("simple key is not of the expected type") - } - - latency, ok := simple["connect_latency"].(float64) - if !ok { - err = errors.Wrap(err, "connect_latency is invalid") - } - testKeys.Latency = latency - - bitrate, ok := simple["median_bitrate"].(float64) - if !ok { - err = errors.Wrap(err, "median_bitrate is invalid") - } - testKeys.Bitrate = bitrate - - delay, ok := simple["min_playout_delay"].(float64) - if !ok { - err = errors.Wrap(err, "min_playout_delay is invalid") - } - testKeys.Delay = delay - return testKeys, err -} - -// LogSummary writes the summary to the standard output -func (d Dash) LogSummary(s string) error { - return nil -} diff --git a/internal/nettests/facebook_messenger.go b/internal/nettests/facebook_messenger.go index 4285365..1316bab 100644 --- a/internal/nettests/facebook_messenger.go +++ b/internal/nettests/facebook_messenger.go @@ -14,40 +14,3 @@ func (h FacebookMessenger) Run(ctl *Controller) error { } return ctl.Run(builder, []string{""}) } - -// FacebookMessengerTestKeys for the test -type FacebookMessengerTestKeys struct { - DNSBlocking bool `json:"facebook_dns_blocking"` - TCPBlocking bool `json:"facebook_tcp_blocking"` - IsAnomaly bool `json:"-"` -} - -// GetTestKeys generates a summary for a test run -func (h FacebookMessenger) GetTestKeys(tk map[string]interface{}) (interface{}, error) { - var ( - dnsBlocking bool - tcpBlocking bool - ) - if tk["facebook_dns_blocking"] == nil { - dnsBlocking = false - } else { - dnsBlocking = tk["facebook_dns_blocking"].(bool) - } - - if tk["facebook_tcp_blocking"] == nil { - tcpBlocking = false - } else { - tcpBlocking = tk["facebook_tcp_blocking"].(bool) - } - - return FacebookMessengerTestKeys{ - DNSBlocking: dnsBlocking, - TCPBlocking: tcpBlocking, - IsAnomaly: dnsBlocking || tcpBlocking, - }, nil -} - -// LogSummary writes the summary to the standard output -func (h FacebookMessenger) LogSummary(s string) error { - return nil -} diff --git a/internal/nettests/http_header_field_manipulation.go b/internal/nettests/http_header_field_manipulation.go index b9094df..6fdd396 100644 --- a/internal/nettests/http_header_field_manipulation.go +++ b/internal/nettests/http_header_field_manipulation.go @@ -1,9 +1,5 @@ package nettests -import ( - "errors" -) - // HTTPHeaderFieldManipulation test implementation type HTTPHeaderFieldManipulation struct { } @@ -18,31 +14,3 @@ func (h HTTPHeaderFieldManipulation) Run(ctl *Controller) error { } return ctl.Run(builder, []string{""}) } - -// HTTPHeaderFieldManipulationTestKeys for the test -type HTTPHeaderFieldManipulationTestKeys struct { - IsAnomaly bool `json:"-"` -} - -// GetTestKeys returns a projection of the tests keys needed for the views -func (h HTTPHeaderFieldManipulation) GetTestKeys(tk map[string]interface{}) (interface{}, error) { - testKeys := HTTPHeaderFieldManipulationTestKeys{IsAnomaly: false} - tampering, ok := tk["tampering"].(map[string]interface{}) - if !ok { - return testKeys, errors.New("tampering testkey is invalid") - } - for _, v := range tampering { - t, ok := v.(bool) - // Ignore non booleans in the tampering map - if ok && t == true { - testKeys.IsAnomaly = true - } - } - - return testKeys, nil -} - -// LogSummary writes the summary to the standard output -func (h HTTPHeaderFieldManipulation) LogSummary(s string) error { - return nil -} diff --git a/internal/nettests/http_invalid_request_line.go b/internal/nettests/http_invalid_request_line.go index 0b62f36..fb87e46 100644 --- a/internal/nettests/http_invalid_request_line.go +++ b/internal/nettests/http_invalid_request_line.go @@ -1,9 +1,5 @@ package nettests -import ( - "errors" -) - // HTTPInvalidRequestLine test implementation type HTTPInvalidRequestLine struct { } @@ -18,26 +14,3 @@ func (h HTTPInvalidRequestLine) Run(ctl *Controller) error { } return ctl.Run(builder, []string{""}) } - -// HTTPInvalidRequestLineTestKeys for the test -type HTTPInvalidRequestLineTestKeys struct { - IsAnomaly bool `json:"-"` -} - -// GetTestKeys generates a summary for a test run -func (h HTTPInvalidRequestLine) GetTestKeys(tk map[string]interface{}) (interface{}, error) { - testKeys := HTTPInvalidRequestLineTestKeys{IsAnomaly: false} - - tampering, ok := tk["tampering"].(bool) - if !ok { - return testKeys, errors.New("tampering is not bool") - } - testKeys.IsAnomaly = tampering - - return testKeys, nil -} - -// LogSummary writes the summary to the standard output -func (h HTTPInvalidRequestLine) LogSummary(s string) error { - return nil -} diff --git a/internal/nettests/ndt.go b/internal/nettests/ndt.go index 7555537..b8848b0 100644 --- a/internal/nettests/ndt.go +++ b/internal/nettests/ndt.go @@ -1,9 +1,5 @@ package nettests -import ( - "github.com/pkg/errors" -) - // NDT test implementation. We use v7 of NDT since 2020-03-12. type NDT struct { } @@ -17,67 +13,3 @@ func (n NDT) Run(ctl *Controller) error { } return ctl.Run(builder, []string{""}) } - -// NDTTestKeys for the test -type NDTTestKeys struct { - Upload float64 `json:"upload"` - Download float64 `json:"download"` - Ping float64 `json:"ping"` - MaxRTT float64 `json:"max_rtt"` - AvgRTT float64 `json:"avg_rtt"` - MinRTT float64 `json:"min_rtt"` - MSS float64 `json:"mss"` - RetransmitRate float64 `json:"retransmit_rate"` - IsAnomaly bool `json:"-"` -} - -// GetTestKeys generates a summary for a test run -func (n NDT) GetTestKeys(tk map[string]interface{}) (interface{}, error) { - var err error - testKeys := NDTTestKeys{IsAnomaly: false} - - summary, ok := tk["summary"].(map[string]interface{}) - if !ok { - return testKeys, errors.New("summary key is invalid") - } - - // XXX there is likely a better pattern for this - testKeys.Upload, ok = summary["upload"].(float64) - if !ok { - err = errors.Wrap(err, "upload key invalid") - } - testKeys.Download, ok = summary["download"].(float64) - if !ok { - err = errors.Wrap(err, "download key invalid") - } - testKeys.Ping, ok = summary["ping"].(float64) - if !ok { - err = errors.Wrap(err, "ping key invalid") - } - testKeys.MaxRTT, ok = summary["max_rtt"].(float64) - if !ok { - err = errors.Wrap(err, "max_rtt key invalid") - } - testKeys.AvgRTT, ok = summary["avg_rtt"].(float64) - if !ok { - err = errors.Wrap(err, "avg_rtt key invalid") - } - testKeys.MinRTT, ok = summary["min_rtt"].(float64) - if !ok { - err = errors.Wrap(err, "min_rtt key invalid") - } - testKeys.MSS, ok = summary["mss"].(float64) - if !ok { - err = errors.Wrap(err, "mss key invalid") - } - testKeys.RetransmitRate, ok = summary["retransmit_rate"].(float64) - if !ok { - err = errors.Wrap(err, "retransmit_rate key invalid") - } - return testKeys, err -} - -// LogSummary writes the summary to the standard output -func (n NDT) LogSummary(s string) error { - return nil -} diff --git a/internal/nettests/nettests.go b/internal/nettests/nettests.go index 1ca9400..c3c79b1 100644 --- a/internal/nettests/nettests.go +++ b/internal/nettests/nettests.go @@ -18,8 +18,6 @@ import ( // Nettest interface. Every Nettest should implement this. type Nettest interface { Run(*Controller) error - GetTestKeys(map[string]interface{}) (interface{}, error) - LogSummary(string) error } // NewController creates a nettest controller @@ -168,12 +166,7 @@ func (c *Controller) Run(builder *engine.ExperimentBuilder, inputs []string) err // is an inconsistency between the code that generate the measurement // and the code that process the measurement. We do have some data // but we're not gonna have a summary. To be reconsidered. - genericTk, err := measurement.MakeGenericTestKeys() - if err != nil { - log.WithError(err).Error("failed to cast the test keys") - continue - } - tk, err := c.nt.GetTestKeys(genericTk) + tk, err := exp.GetSummaryKeys(measurement) if err != nil { log.WithError(err).Error("failed to obtain testKeys") continue diff --git a/internal/nettests/psiphon.go b/internal/nettests/psiphon.go index 5e90ca3..940340c 100644 --- a/internal/nettests/psiphon.go +++ b/internal/nettests/psiphon.go @@ -1,7 +1,5 @@ package nettests -import "github.com/pkg/errors" - // Psiphon test implementation type Psiphon struct { } @@ -16,36 +14,3 @@ func (h Psiphon) Run(ctl *Controller) error { } return ctl.Run(builder, []string{""}) } - -// PsiphonTestKeys contains the test keys -type PsiphonTestKeys struct { - IsAnomaly bool `json:"-"` - BootstrapTime float64 `json:"bootstrap_time"` - Failure string `json:"failure"` -} - -// GetTestKeys generates a summary for a test run -func (h Psiphon) GetTestKeys(tk map[string]interface{}) (interface{}, error) { - var ( - ok bool - testKeys PsiphonTestKeys - ) - if tk["failure"] != nil { - testKeys.IsAnomaly = true - failure, ok := tk["failure"].(*string) - if !ok { - return testKeys, errors.New("failure key invalid") - } - testKeys.Failure = *failure - } - testKeys.BootstrapTime, ok = tk["bootstrap_time"].(float64) - if !ok { - return testKeys, errors.New("bootstrap_time key invalid") - } - return testKeys, nil -} - -// LogSummary writes the summary to the standard output -func (h Psiphon) LogSummary(s string) error { - return nil -} diff --git a/internal/nettests/telegram.go b/internal/nettests/telegram.go index 2ea68dd..82d75d8 100644 --- a/internal/nettests/telegram.go +++ b/internal/nettests/telegram.go @@ -14,48 +14,3 @@ func (h Telegram) Run(ctl *Controller) error { } return ctl.Run(builder, []string{""}) } - -// TelegramTestKeys for the test -type TelegramTestKeys struct { - HTTPBlocking bool `json:"telegram_http_blocking"` - TCPBlocking bool `json:"telegram_tcp_blocking"` - WebBlocking bool `json:"telegram_web_blocking"` - IsAnomaly bool `json:"-"` -} - -// GetTestKeys generates a summary for a test run -func (h Telegram) GetTestKeys(tk map[string]interface{}) (interface{}, error) { - var ( - tcpBlocking bool - httpBlocking bool - webBlocking bool - ) - - if tk["telegram_tcp_blocking"] == nil { - tcpBlocking = false - } else { - tcpBlocking = tk["telegram_tcp_blocking"].(bool) - } - if tk["telegram_http_blocking"] == nil { - httpBlocking = false - } else { - httpBlocking = tk["telegram_http_blocking"].(bool) - } - if tk["telegram_web_status"] == nil { - webBlocking = false - } else { - webBlocking = tk["telegram_web_status"].(string) == "blocked" - } - - return TelegramTestKeys{ - TCPBlocking: tcpBlocking, - HTTPBlocking: httpBlocking, - WebBlocking: webBlocking, - IsAnomaly: webBlocking || httpBlocking || tcpBlocking, - }, nil -} - -// LogSummary writes the summary to the standard output -func (h Telegram) LogSummary(s string) error { - return nil -} diff --git a/internal/nettests/tor.go b/internal/nettests/tor.go index 7540c14..96bfbb7 100644 --- a/internal/nettests/tor.go +++ b/internal/nettests/tor.go @@ -14,59 +14,3 @@ func (h Tor) Run(ctl *Controller) error { } return ctl.Run(builder, []string{""}) } - -// TorTestKeys contains the test keys -type TorTestKeys struct { - DirPortTotal int64 `json:"dir_port_total"` - DirPortAccessible int64 `json:"dir_port_accessible"` - IsAnomaly bool `json:"-"` - OBFS4Total int64 `json:"obfs4_total"` - OBFS4Accessible int64 `json:"obfs4_accessible"` - ORPortDirauthTotal int64 `json:"or_port_dirauth_total"` - ORPortDirauthAccessible int64 `json:"or_port_dirauth_accessible"` - ORPortTotal int64 `json:"or_port_total"` - ORPortAccessible int64 `json:"or_port_accessible"` -} - -// GetTestKeys generates a summary for a test run -func (h Tor) GetTestKeys(tk map[string]interface{}) (interface{}, error) { - testKeys := TorTestKeys{IsAnomaly: false} - // Implementation note: when Go marshals into an interface, it marshals to - // float64 rather than int64, so we need to do some more work here. - // - // See . - if tk["dir_port_total"] != nil { - testKeys.DirPortTotal = int64(tk["dir_port_total"].(float64)) - } - if tk["dir_port_accessible"] != nil { - testKeys.DirPortAccessible = int64(tk["dir_port_accessible"].(float64)) - } - if tk["obfs4_total"] != nil { - testKeys.OBFS4Total = int64(tk["obfs4_total"].(float64)) - } - if tk["obfs4_accessible"] != nil { - testKeys.OBFS4Accessible = int64(tk["obfs4_accessible"].(float64)) - } - if tk["or_port_dirauth_total"] != nil { - testKeys.ORPortDirauthTotal = int64(tk["or_port_dirauth_total"].(float64)) - } - if tk["or_port_dirauth_accessible"] != nil { - testKeys.ORPortDirauthAccessible = int64(tk["or_port_dirauth_accessible"].(float64)) - } - if tk["or_port_total"] != nil { - testKeys.ORPortTotal = int64(tk["or_port_total"].(float64)) - } - if tk["or_port_accessible"] != nil { - testKeys.ORPortAccessible = int64(tk["or_port_accessible"].(float64)) - } - testKeys.IsAnomaly = ((testKeys.DirPortAccessible <= 0 && testKeys.DirPortTotal > 0) || - (testKeys.OBFS4Accessible <= 0 && testKeys.OBFS4Total > 0) || - (testKeys.ORPortDirauthAccessible <= 0 && testKeys.ORPortDirauthTotal > 0) || - (testKeys.ORPortAccessible <= 0 && testKeys.ORPortTotal > 0)) - return testKeys, nil -} - -// LogSummary writes the summary to the standard output -func (h Tor) LogSummary(s string) error { - return nil -} diff --git a/internal/nettests/web_connectivity.go b/internal/nettests/web_connectivity.go index 23cb969..32dbc59 100644 --- a/internal/nettests/web_connectivity.go +++ b/internal/nettests/web_connectivity.go @@ -52,50 +52,3 @@ func (n WebConnectivity) Run(ctl *Controller) error { } return ctl.Run(builder, urls) } - -// WebConnectivityTestKeys for the test -type WebConnectivityTestKeys struct { - Accessible bool `json:"accessible"` - Blocking string `json:"blocking"` - IsAnomaly bool `json:"-"` -} - -// GetTestKeys generates a summary for a test run -func (n WebConnectivity) GetTestKeys(tk map[string]interface{}) (interface{}, error) { - var ( - blocked bool - blocking string - accessible bool - ) - - // We need to do these complicated type assertions, because some of the fields - // are "nullable" and/or can be of different types - switch v := tk["blocking"].(type) { - case bool: - blocked = false - blocking = "none" - case string: - blocked = true - blocking = v - default: - blocked = false - blocking = "none" - } - - if tk["accessible"] == nil { - accessible = false - } else { - accessible = tk["accessible"].(bool) - } - - return WebConnectivityTestKeys{ - Accessible: accessible, - Blocking: blocking, - IsAnomaly: blocked, - }, nil -} - -// LogSummary writes the summary to the standard output -func (n WebConnectivity) LogSummary(s string) error { - return nil -} diff --git a/internal/nettests/whatsapp.go b/internal/nettests/whatsapp.go index b3aa424..4660abe 100644 --- a/internal/nettests/whatsapp.go +++ b/internal/nettests/whatsapp.go @@ -14,46 +14,3 @@ func (h WhatsApp) Run(ctl *Controller) error { } return ctl.Run(builder, []string{""}) } - -// WhatsAppTestKeys for the test -type WhatsAppTestKeys struct { - RegistrationServerBlocking bool `json:"registration_server_blocking"` - WebBlocking bool `json:"whatsapp_web_blocking"` - EndpointsBlocking bool `json:"whatsapp_endpoints_blocking"` - IsAnomaly bool `json:"-"` -} - -// GetTestKeys generates a summary for a test run -func (h WhatsApp) GetTestKeys(tk map[string]interface{}) (interface{}, error) { - var ( - webBlocking bool - registrationBlocking bool - endpointsBlocking bool - ) - - var computeBlocking = func(key string) bool { - const blk = "blocked" - if tk[key] == nil { - return false - } - if tk[key].(string) == blk { - return true - } - return false - } - registrationBlocking = computeBlocking("registration_server_status") - webBlocking = computeBlocking("whatsapp_web_status") - endpointsBlocking = computeBlocking("whatsapp_endpoints_status") - - return WhatsAppTestKeys{ - RegistrationServerBlocking: registrationBlocking, - WebBlocking: webBlocking, - EndpointsBlocking: endpointsBlocking, - IsAnomaly: registrationBlocking || webBlocking || endpointsBlocking, - }, nil -} - -// LogSummary writes the summary to the standard output -func (h WhatsApp) LogSummary(s string) error { - return nil -} diff --git a/internal/ooni/ooni.go b/internal/ooni/ooni.go index 1ffe6e2..3f32669 100644 --- a/internal/ooni/ooni.go +++ b/internal/ooni/ooni.go @@ -14,7 +14,6 @@ import ( "github.com/ooni/probe-cli/internal/enginex" "github.com/ooni/probe-cli/internal/utils" engine "github.com/ooni/probe-engine" - "github.com/ooni/probe-engine/model" "github.com/pkg/errors" "upper.io/db.v3/lib/sqlbuilder" ) @@ -200,14 +199,9 @@ func (p *Probe) NewSession() (*engine.Session, error) { return nil, errors.Wrap(err, "creating engine's kvstore") } return engine.NewSession(engine.SessionConfig{ - AssetsDir: utils.AssetsDir(p.home), - KVStore: kvstore, - Logger: enginex.Logger, - PrivacySettings: model.PrivacySettings{ - IncludeASN: p.config.Sharing.IncludeASN, - IncludeCountry: true, - IncludeIP: p.config.Sharing.IncludeIP, - }, + AssetsDir: utils.AssetsDir(p.home), + KVStore: kvstore, + Logger: enginex.Logger, SoftwareName: p.softwareName, SoftwareVersion: p.softwareVersion, TempDir: p.tempDir, diff --git a/testdata/testing-config.json b/testdata/testing-config.json index 8185252..993f3b4 100644 --- a/testdata/testing-config.json +++ b/testdata/testing-config.json @@ -2,18 +2,12 @@ "_version": 1, "_informed_consent": true, "sharing": { - "include_ip": true, - "include_asn": true, - "include_country": true, "upload_results": true }, "nettests": { "websites_url_limit": 10 }, "advanced": { - "use_domain_fronting": false, - "send_crash_reports": true, - "collector_url": "", - "bouncer_url": "https://bouncer.ooni.io" + "send_crash_reports": true } }