
Mecanismo de medição e CLI em Go para detectar censura na Internet e interferência de rede, executando testes de rede OONI e reportando resultados ao observatório aberto.
Guia do utilizador · Documentação da API · Comunicar erro · Solicitar funcionalidade · Tutoriais
O Open Observatory of Network Interference (OONI) é um projeto de software livre sem fins lucrativos que visa capacitar esforços descentralizados na documentação da censura na Internet ao redor do mundo.
Este repositório contém os seguintes pacotes Go:
o cliente de linha de comando ooniprobe (cmd/ooniprobe);
o servidor auxiliar de testes (internal/cmd/oohelperd);
a biblioteca móvel (pkg/oonimkall);
a biblioteca do mecanismo de medição (internal);
o cliente de linha de comando experimental miniooni (internal/cmd/miniooni).
Cada diretório de nível superior neste repositório contém um arquivo README explicativo.
Siga as instruções em ooni.org/install/cli
para instalar os binários pré-compilados do ooniprobe para Windows, macOS e
Debian/Ubuntu. Depois que o ooniprobe estiver instalado, consulte o
guia do usuário.
Publicamos builds noturnos usando a tag de lançamento contínuo. Esses
builds usam o commit mais recente do branch master.
Para configurar o desenvolvimento deste repositório, você precisa do Go >= 1.15. O
script ./script/go.bash baixará automaticamente a versão esperada
do Go mencionada no arquivo GOVERSION (ou seja,
go1.27.3) e a usará para compilar.
Você também pode ignorar o ./script/go.bash e compilar o ooniprobe manualmente usando
go build ... mas, nesse caso, observe que:
usar uma versão mais antiga do que a mencionada em GOVERSION não é de forma alguma recomendado e pode nem mesmo compilar;
usar versões posteriores deve funcionar conforme o esperado para a funcionalidade principal mas funcionalidades extras podem estar desabilitadas ou não funcionar conforme o esperado.
Eis o porquê: dependemos de pacotes derivados da biblioteca padrão; portanto, é mais robusto usar a mesma versão do Go da qual derivamos esses pacotes.
Você também precisará de um compilador C. No Linux e em outros sistemas Unix, tanto o GCC quanto o Clang funcionarão. Se você estiver usando Windows, recomendamos instalar o Ubuntu ou Debian no Windows Subsystem for Linux. Se você estiver visando o Windows, também deve instalar o cross-compiler mingw-w64.
Os comandos a seguir mostram como configurar um ambiente de desenvolvimento usando o Debian 12 ("bookworm"). As mesmas instruções também devem funcionar para o Ubuntu 22.04 LTS.
# 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
Os comandos a seguir mostram como configurar um ambiente de desenvolvimento usando o Fedora, desde que seu Fedora use Go >= 1.15.
# 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++
Os comandos a seguir mostram como configurar um ambiente de desenvolvimento usando macOS. Partimos do princípio de que você já instalou o Homebrew, que também deve instalar as ferramentas de linha de comando do Xcode.
Em seguida, você precisa seguir estas instruções:
# install the compiler
brew install go
./script/go.bashO script ./script/go.bash requer Go >= 1.15 e automatiza a instalação e
o uso da versão correta do Go. Executar este script da seguinte forma:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/miniooni
É equivalente a executar estes comandos:
go install -v golang.org/dl/go1.27.3@latest
$HOME/go/bin/go1.27.3 download
export GOTOOLCHAIN=local
$HOME/sdk/go1.27.3/bin/go build -v -ldflags '-s -w' ./internal/cmd/miniooni
Esta secção mostra como compilar usando ./script/go.bash. Se quiser ignorar
o uso deste script, basta executar go em vez de ./script/go.bash.
Pode compilar o ooniprobe usando:
./script/go.bash build -v -ldflags '-s -w' ./cmd/ooniprobe
Este comando irá gerar um binário stripped chamado ooniprobe
no diretório de nível superior.
Da mesma forma, você pode compilar o miniooni usando:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/miniooni
Este comando irá gerar um binário stripped chamado miniooni
no diretório de nível superior.
E oohelperd usando:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/oohelperd
Este comando irá gerar um binário stripped chamado oohelperd
no diretório de nível superior.
Os binários ooniprobe e miniooni fazem link a uma biblioteca estática Rust
(libuniffi_ooniprobe.a) compilada a partir de
ooniprobe-rs. Os alvos make CLI/*
obtêm-na através do alvo userauth, que executa a buildtool e, por
predefinição, descarrega um pacote pré-compilado da release fixada do ooniprobe-rs.
Defina USERAUTH_FROM_SOURCE=1 para, em vez disso, compilar a staticlib a partir
das fontes fixadas do ooniprobe-rs, por exemplo:
make USERAUTH_FROM_SOURCE=1 CLI/ooniprobe