
محرك قياس وواجهة سطر أوامر (CLI) بلغة Go لاكتشاف الرقابة على الإنترنت والتداخل في الشبكة، وتشغيل اختبارات شبكة OONI والإبلاغ عن النتائج إلى المرصد المفتوح.
دليل المستخدم · وثائق واجهة برمجة التطبيقات · الإبلاغ عن خطأ · طلب ميزة · دروس تعليمية
المرصد المفتوح لتداخل الشبكات (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
سيُنشئ هذا الأمر ملفًا ثنائيًا منزوع الرموز (stripped binary) يُسمى 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، الذي يشغّل أداة البناء ويُنزّل افتراضيًا حزمة
مبنية مسبقًا من إصدار ooniprobe-rs المثبَّت.
اضبط USERAUTH_FROM_SOURCE=1 لـبناء المكتبة الثابتة من مصادر
ooniprobe-rs المثبَّتة بدلًا من ذلك، على سبيل المثال:
make USERAUTH_FROM_SOURCE=1 CLI/ooniprobe
البناء من المصدر هو ما نقوم به عند النشر، لأن الحزمة المُجمّعة مسبقًا مبنية على glibc ولا يمكن ربطها في عمليات بناء Linux الثابتة القائمة على musl أو عمليات البناء المُترجمة المتقاطعة لنظامي Windows/darwin. التنزيل المُجمّع مسبقًا أسرع وهو الخيار الافتراضي المناسب للتطوير المحلي.
يُرجى الاطلاع على CONTRIBUTING.md.
SPDX-License-Identifier: GPL-3.0-or-later
نبني الإصدارات باستخدام Makefile، الذي يتطلب GNU make. شغّل
make help للاطلاع على الاستخدام التفصيلي.
راجع أيضًا القسم ذي الصلة في CONTRIBUTING.md.