
Motore di misurazione e CLI in Go per rilevare la censura su Internet e le interferenze di rete, eseguendo i test di rete OONI e segnalando i risultati all'osservatorio aperto.
Istruzioni per l'installazione »
Guida utente · Documentazione API · Segnala bug · Richiedi funzionalità · Tutorial
L'Open Observatory of Network Interference (OONI) è un progetto di software libero senza scopo di lucro che mira a potenziare gli sforzi decentralizzati nella documentazione della censura di Internet in tutto il mondo.
Questo repository contiene i seguenti pacchetti Go:
il client da riga di comando ooniprobe (cmd/ooniprobe);
il server di supporto ai test (internal/cmd/oohelperd);
la libreria mobile (pkg/oonimkall);
la libreria del motore di misurazione (internal);
il client da riga di comando sperimentale miniooni (internal/cmd/miniooni).
Ogni directory di primo livello in questo repository contiene un file README esplicativo.
Segui le istruzioni su ooni.org/install/cli
per installare i binari precompilati di ooniprobe per Windows, macOS e
Debian/Ubuntu. Una volta installato ooniprobe, consulta la
guida utente.
Pubblichiamo build notturne usando il tag di rilascio rolling. Queste
build usano l'ultimo commit del branch master.
Per configurare lo sviluppo di questo repository hai bisogno di Go >= 1.15. Lo
script ./script/go.bash scaricherà automaticamente la versione
attesa di Go menzionata nel file GOVERSION (cioè,
go1.27.3) e la userà per la compilazione.
Puoi anche aggirare ./script/go.bash e compilare ooniprobe manualmente usando
go build ... ma, in tal caso, nota che:
usare una versione più vecchia di quella menzionata in GOVERSION è decisamente sconsigliato e potrebbe non compilare nemmeno;
usare versioni successive dovrebbe funzionare come previsto per le funzionalità principali ma funzionalità aggiuntive potrebbero essere disabilitate o non funzionare come previsto.
Ecco perché: ci basiamo su pacchetti forkati dalla libreria standard; quindi, è più robusto usare la stessa versione di Go da cui abbiamo forkato quei pacchetti.
Ti servirà anche un compilatore C. Su Linux e altri sistemi Unix funzionano sia GCC che Clang. Se usi Windows, ti consigliamo di installare Ubuntu o Debian su il Sottosistema Windows per Linux. Se il tuo target è Windows, dovresti anche installare il cross-compilatore mingw-w64.
I seguenti comandi mostrano come configurare un ambiente di sviluppo usando Debian 12 ("bookworm"). Le stesse istruzioni dovrebbero funzionare anche per 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
I seguenti comandi mostrano come configurare un ambiente di sviluppo utilizzando Fedora, a condizione che la tua Fedora utilizzi 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++
I seguenti comandi mostrano come configurare un ambiente di sviluppo utilizzando macOS. Presumiamo che tu abbia già installato Homebrew, che dovrebbe anche installare i Xcode command line tools.
Successivamente, devi seguire queste istruzioni:
# install the compiler
brew install go
./script/go.bashLo script ./script/go.bash richiede Go >= 1.15 e automatizza l'installazione e
l'utilizzo della versione corretta di Go. Eseguendo questo script come segue:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/miniooni
È equivalente all'esecuzione di questi comandi:
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
Questa sezione mostra come eseguire la build usando ./script/go.bash. Se vuoi bypassare
l'uso di questo script, esegui semplicemente go invece di ./script/go.bash.
Puoi compilare ooniprobe usando:
./script/go.bash build -v -ldflags '-s -w' ./cmd/ooniprobe
Questo comando genererà un binario stripped chiamato ooniprobe
nella directory di primo livello.
Allo stesso modo, puoi compilare miniooni usando:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/miniooni
Questo comando genererà un binario stripped chiamato miniooni
nella directory di primo livello.
E oohelperd usando:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/oohelperd
Questo comando genererà un binario ridotto chiamato oohelperd
nella directory di primo livello.
I binari ooniprobe e miniooni collegano una libreria statica Rust
(libuniffi_ooniprobe.a) compilata da
ooniprobe-rs. I target make CLI/*
la ottengono tramite il target userauth, che esegue il buildtool e per
impostazione predefinita scarica un bundle precompilato dalla release ooniprobe-rs fissata.
Imposta USERAUTH_FROM_SOURCE=1 per invece compilare la staticlib dai sorgenti
ooniprobe-rs fissati, ad esempio:
make USERAUTH_FROM_SOURCE=1 CLI/ooniprobe