• Stars
    star
    234
  • Rank 171,593 (Top 4 %)
  • Language
    Go
  • License
    GNU General Publi...
  • Created over 6 years ago
  • Updated 18 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

OONI Probe Engine and CLI

OONI Probe Android

GoDoc Coverage Status Slack

OONI Probe Measurement Engine and CLI

Install instructions ยป

User guide ยท API docs ยท Report bug ยท Request feature

Table of Contents
  1. About this project
  2. Install instructions
  3. Build instructions
  4. Contributing
  5. License
  6. Updating dependencies
  7. Releasing
  8. Semantic versioning policy

About this project

The Open Observatory of Network Interference (OONI) is a non-profit free software project that aims to empower decentralized efforts in documenting Internet censorship around the world.

This repository contains the following Go packages:

  1. the command line client (cmd/ooniprobe);

  2. the test helper server (internal/cmd/oohelperd);

  3. the mobile library (pkg/oonimkall);

  4. the measurement-engine library (internal).

Every top-level directory in this repository contains an explanatory README file.

Install instructions

Follow the instructions at ooni.org/install/cli to install ooniprobe precompiled binaries for Windows, macOS, and Debian/Ubuntu. Once ooniprobe is installed, refer to the user guide.

Developer instructions

This repository requires exactly the Go version mentioned by the GOVERSION file. Using a different version of Go may work as intended but is not recommended: we depend on packages forked from the standard library; so, it is more robust to use the same version of Go from which we forked those packages from.

You will also need a C compiler. On Linux and other Unix systems both GCC and Clang will work. If you're using Windows, we recommend installing Ubuntu or Debian on the Windows Subsystem for Linux. If you're targeting Windows, you should also install the mingw-w64 cross-compiler.

Debian developer setup

The following commands show how to setup a development environment using Debian 12 ("bookworm"). The same instructions should also work for Debian-based distribution (e.g., Ubuntu).

# install the compilers, git, and the root CA
sudo apt install golang build-essential ca-certificates git

# [optional] install mingw-w64 if you're targeting windows
sudo apt install mingw-w64

# install the required go version binary
go install -v golang.org/dl/go1.20.5@latest

# fetch the whole go distribution
$HOME/go/bin/go1.20.5 download

Fedora developer setup

The following commands show how to setup a development environment using Fedora.

# install the compilers and git
sudo dnf install golang make gcc gcc-c++ git

# [optional] install mingw-w64 if you're targeting windows
sudo dnf install mingw64-gcc mingw64-gcc-c++

# install the required go version binary
go install -v golang.org/dl/go1.20.5@latest

# fetch the whole go distribution
$HOME/go/bin/go1.20.5 download

macOS developer setup

The following commands show how to setup a development environment using macOS. We assume you have already installed Homebrew, which should also install the Xcode command line tools.

Then, you need to follow these instructions:

# install the compiler
brew install go

# install the required go version binary
go install -v golang.org/dl/go1.20.5@latest

# fetch the whole go distribution
$HOME/go/bin/go1.20.5 download

Build instructions

Once you have installed the correct Go version and a C compiler, you can compile ooniprobe using:

$HOME/go/bin/go1.20.5 build -v -ldflags '-s -w' ./cmd/ooniprobe

This command will generate a stripped binary called ooniprobe in the toplevel directory.

Likewise, you can compile miniooni using:

$HOME/go/bin/go1.20.5 build -v -ldflags '-s -w' ./internal/cmd/miniooni

This command will generate a stripped binary called miniooni in the toplevel directory.

And oohelperd using:

$HOME/go/bin/go1.20.5 build -v -ldflags '-s -w' ./internal/cmd/oohelperd

This command will generate a stripped binary called oohelperd in the toplevel directory.

Contributing

Please, see CONTRIBUTING.md.

License

SPDX-License-Identifier: GPL-3.0-or-later

Updating dependencies

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

Releasing

Create an issue according to the routine release template and perform any item inside the check-list.

We build releases using Makefile, which requires GNU make. Run make help for detailed usage.

Semantic versioning policy

