probe-cli

module
v3.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2021 License: BSD-3-Clause

README

OONI Probe Client Library and CLI

GoDoc Short Tests Status All Tests Status Coverage Status Go Report Card linux-debian-packages GitHub issues by-label

The next generation OONI Probe: client library and Command Line Interface.

User setup

Please, follow the instructions at ooni.org/install/cli to install ooniprobe. If we do not support your use case, please let us know.

Once ooniprobe is installed, try ooniprobe help to get interactive help.

Reporting issues

Please, report issues with this codebase at github.com/ooni/probe. Please, make sure you tag such issues using the ooni/probe-cli label.

Repository organization

Every top-level directory contains an explanatory README file.

Development setup

Be sure you have golang >= 1.16 and a C compiler (when developing for Windows, you need Mingw-w64 installed).

You need to download assets first using:

go run ./internal/cmd/getresources

Then you can build using:

go build -v ./cmd/ooniprobe

This will generate a binary called ooniprobe in the current directory.

Android bindings

./build-android.bash

We automatically build Android bindings whenever commits are pushed to the mobile-staging branch. Such builds could be integrated by using:

implementation "org.ooni:oonimkall:VERSION"

Where VERSION is like 2020.03.30-231914 corresponding to the time when the build occurred.

iOS bindings

./build-ios.bash

We automatically build iOS bindings whenever commits are pushed to the mobile-staging branch. Such builds could be integrated by using:

pod 'oonimkall', :podspec => 'https://dl.bintray.com/ooni/ios/oonimkall-VERSION.podspec'

Where VERSION is like 2020.03.30-231914 corresponding to the time when the build occurred.

Updating dependencies

go get -u -v ./... && go mod tidy

Releasing

  1. update binary data as described above;

  2. update internal/version/version.go;

  3. make sure you have updated dependencies;

  4. run ./build.sh release and follow instructions.

Directories

