{"id":13610891,"url":"https://github.com/ooni/probe-cli","last_synced_at":"2025-04-06T04:12:43.230Z","repository":{"id":37742803,"uuid":"120651415","full_name":"ooni/probe-cli","owner":"ooni","description":"OONI Probe Engine and CLI","archived":false,"fork":false,"pushed_at":"2024-04-12T15:54:21.000Z","size":40733,"stargazers_count":210,"open_issues_count":44,"forks_count":45,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-04-14T06:49:45.542Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://ooni.org/install","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ooni.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-02-07T18:02:54.000Z","updated_at":"2024-05-15T09:01:01.002Z","dependencies_parsed_at":"2023-09-26T15:09:36.968Z","dependency_job_id":"512d68df-f17e-4a40-aa98-804884e6db2b","html_url":"https://github.com/ooni/probe-cli","commit_stats":{"total_commits":1663,"total_committers":30,"mean_commits":55.43333333333333,"dds":0.2273000601322911,"last_synced_commit":"d08ce0281c64f1d6df52c8205c78add50339121a"},"previous_names":[],"tags_count":118,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooni%2Fprobe-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooni%2Fprobe-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooni%2Fprobe-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ooni%2Fprobe-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ooni","download_url":"https://codeload.github.com/ooni/probe-cli/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247208457,"owners_count":20901570,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T19:01:49.107Z","updated_at":"2025-04-06T04:12:43.212Z","avatar_url":"https://github.com/ooni.png","language":"Go","funding_links":[],"categories":["Go","Developer Tools \u0026 Libraries"],"sub_categories":[],"readme":"\u003c!--\nAdapted from https://github.com/othneildrew/Best-README-Template, which is\nunder the MIT license. So, this file is also under the MIT license.\n--\u003e\n\n[![OONI Probe Android](docs/logo.png)](https://ooni.org)\n\n\u003cdiv align=\"center\"\u003e\n\n[![GoDoc](https://pkg.go.dev/badge/github.com/ooni/probe-cli/)](https://pkg.go.dev/github.com/ooni/probe-cli/v3) [![Coverage Status](https://coveralls.io/repos/github/ooni/probe-cli/badge.svg?branch=master)](https://coveralls.io/github/ooni/probe-cli?branch=master) [![Slack](https://slack.openobservatory.org/badge.svg)](https://slack.openobservatory.org/)\n\n## OONI Probe Measurement Engine and CLI\n\n**[Install instructions »](https://ooni.org/install/cli)**\n\n[User guide](https://ooni.org/support/ooni-probe-cli) · [API docs](https://godoc.org/github.com/ooni/probe-cli) · [Report bug](https://github.com/ooni/probe/issues/new?labels=ooni/probe-cli\u0026assignee=bassosimone) · [Request feature](https://github.com/ooni/probe/issues/new?labels=ooni/probe-cli\u0026assignee=bassosimone) · [Tutorials](https://github.com/ooni/probe-cli/tree/master/internal/tutorial)\n\n\u003c/div\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\u003ca href=\"#about-this-project\"\u003eAbout this project\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#install-instructions\"\u003eInstall instructions\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#nightly-builds\"\u003eNightly Builds\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#build-instructions\"\u003eBuild instructions\u003ca\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#updating-dependencies\"\u003eUpdating dependencies\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#releasing\"\u003eReleasing\u003ca\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#semantic-versioning-policy\"\u003eSemantic versioning policy\u003ca\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003chr\u003e\n\n## About this project\n\nThe [Open Observatory of Network Interference](https://ooni.org) (OONI)\nis a non-profit free software project that aims to empower decentralized\nefforts in documenting Internet censorship around the world.\n\nThis repository contains the following Go packages:\n\n1. the ooniprobe command line client ([cmd/ooniprobe](cmd/ooniprobe));\n\n2. the test helper server ([internal/cmd/oohelperd](internal/cmd/oohelperd));\n\n3. the mobile library ([pkg/oonimkall](pkg/oonimkall));\n\n4. the measurement-engine library ([internal](internal));\n\n5. the miniooni experimental command line client ([internal/cmd/miniooni](internal/cmd/miniooni)).\n\nEvery top-level directory in this repository contains an explanatory README file.\n\n## Install instructions\n\nFollow the instructions at [ooni.org/install/cli](https://ooni.org/install/cli)\nto install `ooniprobe` precompiled binaries for Windows, macOS, and\nDebian/Ubuntu. Once `ooniprobe` is installed, refer to the\n[user guide](https://ooni.org/support/ooni-probe-cli).\n\n## Nightly builds\n\nWe publish nightly builds using the [rolling release tag](\nhttps://github.com/ooni/probe-cli/releases/tag/rolling). These\nbuilds use the latest commit of the `master` branch.\n\n## Developer instructions\n\nTo setup development for this repository you need Go \u003e= 1.15. The\n`./script/go.bash` script will automatically download the expected\nversion of Go mentioned in the [GOVERSION](GOVERSION) file (i.e.,\ngo1.22.3) and use it for building.\n\nYou can also bypass `./script/go.bash` and build ooniprobe manually using\n`go build ...` but, in such a case, note that:\n\n1. using an older version that the one mentioned in [GOVERSION](GOVERSION)\nis _definitely not recommended_ and _may not even compile_;\n\n2. using later versions _should_ work as intended for core functionality\nbut extra functionality may be disabled or not working as intended.\n\nHere's why: we rely on packages forked from the standard library; so, it is\nmore robust to use the same version of Go from which we forked those packages from.\n\nYou will also need a C compiler. On Linux and other Unix systems\nboth GCC and Clang will work. If you're using Windows, we\nrecommend installing Ubuntu or Debian on [the Windows Subsystem\nfor Linux](https://learn.microsoft.com/en-us/windows/wsl/install).\nIf you're targeting Windows, you should also install the\nmingw-w64 cross-compiler.\n\n### Debian developer setup\n\nThe following commands show how to setup a development\nenvironment using Debian 12 (\"bookworm\"). The same instructions\nshould also work for Ubuntu 22.04 LTS.\n\n```bash\n# install the compilers, git, and the root CA\nsudo apt install golang build-essential ca-certificates git\n\n# [optional] install mingw-w64 if you're targeting windows\nsudo apt install mingw-w64\n```\n\n### Fedora developer setup\n\nThe following commands show how to setup a development\nenvironment using Fedora, as long as your Fedora uses Go \u003e= 1.15.\n\n```bash\n# install the compilers and git\nsudo dnf install golang make gcc gcc-c++ git\n\n# [optional] install mingw-w64 if you're targeting windows\nsudo dnf install mingw64-gcc mingw64-gcc-c++\n```\n\n### macOS developer setup\n\nThe following commands show how to setup a development\nenvironment using macOS. We assume you have already installed\n[Homebrew](https://brew.sh), which should also install the\nXcode command line tools.\n\nThen, you need to follow these instructions:\n\n```bash\n# install the compiler\nbrew install go\n```\n\n### The `./script/go.bash` script\n\nThe `./script/go.bash` script requires Go \u003e= 1.15 and automates installing and\nusing the correct version of Go. Running this script as follows:\n\n```bash\n./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/miniooni\n```\n\nIs equivalent to running these commands:\n\n```bash\ngo install -v golang.org/dl/go1.22.3@latest\n$HOME/go/bin/go1.22.3 download\nexport GOTOOLCHAIN=local\n$HOME/sdk/go1.22.3/bin/go build -v -ldflags '-s -w' ./internal/cmd/miniooni\n```\n\n### Common build targets\n\nThis section shows how to build using `./script/go.bash`. If you want to bypass\nusing this script, just run `go` instead of `./script/go.bash`.\n\nYou can compile `ooniprobe` using:\n\n```bash\n./script/go.bash build -v -ldflags '-s -w' ./cmd/ooniprobe\n```\n\nThis command will generate a stripped binary called `ooniprobe`\nin the toplevel directory.\n\nLikewise, you can compile `miniooni` using:\n\n```bash\n./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/miniooni\n```\n\nThis command will generate a stripped binary called `miniooni`\nin the toplevel directory.\n\nAnd `oohelperd` using:\n\n```bash\n./script/go.bash build -v -ldflags '-s -w' ./internal/cmd/oohelperd\n```\n\nThis command will generate a stripped binary called `oohelperd`\nin the toplevel directory.\n\n## Contributing\n\nPlease, see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\n```\nSPDX-License-Identifier: GPL-3.0-or-later\n```\n\n## Releasing\n\nWe build releases using [Makefile](Makefile), which requires GNU make. Run\n`make help` for detailed usage.\n\nSee also the relevant section of [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## Semantic versioning policy\n\nThe mobile library is a public package for technical reasons. Go mobile tools require\na public package to build from. Yet, we don't consider API breakages happening in\nsuch a package to be sufficient to bump our major version number. For us, the mobile\nlibrary is just a mean to implement OONI Probe Android and OONI Probe iOS. We'll\nonly bump the major version number if we change `./cmd/ooniprobe`'s CLI.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fooni%2Fprobe-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fooni%2Fprobe-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fooni%2Fprobe-cli/lists"}