The mobile library is a public package for technical reasons. Go mobile tools require a public package to build from. Yet, we don't consider API breakages happening in such a package to be sufficient to bump our major version number. For us, the mobile library is just a mean to implement OONI Probe Android and OONI Probe iOS. We'll only bump the major version number if we change ./cmd/ooniprobe's CLI.

More Repositories

1

probe

OONI Probe network measurement tool for detecting internet censorship
760
star
2

probe-android

OONI Probe Android
Java
181
star
3

spec

OONI Specifications
159
star
4

ooni.org

The ooni.org homepage and all cross organisational issues
HTML
76
star
5

probe-desktop

The next generation OONI Probe desktop app
JavaScript
76
star
6

explorer

OONI Explorer: uncover evidence of internet censorship worldwide
JavaScript
74
star
7

probe-ios

OONI Probe iOS
Objective-C
68
star
8

oohttp

Fork of Go stdlib's net/http that works with alternative TLS libraries like refraction-networking/utls.
Go
65
star
9

sysadmin

System administration tools
Jinja
59
star
10

backend

Everything related to OONI backend infrastructure: ooni/api, ooni/pipeline, ooni/sysadmin, collector, bouncers and test-helpers
Python
51
star
11

probe-engine

Semi-automatic export of https://github.com/ooni/probe-cli internals
Go
45
star
12

pipeline

OONI data processing pipeline
Python
40
star
13

minivpn

A minimalistic OpenVPN implementation in Go
Go
40
star
14

EvilGenius

Evil Genius plays the role of the Descartes demon, creating a distorted view of the internet with censorship (it's a censorship simulator)
Python
38
star
15

explorer-legacy

[DEPRECATED] For the latest OONI Explorer see: https://github.com/ooni/explorer
JavaScript
33
star
16

utls-light

Minimal version of utls for parrotting the TLS handshake of popular web browsers
Go
25
star
17

api

OONI Measurements API
Python
22
star
18

probe-legacy

The legacy python version of OONI Probe
Python
22
star
19

license

OONI License
19
star
20

design-system

OONI Components design system
TypeScript
14
star
21

run

OONI Run allows you to get people to measure the things you care about
TypeScript
12
star
22

orchestra

The OONI Probe Orchestration System
Go
12
star
23

data

OONI Data CLI and Pipeline v5
Python
8
star
24

translations

OONI translations
Python
8
star
25

ooni-sync

[DEPRECATED] For accessing OONI data see: https://ooni.org/data/
Go
8
star
26

netx

OONI's Go net and net/http extensions for performing network measurements
Go
7
star
27

netem

Network emulation for writing integration tests in Go
Go
7
star
28

blocking-fingerprints

Consolidate all the blocking fingerprints in one place
Python
7
star
29

historical-geoip

Generate historical IP to country + ASN databases for processing historical OONI data
Python
5
star
30

datk

OONI Data Analysis ToolKit
Python
4
star
31

ooni.github.io

mirror of the OONI website on github pages
HTML
4
star
32

jafar

Grand vizier of censorship simulation
Go
4
star
33

design.ooni.io

OONI Design guidelines website
JavaScript
4
star
34

gatherings

Notes and resources related to OONI gatherings
4
star
35

2022-04-websteps-illustrated

websteps: winter 2022 edition
Go
4
star
36

collector

Next generation OONI collector
Go
4
star
37

ooni.io

JavaScript
3
star
38

labs

OONI Labs are experiments not yet ready for prime-time
JavaScript
3
star
39

code-style

Code style guide
3
star
40

asn-db-generator

Generate an IP-address-to-ASN database compatible with Maxmind
Python
3
star
41

pm-tools

Tooling for project management
Python
3
star
42

psiphon

Vendor psiphon and dependencies
Go
2
star
43

slides

OONI presentation slides
JavaScript
2
star
44

country-util

Utilities for dealing with countries in an un-opinionated, human friendly and respectful manner
Python
2
star
45

probe-assets

Assets used by OONI Probe
Go
1
star
46

probe-web

Measure website blocking in your browser
JavaScript
1
star
47

notebooks

Collection of OONI related jupyter notebooks
Jupyter Notebook
1
star
48

probe-mobile-appium

Java
1
star
49

test-lists-ui

Frontend application for submitting contributions to the Citizenlab test-lists used by OONI Probe to test websites for censorship.
JavaScript
1
star