
Движок измерений на Go и CLI для обнаружения интернет-цензуры и сетевого вмешательства, запуска сетевых тестов OONI и отправки результатов в открытую обсерваторию.
Руководство пользователя · Документация API · Сообщить об ошибке · Запросить функцию · Учебные пособия
Open Observatory of Network Interference (OONI) — это некоммерческий проект свободного программного обеспечения, цель которого — поддержать децентрализованные усилия по документированию интернет-цензуры по всему миру.
Этот репозиторий содержит следующие пакеты Go:
клиент командной строки ooniprobe (cmd/ooniprobe);
сервер тестовых помощников (internal/cmd/oohelperd);
мобильная библиотека (pkg/oonimkall);
библиотека движка измерений (internal);
экспериментальный клиент командной строки miniooni (internal/cmd/miniooni).
Каждый каталог верхнего уровня в этом репозитории содержит пояснительный файл README.
Следуйте инструкциям на ooni.org/install/cli,
чтобы установить предкомпилированные бинарные файлы ooniprobe для Windows, macOS и
Debian/Ubuntu. После установки ooniprobe обратитесь к
руководству пользователя.
Мы публикуем ночные сборки, используя тег скользящего релиза. Эти
сборки используют последний коммит ветки master.
Для настройки разработки в этом репозитории вам нужен Go >= 1.15. Скрипт
./script/go.bash автоматически загрузит ожидаемую
версию Go, указанную в файле GOVERSION (т. е.
go1.27.3), и будет использовать её для сборки.
Вы также можете обойти ./script/go.bash и собрать ooniprobe вручную с помощью
go build ..., но в таком случае учтите, что:
использование более старой версии, чем указанная в GOVERSION, определённо не рекомендуется и может даже не скомпилироваться;
использование более новых версий должно работать как задумано для основной функциональности, но дополнительная функциональность может быть отключена или работать не так, как задумано.
Вот почему: мы полагаемся на пакеты, ответвлённые от стандартной библиотеки; поэтому надёжнее использовать ту же версию Go, из которой мы ответвили эти пакеты.
Вам также понадобится компилятор C. В Linux и других Unix-системах подойдут как GCC, так и Clang. Если вы используете Windows, мы рекомендуем установить Ubuntu или Debian в подсистеме Windows для Linux. Если вы ориентируетесь на Windows, вам также следует установить кросс-компилятор mingw-w64.
Следующие команды показывают, как настроить среду разработки с использованием Debian 12 («bookworm»). Эти же инструкции должны также работать для 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
Следующие команды показывают, как настроить среду разработки с использованием Fedora, при условии, что в вашей системе Fedora используется 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++
Следующие команды показывают, как настроить среду разработки в macOS. Мы предполагаем, что вы уже установили Homebrew, который также должен установить инструменты командной строки Xcode.
Затем вам нужно выполнить следующие инструкции:
# install the compiler
brew install go
./script/go.bashСкрипт ./script/go.bash требует Go >= 1.15 и автоматизирует установку и
использование правильной версии Go. Запуск этого скрипта следующим образом:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/miniooni
Эквивалентно выполнению следующих команд:
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
В этом разделе показано, как выполнять сборку с помощью ./script/go.bash. Если вы хотите обойтись
без этого скрипта, просто запустите go вместо ./script/go.bash.
Вы можете скомпилировать ooniprobe с помощью:
./script/go.bash build -v -ldflags '-s -w' ./cmd/ooniprobe
Эта команда создаст урезанный бинарный файл с именем ooniprobe
в каталоге верхнего уровня.
Аналогично можно скомпилировать miniooni с помощью:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/miniooni
Эта команда создаст урезанный бинарный файл с именем miniooni
в каталоге верхнего уровня.
А oohelperd с помощью:
./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/oohelperd
Эта команда создаст урезанный бинарный файл с именем oohelperd
в каталоге верхнего уровня.
Бинарные файлы ooniprobe и miniooni компонуются со статической библиотекой Rust
(libuniffi_ooniprobe.a), собранной из
ooniprobe-rs. Цели make CLI/*
получают её через цель userauth, которая запускает buildtool и по
умолчанию загружает предварительно собранный пакет из закреплённого релиза ooniprobe-rs.
Установите USERAUTH_FROM_SOURCE=1, чтобы вместо этого собрать статическую библиотеку из закреплённых
исходников ooniprobe-rs, например:
make USERAUTH_FROM_SOURCE=1 CLI/ooniprobe