
इंटरनेट सेंसरशिप और नेटवर्क हस्तक्षेप का पता लगाने के लिए 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 फ़ाइल है।
Windows, macOS और Debian/Ubuntu के लिए पहले से कंपाइल किए गए ooniprobe बाइनरी
इंस्टॉल करने के लिए ooni.org/install/cli पर
दिए गए निर्देशों का पालन करें। एक बार ooniprobe इंस्टॉल हो जाने के बाद,
उपयोगकर्ता गाइड देखें।
हम रोलिंग रिलीज़ टैग का उपयोग करके नाइटली बिल्ड्स प्रकाशित करते हैं। ये
बिल्ड्स master ब्रांच के नवीनतम कमिट का उपयोग करते हैं।
इस रिपॉज़िटरी के लिए विकास सेटअप करने के लिए आपको Go >= 1.15 की आवश्यकता होगी।
./script/go.bash स्क्रिप्ट GOVERSION फ़ाइल में उल्लिखित Go के
अपेक्षित संस्करण (अर्थात्, go1.27.3) को स्वचालित रूप से डाउनलोड करेगी और
बिल्डिंग के लिए उसका उपयोग करेगी।
आप ./script/go.bash को बायपास करके go build ... का उपयोग करके ooniprobe
मैन्युअल रूप से भी बिल्ड कर सकते हैं, लेकिन ऐसी स्थिति में ध्यान दें कि:
GOVERSION में उल्लिखित संस्करण से पुराने संस्करण का उपयोग करना निश्चित रूप से अनुशंसित नहीं है और शायद कंपाइल भी न हो;
बाद के संस्करणों का उपयोग मुख्य कार्यक्षमता के लिए इच्छित रूप से काम करना चाहिए, लेकिन अतिरिक्त कार्यक्षमता अक्षम हो सकती है या इच्छित रूप से काम नहीं कर सकती।
यहाँ कारण दिया गया है: हम मानक लाइब्रेरी से फ़ोर्क किए गए पैकेजों पर निर्भर करते हैं; इसलिए, Go के उसी संस्करण का उपयोग करना अधिक मज़बूत है जिससे हमने उन पैकेजों को फ़ोर्क किया था।
आपको एक C कंपाइलर की भी आवश्यकता होगी। Linux और अन्य Unix सिस्टम पर GCC और Clang दोनों काम करेंगे। यदि आप Windows का उपयोग कर रहे हैं, तो हम Windows Subsystem for Linux पर Ubuntu या Debian इंस्टॉल करने की सलाह देते हैं। यदि आप 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 का उपयोग करके कैसे बिल्ड करें। यदि आप इस स्क्रिप्ट का उपयोग करना बायपास करना चाहते हैं, तो बस ./script/go.bash के बजाय go चलाएँ।
आप 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 लक्ष्य के माध्यम से प्राप्त करते हैं, जो बिल्डटूल चलाता है और
डिफ़ॉल्ट रूप से पिन किए गए ooniprobe-rs रिलीज़ से एक प्रीबिल्ट बंडल डाउनलोड करता है।
इसके बजाय पिन किए गए ooniprobe-rs स्रोतों से स्टैटिकलिब बिल्ड करने के लिए
USERAUTH_FROM_SOURCE=1 सेट करें, उदाहरण के लिए:
make USERAUTH_FROM_SOURCE=1 CLI/ooniprobe