Documentation ¶
Overview ¶
Package dnscheck contains the DNS check experiment.
See https://github.com/ooni/spec/blob/master/nettests/ts-028-dnscheck.md.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( ErrInputRequired = errors.New("this experiment needs input") ErrInvalidURL = errors.New("the input URL is invalid") ErrUnsupportedURLScheme = errors.New("unsupported URL scheme") )
The following errors may be returned by this experiment. Of course these errors are in addition to any other errors returned by the low level packages that are used by this experiment to implement its functionality.
Functions ¶
func Collect ¶
func Collect(ctx context.Context, multi urlgetter.Multi, inputs []urlgetter.MultiInput, callbacks model.ExperimentCallbacks) <-chan urlgetter.MultiOutput
Collect prints on the output channel the result of running dnscheck on every provided input. It closes the output channel when done.
func NewExperimentMeasurer ¶
func NewExperimentMeasurer(config Config) model.ExperimentMeasurer
NewExperimentMeasurer creates a new ExperimentMeasurer.
Types ¶
type Config ¶
type Config struct { DefaultAddrs string `json:"default_addrs" ooni:"default addresses for domain"` Domain string `json:"domain" ooni:"domain to resolve using the specified resolver"` HTTP3Enabled bool `json:"http3_enabled" ooni:"use http3 instead of http/1.1 or http2"` HTTPHost string `json:"http_host" ooni:"force using specific HTTP Host header"` TLSServerName string `json:"tls_server_name" ooni:"force TLS to using a specific SNI in Client Hello"` TLSVersion string `json:"tls_version" ooni:"Force specific TLS version (e.g. 'TLSv1.3')"` }
Config contains the experiment's configuration.
type Measurer ¶
Measurer performs the measurement.
func (*Measurer) ExperimentName ¶
ExperimentName implements model.ExperimentSession.ExperimentName
func (*Measurer) ExperimentVersion ¶
ExperimentVersion implements model.ExperimentSession.ExperimentVersion
func (*Measurer) GetSummaryKeys ¶
func (m *Measurer) GetSummaryKeys(measurement *model.Measurement) (interface{}, error)
GetSummaryKeys implements model.ExperimentMeasurer.GetSummaryKeys.
func (*Measurer) Run ¶
func (m *Measurer) Run( ctx context.Context, sess model.ExperimentSession, measurement *model.Measurement, callbacks model.ExperimentCallbacks, ) error
Run implements model.ExperimentSession.Run
type SummaryKeys ¶
type SummaryKeys struct {
IsAnomaly bool `json:"-"`
}
SummaryKeys contains summary keys for this experiment.
Note that this structure is part of the ABI contract with probe-cli therefore we should be careful when changing it.
type TestKeys ¶
type TestKeys struct { DefaultAddrs string `json:"x_default_addrs"` Domain string `json:"domain"` HTTP3Enabled bool `json:"x_http3_enabled,omitempty"` HTTPHost string `json:"x_http_host,omitempty"` TLSServerName string `json:"x_tls_server_name,omitempty"` TLSVersion string `json:"x_tls_version,omitempty"` Bootstrap *urlgetter.TestKeys `json:"bootstrap"` BootstrapFailure *string `json:"bootstrap_failure"` Lookups map[string]urlgetter.TestKeys `json:"lookups"` }
TestKeys contains the results of the dnscheck experiment.