Path Synopsis
cmd
ooniprobe/internal/autorun
Package autorun contains code to manage automatic runs
Package autorun contains code to manage automatic runs
ooniprobe/internal/enginex
Package enginex contains ooni/probe-engine extensions.
Package enginex contains ooni/probe-engine extensions.
ooniprobe/internal/log/handlers/cli/progress
Package progress provides a simple terminal progress bar.
Package progress provides a simple terminal progress bar.
ooniprobe/internal/log/handlers/syslog
Package syslog contains a syslog handler.
Package syslog contains a syslog handler.
ooniprobe/internal/oonitest
Package oonitest contains code used for testing.
Package oonitest contains code used for testing.
internal
cmd/apitool
Command apitool is a simple tool to fetch individual OONI measurements.
Command apitool is a simple tool to fetch individual OONI measurements.
cmd/getresources
Command getresources downloads the resources
Command getresources downloads the resources
cmd/jafar
Jafar is a censorship simulation tool used for testing OONI.
Jafar is a censorship simulation tool used for testing OONI.
cmd/jafar/badproxy
Package badproxy implements misbehaving proxies.
Package badproxy implements misbehaving proxies.
cmd/jafar/flagx
Package flagx contains extensions for the standard library flag package.
Package flagx contains extensions for the standard library flag package.
cmd/jafar/httpproxy
Package httpproxy contains a censoring HTTP proxy.
Package httpproxy contains a censoring HTTP proxy.
cmd/jafar/iptables
Package iptables contains code for managing firewall rules.
Package iptables contains code for managing firewall rules.
cmd/jafar/resolver
Package resolver contains a censoring DNS resolver.
Package resolver contains a censoring DNS resolver.
cmd/jafar/tlsproxy
Package tlsproxy contains a censoring TLS proxy.
Package tlsproxy contains a censoring TLS proxy.
cmd/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.
cmd/miniooni
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.
cmd/oohelper
Command oohelper contains a simple command line client for the Web Connectivity test helper.
Command oohelper contains a simple command line client for the Web Connectivity test helper.
cmd/oohelperd
Command oohelperd contains the Web Connectivity test helper.
Command oohelperd contains the Web Connectivity test helper.
engine
Package engine contains the engine API
Package engine contains the engine API
engine/atomicx
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.
engine/experiment/dash
Package dash implements the DASH network experiment.
Package dash implements the DASH network experiment.
engine/experiment/dnscheck
Package dnscheck contains the DNS check experiment.
Package dnscheck contains the DNS check experiment.
engine/experiment/example
Package example contains a simple example experiment.
Package example contains a simple example experiment.
engine/experiment/fbmessenger
Package fbmessenger contains the Facebook Messenger network experiment.
Package fbmessenger contains the Facebook Messenger network experiment.
engine/experiment/hhfm
Package hhfm contains the HTTP Header Field Manipulation network experiment.
Package hhfm contains the HTTP Header Field Manipulation network experiment.
engine/experiment/hirl
Package hirl contains the HTTP Invalid Request Line network experiment.
Package hirl contains the HTTP Invalid Request Line network experiment.
engine/experiment/httphostheader
Package httphostheader contains the HTTP host header network experiment.
Package httphostheader contains the HTTP host header network experiment.
engine/experiment/ndt7
Package ndt7 contains the ndt7 network experiment.
Package ndt7 contains the ndt7 network experiment.
engine/experiment/psiphon
Package psiphon implements the psiphon network experiment.
Package psiphon implements the psiphon network experiment.
engine/experiment/riseupvpn
Package riseupvpn contains the RiseupVPN network experiment.
Package riseupvpn contains the RiseupVPN network experiment.
engine/experiment/run
Package run contains code to run other experiments.
Package run contains code to run other experiments.
engine/experiment/signal
Package signal contains the Signal network experiment.
Package signal contains the Signal network experiment.
engine/experiment/sniblocking
Package sniblocking contains the SNI blocking network experiment.
Package sniblocking contains the SNI blocking network experiment.
engine/experiment/stunreachability
Package stunreachability contains the STUN reachability experiment.
Package stunreachability contains the STUN reachability experiment.
engine/experiment/telegram
Package telegram contains the Telegram network experiment.
Package telegram contains the Telegram network experiment.
engine/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.
engine/experiment/tlstool/internal
Package internal contains the implementation of tlstool.
Package internal contains the implementation of tlstool.
engine/experiment/tor
Package tor contains the tor experiment.
Package tor contains the tor experiment.
engine/experiment/urlgetter
Package urlgetter implements a nettest that fetches a URL.
Package urlgetter implements a nettest that fetches a URL.
engine/experiment/webconnectivity
Package webconnectivity implements OONI's Web Connectivity experiment.
Package webconnectivity implements OONI's Web Connectivity experiment.
engine/experiment/webconnectivity/internal
Package internal contains internal code.
Package internal contains internal code.
engine/experiment/whatsapp
Package whatsapp contains the WhatsApp network experiment.
Package whatsapp contains the WhatsApp network experiment.
engine/geolocate
Package geolocate implements IP lookup, resolver lookup, and geolocation.
Package geolocate implements IP lookup, resolver lookup, and geolocation.
engine/httpheader
Package httpheader contains code to set common HTTP headers.
Package httpheader contains code to set common HTTP headers.
engine/httpx
Package httpx contains http extensions.
Package httpx contains http extensions.
engine/humanizex
Package humanizex is like dustin/go-humanize
Package humanizex is like dustin/go-humanize
engine/internal/fsx
Package fsx contains file system extension
Package fsx contains file system extension
engine/internal/httpfailure
Package httpfailure groups a bunch of extra HTTP failures.
Package httpfailure groups a bunch of extra HTTP failures.
engine/internal/mlablocate
Package mlablocate contains a locate.measurementlab.net client.
Package mlablocate contains a locate.measurementlab.net client.
engine/internal/mlablocatev2
Package mlablocatev2 use m-lab locate services API v2.
Package mlablocatev2 use m-lab locate services API v2.
engine/internal/mockable
Package mockable contains mockable objects
Package mockable contains mockable objects
engine/internal/multierror
Package multierror contains code to manage multiple errors.
Package multierror contains code to manage multiple errors.
engine/internal/platform
Package platform returns the platform name.
Package platform returns the platform name.
engine/internal/psiphonx
Package psiphonx is a wrapper around the psiphon-tunnel-core.
Package psiphonx is a wrapper around the psiphon-tunnel-core.
engine/internal/randx
Package randx contains math/rand extensions
Package randx contains math/rand extensions
engine/internal/sessionresolver
Package sessionresolver contains the resolver used by the session.
Package sessionresolver contains the resolver used by the session.
engine/internal/tlsx
Package tlsx contains TLS extensions
Package tlsx contains TLS extensions
engine/internal/torx
Package torx contains code to control tor.
Package torx contains code to control tor.
engine/internal/tunnel
Package tunnel contains code to create a psiphon or tor tunnel.
Package tunnel contains code to create a psiphon or tor tunnel.
engine/kvstore
Package kvstore contains key-value stores
Package kvstore contains key-value stores
engine/legacy/netx
Package netx contains OONI's net extensions.
Package netx contains OONI's net extensions.
engine/legacy/netx/connid
Package connid contains code to generate the connectionID
Package connid contains code to generate the connectionID
engine/legacy/netx/handlers
Package handlers contains default modelx.Handler handlers.
Package handlers contains default modelx.Handler handlers.
engine/legacy/netx/modelx
Package modelx contains the data modelx.
Package modelx contains the data modelx.
engine/legacy/netx/oldhttptransport
Package oldhttptransport contains HTTP transport extensions.
Package oldhttptransport contains HTTP transport extensions.
engine/legacy/netx/transactionid
Package transactionid contains code to share the transactionID
Package transactionid contains code to share the transactionID
engine/legacy/netxlogger
Package netxlogger is a logger for netx events.
Package netxlogger is a logger for netx events.
engine/legacy/oonidatamodel
Package oonidatamodel contains the OONI data model.
Package oonidatamodel contains the OONI data model.
engine/legacy/oonitemplates
Package oonitemplates contains templates for experiments.
Package oonitemplates contains templates for experiments.
engine/model
Package model defines shared data structures and interfaces.
Package model defines shared data structures and interfaces.
engine/netx
Package netx contains code to perform network measurements.
Package netx contains code to perform network measurements.
engine/netx/archival
Package archival contains data formats used for archival.
Package archival contains data formats used for archival.
engine/netx/errorx
Package errorx contains error extensions
Package errorx contains error extensions
engine/netx/httptransport
Package httptransport contains HTTP transport extensions.
Package httptransport contains HTTP transport extensions.
engine/netx/selfcensor
Package selfcensor contains code that triggers censorship.
Package selfcensor contains code that triggers censorship.
engine/ooapi
Package ooapi contains clients for the OONI API.
Package ooapi contains clients for the OONI API.
engine/ooapi/apimodel
Package apimodel describes the data types used by OONI's API.
Package apimodel describes the data types used by OONI's API.
engine/ooapi/internal/generator
Command generator generates code in the ooapi package.
Command generator generates code in the ooapi package.
engine/ooapi/internal/openapi
Package openapi contains data structures for Swagger v2.0.
Package openapi contains data structures for Swagger v2.0.
engine/probeservices
Package probeservices contains code to contact OONI probe services.
Package probeservices contains code to contact OONI probe services.
engine/probeservices/testorchestra
Package testorchestra helps with testing the OONI orchestra API.
Package testorchestra helps with testing the OONI orchestra API.
engine/resources
Package resources contains info on resources.
Package resources contains info on resources.
engine/resourcesmanager
Package resourcesmanager contains the resources manager.
Package resourcesmanager contains the resources manager.
engine/runtimex
Package runtimex contains runtime extensions.
Package runtimex contains runtime extensions.
engine/shellx
Package shellx contains utilities to run external commands.
Package shellx contains utilities to run external commands.
libminiooni
Package libminiooni implements the cmd/miniooni CLI.
Package libminiooni implements the cmd/miniooni CLI.
version
Package version contains version information
Package version contains version information
pkg
oonimkall
Package oonimkall implements APIs used by OONI mobile apps.
Package oonimkall implements APIs used by OONI mobile apps.
oonimkall/internal/tasks
Package tasks implements tasks run using the oonimkall API.
Package tasks implements tasks run using the oonimkall API.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL