Documentation
¶
Overview ¶
Package engine contains the engine API
Index ¶
- Constants
- Variables
- func AllExperiments() []string
- type Experiment
- func (e *Experiment) CloseReport() (err error)
- func (e *Experiment) KibiBytesReceived() float64
- func (e *Experiment) KibiBytesSent() float64
- func (e *Experiment) LoadMeasurement(data []byte) (*model.Measurement, error)
- func (e *Experiment) Measure(input string) (*model.Measurement, error)
- func (e *Experiment) MeasureWithContext(ctx context.Context, input string) (measurement *model.Measurement, err error)
- func (e *Experiment) Name() string
- func (e *Experiment) OpenReport() (err error)
- func (e *Experiment) ReportID() string
- func (e *Experiment) SaveMeasurement(measurement *model.Measurement, filePath string) error
- func (e *Experiment) SubmitAndUpdateMeasurement(measurement *model.Measurement) error
- type ExperimentBuilder
- func (b *ExperimentBuilder) InputPolicy() InputPolicy
- func (b *ExperimentBuilder) Interruptible() bool
- func (b *ExperimentBuilder) NewExperiment() *Experiment
- func (b *ExperimentBuilder) Options() (map[string]OptionInfo, error)
- func (b *ExperimentBuilder) SetCallbacks(callbacks model.ExperimentCallbacks)
- func (b *ExperimentBuilder) SetOptionBool(key string, value bool) error
- func (b *ExperimentBuilder) SetOptionInt(key string, value int64) error
- func (b *ExperimentBuilder) SetOptionString(key, value string) error
- type FileSystemKVStore
- type InputPolicy
- type KVStore
- type OptionInfo
- type Session
- func (s *Session) ASNDatabasePath() string
- func (s *Session) Close() error
- func (s *Session) CountryDatabasePath() string
- func (s *Session) DefaultHTTPClient() *http.Client
- func (s *Session) GetTestHelpersByName(name string) ([]model.Service, bool)
- func (s *Session) KeyValueStore() model.KeyValueStore
- func (s *Session) KibiBytesReceived() float64
- func (s *Session) KibiBytesSent() float64
- func (s *Session) Logger() model.Logger
- func (s *Session) LookupLocationContext(ctx context.Context) (out *model.LocationInfo, err error)
- func (s *Session) MaybeLookupBackends() error
- func (s *Session) MaybeLookupLocation() error
- func (s *Session) MaybeLookupLocationContext(ctx context.Context) error
- func (s *Session) MaybeProbeASN() uint
- func (s *Session) MaybeProbeASNString() string
- func (s *Session) MaybeProbeCC() string
- func (s *Session) MaybeProbeIP() string
- func (s *Session) MaybeProbeNetworkName() string
- func (s *Session) MaybeResolverASN() uint
- func (s *Session) MaybeResolverASNString() string
- func (s *Session) MaybeResolverIP() string
- func (s *Session) MaybeResolverNetworkName() string
- func (s *Session) MaybeStartTunnel(ctx context.Context, name string) error
- func (s *Session) MaybeUpdateResources(ctx context.Context) error
- func (s *Session) NewExperimentBuilder(name string) (*ExperimentBuilder, error)
- func (s *Session) NewOrchestraClient(ctx context.Context) (model.ExperimentOrchestraClient, error)
- func (s *Session) NewProbeServicesClient(ctx context.Context) (*probeservices.Client, error)
- func (s *Session) Platform() string
- func (s *Session) ProbeASN() uint
- func (s *Session) ProbeASNString() string
- func (s *Session) ProbeCC() string
- func (s *Session) ProbeIP() string
- func (s *Session) ProbeNetworkName() string
- func (s *Session) ProxyURL() *url.URL
- func (s *Session) QueryTestListsURLs(conf *TestListsURLsConfig) (*TestListsURLsResult, error)
- func (s *Session) ResolverASN() uint
- func (s *Session) ResolverASNString() string
- func (s *Session) ResolverIP() string
- func (s *Session) ResolverNetworkName() string
- func (s *Session) SoftwareName() string
- func (s *Session) SoftwareVersion() string
- func (s *Session) TempDir() string
- func (s *Session) TorArgs() []string
- func (s *Session) TorBinary() string
- func (s *Session) TunnelBootstrapTime() time.Duration
- func (s *Session) UserAgent() (useragent string)
- type SessionConfig
- type TestListsURLsConfig
- type TestListsURLsResult
Constants ¶
const ( // InputRequired indicates that the experiment requires // external input to run. If this input is not provided to // the experiment, it will not know what to do. InputRequired = InputPolicy("required") // InputOptional indicates that the experiment handles input, // if any; otherwise it fetchs input/uses a default. InputOptional = InputPolicy("optional") // InputNone indicates that the experiment does not want any // input and ignores the input if provided with it. InputNone = InputPolicy("none") )
const Version = "0.20.2"
Version is the version of the engine
Variables ¶
var ErrAllProbeServicesFailed = errors.New("all available probe services failed")
ErrAllProbeServicesFailed indicates all probe services failed.
var ErrAlreadyUsingProxy = errors.New(
"session: cannot create a new tunnel of this kind: we are already using a proxy",
)
ErrAlreadyUsingProxy indicates that we cannot create a tunnel with a specific name because we already configured a proxy.
Functions ¶
func AllExperiments ¶
func AllExperiments() []string
AllExperiments returns the name of all experiments
Types ¶
type Experiment ¶
type Experiment struct {
// contains filtered or unexported fields
}
Experiment is an experiment instance.
func NewExperiment ¶ added in v0.8.0
func NewExperiment(sess *Session, measurer model.ExperimentMeasurer) *Experiment
NewExperiment creates a new experiment given a measurer. The preferred way to create an experiment is the ExperimentBuilder. Though this function allows the programmer to create a custom, external experiment.
func (*Experiment) CloseReport ¶
func (e *Experiment) CloseReport() (err error)
CloseReport is an idempotent method that closes an open report if one has previously been opened, otherwise it does nothing.
func (*Experiment) KibiBytesReceived ¶ added in v0.9.0
func (e *Experiment) KibiBytesReceived() float64
KibiBytesReceived accounts for the KibiBytes received by the HTTP clients managed by this session so far, including experiments.
func (*Experiment) KibiBytesSent ¶ added in v0.9.0
func (e *Experiment) KibiBytesSent() float64
KibiBytesSent is like KibiBytesReceived but for the bytes sent.
func (*Experiment) LoadMeasurement ¶
func (e *Experiment) LoadMeasurement(data []byte) (*model.Measurement, error)
LoadMeasurement loads a measurement from a byte stream. The measurement must be a measurement for this experiment.
func (*Experiment) Measure ¶
func (e *Experiment) Measure(input string) (*model.Measurement, error)
Measure performs a measurement with input. We assume that you have configured the available test helpers, either manually or by calling the session's MaybeLookupBackends() method.
func (*Experiment) MeasureWithContext ¶ added in v0.9.0
func (e *Experiment) MeasureWithContext( ctx context.Context, input string, ) (measurement *model.Measurement, err error)
MeasureWithContext is like Measure but with context.
func (*Experiment) OpenReport ¶
func (e *Experiment) OpenReport() (err error)
OpenReport is an idempotent method to open a report. We assume that you have configured the available probe services, either manually or through using the session's MaybeLookupBackends method.
func (*Experiment) ReportID ¶
func (e *Experiment) ReportID() string
ReportID returns the open reportID, if we have opened a report successfully before, or an empty string, otherwise.
func (*Experiment) SaveMeasurement ¶
func (e *Experiment) SaveMeasurement(measurement *model.Measurement, filePath string) error
SaveMeasurement saves a measurement on the specified file path.
func (*Experiment) SubmitAndUpdateMeasurement ¶
func (e *Experiment) SubmitAndUpdateMeasurement(measurement *model.Measurement) error
SubmitAndUpdateMeasurement submits a measurement and updates the fields whose value has changed as part of the submission.
type ExperimentBuilder ¶
type ExperimentBuilder struct {
// contains filtered or unexported fields
}
ExperimentBuilder is an experiment builder.
func (*ExperimentBuilder) InputPolicy ¶ added in v0.11.0
func (b *ExperimentBuilder) InputPolicy() InputPolicy
InputPolicy returns the experiment input policy
func (*ExperimentBuilder) Interruptible ¶ added in v0.9.0
func (b *ExperimentBuilder) Interruptible() bool
Interruptible tells you whether this is an interruptible experiment. This kind of experiments (e.g. ndt7) may be interrupted mid way.
func (*ExperimentBuilder) NewExperiment ¶ added in v0.8.0
func (b *ExperimentBuilder) NewExperiment() *Experiment
NewExperiment creates the experiment
func (*ExperimentBuilder) Options ¶
func (b *ExperimentBuilder) Options() (map[string]OptionInfo, error)
Options returns info about all options
func (*ExperimentBuilder) SetCallbacks ¶
func (b *ExperimentBuilder) SetCallbacks(callbacks model.ExperimentCallbacks)
SetCallbacks sets the interactive callbacks
func (*ExperimentBuilder) SetOptionBool ¶
func (b *ExperimentBuilder) SetOptionBool(key string, value bool) error
SetOptionBool sets a bool option
func (*ExperimentBuilder) SetOptionInt ¶
func (b *ExperimentBuilder) SetOptionInt(key string, value int64) error
SetOptionInt sets an int option
func (*ExperimentBuilder) SetOptionString ¶
func (b *ExperimentBuilder) SetOptionString(key, value string) error
SetOptionString sets a string option
type FileSystemKVStore ¶ added in v0.4.0
type FileSystemKVStore struct {
// contains filtered or unexported fields
}
FileSystemKVStore is a directory based KVStore
func NewFileSystemKVStore ¶ added in v0.4.0
func NewFileSystemKVStore(basedir string) (kvs *FileSystemKVStore, err error)
NewFileSystemKVStore creates a new FileSystemKVStore.
type InputPolicy ¶ added in v0.11.0
type InputPolicy string
InputPolicy describes the experiment policy with respect to input. That is whether it requires input, optionally accepts input, does not want input.
type KVStore ¶ added in v0.4.0
type KVStore interface {
Get(key string) (value []byte, err error)
Set(key string, value []byte) (err error)
}
KVStore is a simple, atomic key-value store. The user of probe-engine should supply an implementation of this interface, which will be used by probe-engine to store specific data.
type OptionInfo ¶
OptionInfo contains info about an option
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
Session is a measurement session
func NewSession ¶
func NewSession(config SessionConfig) (*Session, error)
NewSession creates a new session or returns an error
func (*Session) ASNDatabasePath ¶ added in v0.8.0
ASNDatabasePath returns the path where the ASN database path should be if you have called s.FetchResourcesIdempotent.
func (*Session) Close ¶ added in v0.8.0
Close ensures that we close all the idle connections that the HTTP clients we are currently using may have created. It will also remove the temp dir that contains data from this session. Not calling this function may likely cause memory leaks in your application because of open idle connections, as well as excessive usage of disk space.
func (*Session) CountryDatabasePath ¶ added in v0.8.0
CountryDatabasePath is like ASNDatabasePath but for the country DB path.
func (*Session) DefaultHTTPClient ¶ added in v0.8.0
DefaultHTTPClient returns the session's default HTTP client.
func (*Session) GetTestHelpersByName ¶ added in v0.8.0
GetTestHelpersByName returns the available test helpers that use the specified name, or false if there's none.
func (*Session) KeyValueStore ¶ added in v0.14.0
func (s *Session) KeyValueStore() model.KeyValueStore
KeyValueStore returns the configured key-value store.
func (*Session) KibiBytesReceived ¶ added in v0.9.0
KibiBytesReceived accounts for the KibiBytes received by the HTTP clients managed by this session so far, including experiments.
func (*Session) KibiBytesSent ¶ added in v0.9.0
KibiBytesSent is like KibiBytesReceived but for the bytes sent.
func (*Session) LookupLocationContext ¶ added in v0.20.0
LookupLocationContext performs a location lookup. If you want memoisation of the results, you should use MaybeLookupLocationContext.
func (*Session) MaybeLookupBackends ¶
MaybeLookupBackends is a caching OONI backends lookup call.
func (*Session) MaybeLookupLocation ¶
MaybeLookupLocation is a caching location lookup call.
func (*Session) MaybeLookupLocationContext ¶ added in v0.20.0
MaybeLookupLocationContext is like MaybeLookupLocation but with a context that can be used to interrupt this long running operation.
func (*Session) MaybeProbeASN ¶ added in v0.20.0
MaybeProbeASN is like ProbeASN except that we return the real value only if the privacy settings allows us. Otherwise, we just return the default value, model.DefaultProbeASN.
func (*Session) MaybeProbeASNString ¶ added in v0.20.0
MaybeProbeASNString is like ProbeASNString except that we return the real value only if the privacy settings allows us. Otherwise, we just return the default value, model.DefaultProbeASNString.
func (*Session) MaybeProbeCC ¶ added in v0.20.0
MaybeProbeCC is like ProbeCC except that we return the real value only if the privacy settings allows us. Otherwise, we just return the default value, model.DefaultProbeCC.
func (*Session) MaybeProbeIP ¶ added in v0.20.0
MaybeProbeIP is like ProbeIP except that we return the real value only if the privacy settings allows us. Otherwise, we just return the default value, model.DefaultProbeIP.
func (*Session) MaybeProbeNetworkName ¶ added in v0.20.0
MaybeProbeNetworkName is like ProbeNetworkName except that we return the real value only if the privacy settings allows us. Otherwise, we just return the default value, model.DefaultProbeNetworkName.
func (*Session) MaybeResolverASN ¶ added in v0.20.0
MaybeResolverASN is like ResolverASN except that we return the real value only if the privacy settings allows us. Otherwise, we just return the default value, model.DefaultResolverASN.
func (*Session) MaybeResolverASNString ¶ added in v0.20.0
MaybeResolverASNString is like ResolverASNString except that we return the real value only if the privacy settings allows us. Otherwise, we just return the default value, model.DefaultResolverASNString.
func (*Session) MaybeResolverIP ¶ added in v0.20.0
MaybeResolverIP is like ResolverIP except that we return the real value only if the privacy settings allows us. Otherwise, we just return the default value, model.DefaultResolverIP.
func (*Session) MaybeResolverNetworkName ¶ added in v0.20.0
MaybeResolverNetworkName is like ResolverNetworkName except that we return the real value only if the privacy settings allows us. Otherwise, we just return the default value, model.DefaultResolverNetworkName.
func (*Session) MaybeStartTunnel ¶ added in v0.10.0
MaybeStartTunnel starts the requested tunnel.
This function silently succeeds if we're already using a tunnel with the same name or if the requested tunnel name is the empty string. This function fails, tho, when we already have a proxy or a tunnel with another name and we try to open a tunnel. This function of course also fails if we cannot start the requested tunnel. All in all, if you request for a tunnel name that is not the empty string and you get a nil error, you can be confident that session.ProxyURL() gives you the tunnel URL.
The tunnel will be closed by session.Close().
func (*Session) MaybeUpdateResources ¶ added in v0.20.0
MaybeUpdateResources updates the resources if needed.
func (*Session) NewExperimentBuilder ¶
func (s *Session) NewExperimentBuilder(name string) (*ExperimentBuilder, error)
NewExperimentBuilder returns a new experiment builder for the experiment with the given name, or an error if there's no such experiment with the given name
func (*Session) NewOrchestraClient ¶ added in v0.8.0
NewOrchestraClient creates a new orchestra client. This client is registered and logged in with the OONI orchestra. An error is returned on failure.
func (*Session) NewProbeServicesClient ¶ added in v0.20.0
NewProbeServicesClient creates a new client for talking with the OONI probe services. This function will benchmark the available probe services, and select the fastest. In case all probe services seem to be down, we try again applying circumvention tactics.
func (*Session) Platform ¶ added in v0.3.0
Platform returns the current platform. The platform is one of:
- android - ios - linux - macos - windows - unknown
When running on the iOS simulator, the returned platform is macos rather than ios if CGO is disabled. This is a known issue, that however should have a very limited impact.
func (*Session) ProbeASNString ¶
ProbeASNString returns the probe ASN as a string.
func (*Session) ProbeNetworkName ¶
ProbeNetworkName returns the probe network name.
func (*Session) QueryTestListsURLs ¶ added in v0.3.0
func (s *Session) QueryTestListsURLs(conf *TestListsURLsConfig) (*TestListsURLsResult, error)
QueryTestListsURLs queries the test-lists/urls API.
This function is deprecated and will be removed in the future. Please create and use a new orchestra client using the session instead.
func (*Session) ResolverASN ¶ added in v0.5.0
ResolverASN returns the resolver ASN
func (*Session) ResolverASNString ¶ added in v0.5.0
ResolverASNString returns the resolver ASN as a string
func (*Session) ResolverIP ¶
ResolverIP returns the resolver IP
func (*Session) ResolverNetworkName ¶ added in v0.5.0
ResolverNetworkName returns the resolver network name.
func (*Session) SoftwareName ¶ added in v0.8.0
SoftwareName returns the application name.
func (*Session) SoftwareVersion ¶ added in v0.8.0
SoftwareVersion returns the application version.
func (*Session) TorArgs ¶ added in v0.11.0
TorArgs returns the configured extra args for the tor binary. If not set we will not pass in any extra arg. Applies to `-OTunnel=tor` mainly.
func (*Session) TorBinary ¶ added in v0.11.0
TorBinary returns the configured path to the tor binary. If not set we will attempt to use "tor". Applies to `-OTunnel=tor` mainly.
func (*Session) TunnelBootstrapTime ¶ added in v0.10.0
TunnelBootstrapTime returns the time required to bootstrap the tunnel we're using, or zero if we're using no tunnel.
type SessionConfig ¶
type SessionConfig struct {
AssetsDir string
AvailableProbeServices []model.Service
KVStore KVStore
Logger model.Logger
PrivacySettings model.PrivacySettings
ProxyURL *url.URL
SoftwareName string
SoftwareVersion string
TempDir string
TorArgs []string
TorBinary string
}
SessionConfig contains the Session config
type TestListsURLsConfig ¶ added in v0.3.0
type TestListsURLsConfig struct {
BaseURL string // URL to use (empty means default)
Categories []string // Categories to query for (empty means all)
Limit int64 // Max number of URLs (<= 0 means no limit)
}
TestListsURLsConfig config config for test-lists/urls API.
This structure is deprecated and will be removed in the future.
func (*TestListsURLsConfig) AddCategory ¶ added in v0.3.0
func (c *TestListsURLsConfig) AddCategory(s string)
AddCategory adds a category to the list of categories to query. Not adding any categories will query for URLs in all categories.
This function is deprecated and will be removed in the future.
type TestListsURLsResult ¶ added in v0.3.0
TestListsURLsResult contains the results of calling the test-lists/urls OONI orchestra API.
This structure is deprecated and will be removed in the future.
func (*TestListsURLsResult) At ¶ added in v0.3.0
func (r *TestListsURLsResult) At(idx int64) (out *model.URLInfo)
At returns the URL at the given index or nil
This function is deprecated and will be removed in the future.
func (*TestListsURLsResult) Count ¶ added in v0.3.0
func (r *TestListsURLsResult) Count() int64
Count returns the number of returned URLs
This function is deprecated and will be removed in the future.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package atomicx contains atomic int64/float64 that work also on 32 bit platforms.
|
Package atomicx contains atomic int64/float64 that work also on 32 bit platforms. |
|
cmd
|
|
|
jafar
command
Jafar is a censorship simulation tool used for testing OONI.
|
Jafar is a censorship simulation tool used for testing OONI. |
|
jafar/badproxy
Package badproxy implements misbehaving proxies.
|
Package badproxy implements misbehaving proxies. |
|
jafar/flagx
Package flagx contains extensions for the standard library flag package.
|
Package flagx contains extensions for the standard library flag package. |
|
jafar/httpproxy
Package httpproxy contains a censoring HTTP proxy.
|
Package httpproxy contains a censoring HTTP proxy. |
|
jafar/iptables
Package iptables contains code for managing firewall rules.
|
Package iptables contains code for managing firewall rules. |
|
jafar/resolver
Package resolver contains a censoring DNS resolver.
|
Package resolver contains a censoring DNS resolver. |
|
jafar/shellx
Package shellx contains utilities to run external commands.
|
Package shellx contains utilities to run external commands. |
|
jafar/tlsproxy
Package tlsproxy contains a censoring TLS proxy.
|
Package tlsproxy contains a censoring TLS proxy. |
|
jafar/uncensored
Package uncensored contains code used by Jafar to evade its own censorship efforts by taking alternate routes.
|
Package uncensored contains code used by Jafar to evade its own censorship efforts by taking alternate routes. |
|
miniooni
command
Command miniooni is a simple binary for research and QA purposes with a CLI interface similar to MK and OONI Probe v2.x.
|
Command miniooni is a simple binary for research and QA purposes with a CLI interface similar to MK and OONI Probe v2.x. |
|
experiment
|
|
|
dash
Package dash implements the DASH network experiment.
|
Package dash implements the DASH network experiment. |
|
dnscheck
Package dnscheck contains the DNS check experiment.
|
Package dnscheck contains the DNS check experiment. |
|
example
Package example contains a simple example experiment.
|
Package example contains a simple example experiment. |
|
fbmessenger
Package fbmessenger contains the Facebook Messenger network experiment.
|
Package fbmessenger contains the Facebook Messenger network experiment. |
|
hhfm
Package hhfm contains the HTTP Header Field Manipulation network experiment.
|
Package hhfm contains the HTTP Header Field Manipulation network experiment. |
|
hirl
Package hirl contains the HTTP Invalid Request Line network experiment.
|
Package hirl contains the HTTP Invalid Request Line network experiment. |
|
httphostheader
Package httphostheader contains the HTTP host header network experiment.
|
Package httphostheader contains the HTTP host header network experiment. |
|
ndt7
Package ndt7 contains the ndt7 network experiment.
|
Package ndt7 contains the ndt7 network experiment. |
|
psiphon
Package psiphon implements the psiphon network experiment.
|
Package psiphon implements the psiphon network experiment. |
|
riseupvpn
Package riseupvpn contains the RiseupVPN network experiment.
|
Package riseupvpn contains the RiseupVPN network experiment. |
|
sniblocking
Package sniblocking contains the SNI blocking network experiment.
|
Package sniblocking contains the SNI blocking network experiment. |
|
stunreachability
Package stunreachability contains the STUN reachability experiment.
|
Package stunreachability contains the STUN reachability experiment. |
|
telegram
Package telegram contains the Telegram network experiment.
|
Package telegram contains the Telegram network experiment. |
|
tlstool
Package tlstool contains a TLS tool that we are currently using for running quick and dirty experiments.
|
Package tlstool contains a TLS tool that we are currently using for running quick and dirty experiments. |
|
tlstool/internal
Package internal contains the implementation of tlstool.
|
Package internal contains the implementation of tlstool. |
|
tor
Package tor contains the tor experiment.
|
Package tor contains the tor experiment. |
|
urlgetter
Package urlgetter implements a nettest that fetches a URL.
|
Package urlgetter implements a nettest that fetches a URL. |
|
webconnectivity
Package webconnectivity implements OONI's Web Connectivity experiment.
|
Package webconnectivity implements OONI's Web Connectivity experiment. |
|
webconnectivity/internal
Package internal contains internal code.
|
Package internal contains internal code. |
|
whatsapp
Package whatsapp contains the WhatsApp network experiment.
|
Package whatsapp contains the WhatsApp network experiment. |
|
Package geolocate implements IP lookup, resolver lookup, and GeoIP location an OONI Probe instance.
|
Package geolocate implements IP lookup, resolver lookup, and GeoIP location an OONI Probe instance. |
|
internal
|
|
|
fsx
Package fsx contains file system extension
|
Package fsx contains file system extension |
|
httpfailure
Package httpfailure groups a bunch of extra HTTP failures.
|
Package httpfailure groups a bunch of extra HTTP failures. |
|
httpheader
Package httpheader contains code to set common HTTP headers.
|
Package httpheader contains code to set common HTTP headers. |
|
httpx
Package httpx contains http extensions.
|
Package httpx contains http extensions. |
|
humanizex
Package humanizex is like dustin/go-humanize
|
Package humanizex is like dustin/go-humanize |
|
kvstore
Package kvstore contains key-value stores
|
Package kvstore contains key-value stores |
|
mlablocate
Package mlablocate contains a locate.measurementlab.net client.
|
Package mlablocate contains a locate.measurementlab.net client. |
|
mlablocatev2
Package mlablocatev2 use m-lab locate services API v2.
|
Package mlablocatev2 use m-lab locate services API v2. |
|
mockable
Package mockable contains mockable objects
|
Package mockable contains mockable objects |
|
multierror
Package multierror contains code to manage multiple errors.
|
Package multierror contains code to manage multiple errors. |
|
platform
Package platform returns the platform name.
|
Package platform returns the platform name. |
|
psiphonx
Package psiphonx is a wrapper around the psiphon-tunnel-core.
|
Package psiphonx is a wrapper around the psiphon-tunnel-core. |
|
randx
Package randx contains math/rand extensions
|
Package randx contains math/rand extensions |
|
runtimex
Package runtimex contains runtime extensions.
|
Package runtimex contains runtime extensions. |
|
sessionresolver
Package sessionresolver contains the resolver used by the session.
|
Package sessionresolver contains the resolver used by the session. |
|
tlsx
Package tlsx contains TLS extensions
|
Package tlsx contains TLS extensions |
|
torx
Package torx contains code to control tor.
|
Package torx contains code to control tor. |
|
legacy
|
|
|
netx
Package netx contains OONI's net extensions.
|
Package netx contains OONI's net extensions. |
|
netx/connid
Package connid contains code to generate the connectionID
|
Package connid contains code to generate the connectionID |
|
netx/handlers
Package handlers contains default modelx.Handler handlers.
|
Package handlers contains default modelx.Handler handlers. |
|
netx/modelx
Package modelx contains the data modelx.
|
Package modelx contains the data modelx. |
|
netx/oldhttptransport
Package oldhttptransport contains HTTP transport extensions.
|
Package oldhttptransport contains HTTP transport extensions. |
|
netx/transactionid
Package transactionid contains code to share the transactionID
|
Package transactionid contains code to share the transactionID |
|
netxlogger
Package netxlogger is a logger for netx events.
|
Package netxlogger is a logger for netx events. |
|
oonidatamodel
Package oonidatamodel contains the OONI data model.
|
Package oonidatamodel contains the OONI data model. |
|
oonitemplates
Package oonitemplates contains templates for experiments.
|
Package oonitemplates contains templates for experiments. |
|
Package libminiooni implements the cmd/miniooni CLI.
|
Package libminiooni implements the cmd/miniooni CLI. |
|
Package model defines shared data structures and interfaces.
|
Package model defines shared data structures and interfaces. |
|
Package netx contains code to perform network measurements.
|
Package netx contains code to perform network measurements. |
|
archival
Package archival contains data formats used for archival.
|
Package archival contains data formats used for archival. |
|
errorx
Package errorx contains error extensions
|
Package errorx contains error extensions |
|
httptransport
Package httptransport contains HTTP transport extensions.
|
Package httptransport contains HTTP transport extensions. |
|
selfcensor
Package selfcensor contains code that triggers censorship.
|
Package selfcensor contains code that triggers censorship. |
|
Package oonimkall implements APIs used by OONI mobile apps.
|
Package oonimkall implements APIs used by OONI mobile apps. |
|
tasks
Package tasks implements tasks run using the oonimkall API.
|
Package tasks implements tasks run using the oonimkall API. |
|
Package probeservices contains code to contact OONI probe services.
|
Package probeservices contains code to contact OONI probe services. |
|
testorchestra
Package testorchestra helps with testing the OONI orchestra API.
|
Package testorchestra helps with testing the OONI orchestra API. |
|
Package resources contains code to download resources.
|
Package resources contains code to download resources. |