
Go-Mess-Engine und CLI zur Erkennung von Internetzensur und Netzwerkbeeinträchtigungen, zum Ausführen von OONI-Netzwerktests und zum Melden von Ergebnissen an das offene Observatorium.
Benutzerhandbuch · API-Dokumentation · Fehler melden · Funktion anfordern · Tutorials
Das Open Observatory of Network Interference (OONI) ist ein gemeinnütziges Freie-Software-Projekt, das dezentrale Bemühungen zur Dokumentation von Internetzensur weltweit stärken möchte.
Dieses Repository enthält die folgenden Go-Pakete:
den ooniprobe-Kommandozeilenclient (cmd/ooniprobe);
den Test-Helper-Server (internal/cmd/oohelperd);
die Mobile-Bibliothek (pkg/oonimkall);
die Messungsengine-Bibliothek (internal);
den experimentellen miniooni-Kommandozeilenclient (internal/cmd/miniooni).
Jedes Verzeichnis der obersten Ebene in diesem Repository enthält eine erklärende README-Datei.
Folge den Anweisungen unter ooni.org/install/cli,
um vorkompilierte ooniprobe-Binärdateien für Windows, macOS und
Debian/Ubuntu zu installieren. Nach der Installation von ooniprobe siehe
die Benutzeranleitung.
Wir veröffentlichen Nightly-Builds unter dem Rolling-Release-Tag. Diese
Builds verwenden den neuesten Commit des master-Branches.
Um die Entwicklung für dieses Repository einzurichten, benötigst du Go >= 1.15. Das
Skript ./script/go.bash lädt automatisch die erwartete
Go-Version herunter, die in der Datei GOVERSION genannt wird (d. h.
go1.27.3), und verwendet sie zum Bauen.
Du kannst ./script/go.bash auch umgehen und ooniprobe manuell mit
go build ... bauen, aber beachte in diesem Fall:
die Verwendung einer älteren Version als der in GOVERSION genannten ist definitiv nicht empfohlen und kompiliert möglicherweise nicht einmal;
die Verwendung neuerer Versionen sollte für die Kernfunktionalität wie beabsichtigt funktionieren, aber zusätzliche Funktionalität könnte deaktiviert sein oder nicht wie beabsichtigt funktionieren.
Der Grund dafür ist: Wir verlassen uns auf Pakete, die von der Standardbibliothek abgezweigt wurden; daher ist es robuster, dieselbe Go-Version zu verwenden, von der wir diese Pakete abgezweigt haben.
Du benötigst außerdem einen C-Compiler. Unter Linux und anderen Unix-Systemen funktionieren sowohl GCC als auch Clang. Wenn du Windows verwendest, empfehlen wir die Installation von Ubuntu oder Debian auf dem Windows-Subsystem für Linux. Wenn du auf Windows abzielst, solltest du außerdem den mingw-w64-Cross-Compiler installieren.
Die folgenden Befehle zeigen, wie man eine Entwicklungsumgebung mit Debian 12 („bookworm") einrichtet. Dieselben Anweisungen sollten auch für Ubuntu 22.04 LTS funktionieren.
# 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
Die folgenden Befehle zeigen, wie eine Entwicklungsumgebung mit Fedora eingerichtet wird, sofern dein Fedora Go >= 1.15 verwendet.
# 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++
Die folgenden Befehle zeigen, wie eine Entwicklungsumgebung unter macOS eingerichtet wird. Wir gehen davon aus, dass Homebrew bereits installiert ist, wodurch auch die Xcode-Kommandozeilenwerkzeuge installiert werden sollten.
Anschließend müssen Sie diese Anweisungen befolgen:
# install the compiler
brew install go
./script/go.bashDas Skript ./script/go.bash erfordert Go >= 1.15 und automatisiert die Installation und
Verwendung der korrekten Version von Go. Wenn Sie dieses Skript wie folgt ausführen:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/miniooni
Entspricht der Ausführung dieser Befehle:
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
Dieser Abschnitt zeigt, wie man mit ./script/go.bash baut. Wenn Sie die Verwendung
dieses Skripts umgehen möchten, führen Sie einfach go statt ./script/go.bash aus.
Sie können ooniprobe kompilieren mit:
./script/go.bash build -v -ldflags '-s -w' ./cmd/ooniprobe
Dieser Befehl erzeugt eine gestrippte Binärdatei namens ooniprobe
im obersten Verzeichnis.
Ebenso können Sie miniooni kompilieren mit:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/miniooni
Dieser Befehl erzeugt eine gestrippte Binärdatei namens miniooni
im obersten Verzeichnis.
Und oohelperd mit:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/oohelperd
Dieser Befehl erzeugt eine gestrippte Binärdatei namens oohelperd
im Verzeichnis auf oberster Ebene.
Die Binärdateien ooniprobe und miniooni linken eine Rust-Statikbibliothek
(libuniffi_ooniprobe.a), die aus
ooniprobe-rs gebaut wird. Die Ziele make CLI/*
beziehen sie über das Ziel userauth, das das Buildtool ausführt und
standardmäßig ein vorgefertigtes Bundle aus dem gepinnten ooniprobe-rs-Release herunterlädt.