OONI Probe is free and open source software designed to measure internet censorship and other forms of network interference.

Overview

OONI Probe iOS

OONI Probe iOS

chat on Slack open issues Emulator Tests Status follow on Twitter

OONI Probe is free and open source software designed to measure internet censorship and other forms of network interference.

Click here to report a bug

Other supported platforms: Android, Desktop, CLI

Developer information

If you are interested in building the app yourself, read on.

To download and install the measurement-kit library we use CocoaPods.

To install cocoapod use

sudo gem install cocoapods # brew install cocoapods on macOS

Then use the command:

pod install

This command will install the latest stable binary measurement-kit library and its dependencies and install the frameworks inside the Xcode Workspace.

Then open the xcode workspace (not the xcode project!) located in ooniprobe.xcworkspace and click on run to build it.

How to complile a specific version of oonimkall for an Xcode project.

The most important dependency is oonimkall. This dependency contains the network measurement engine. Its sources are at ooni/probe-cli. We fetch the oonimkall framework directly from ooni/probe-cli releases.

You can use a specific version of oonimkall it in your project by changing the release to which it points to in the Podfile.

Then type pod install and open .xcworkspace file (beware not to open the .xcodeproj file instead, because that alone won't compile).

Managing translations

To manage translations check out our translation repo and follow the instructions there.

Contributing

  • Write some code

  • Open a pull request

  • Have fun!

Fastlane

We use fastlane for creating automatically app screenshots in the various languages we support.

You first need to have some depedencies installed. On macOS:

To install fastlane:

# Using RubyGems
sudo gem install fastlane -NV

# Alternatively using Homebrew
brew cask install fastlane

Then:

brew install libpng jpeg imagemagick

You will then be able to automate screenshot creation with:

fastlane screenshots

Learn more on the fastlane docs: https://docs.fastlane.tools/getting-started/ios/screenshots

Comments
  • User initiated tests should start off minimised

    User initiated tests should start off minimised

    Fixes https://github.com/ooni/probe/issues/1976

    Proposed Changes

    • Update from implementation that uses performSegueWithIdentifier or prepareForSegue to running tests directly and reloading constraints.
    opened by aanorbel 12
  • init shared instance once #223 #222

    init shared instance once #223 #222

    Fixes #223 #222

    Proposed Changes

    • Setting InCodeMappingProvider only once. It is needed we use the shared instance as the function dictionary uses that sharedInstance https://github.com/aryaxt/OCMapper/blob/master/OCMapper/Source/Categories/NSObject+ObjectMapper.m#L39
    opened by lorenzoPrimi 9
  • Result view

    Result view

    I guess the new ooni-wui works good now. Added possibility to select multiple tests in the webview. I need this branch to be merged to start to integrate the Web Connectivity test

    opened by lorenzoPrimi 6
  • Fixing broken UITests and fastlane screenshots

    Fixing broken UITests and fastlane screenshots

    Fixes https://github.com/ooni/probe-ios/issues/262

    Originally noticed in https://github.com/ooni/probe-ios/pull/246

    After this PR will be merged:

    • Redo and reupload screenshots
    • Check ndt server is a valid name
    • Upload new descriptions (ru, jp)
    OTFy2 
    opened by lorenzoPrimi 5
  • Mk 0.2

    Mk 0.2

    This branch is not ready to be merged yet. It contains changes to the app caused by updating MK to 0.2.0-beta. I have already applied changes so the app compiles. I have also smoke tested the code using the emulator and, while at it, I've started making a list of things to do next:

    • [x] make sure files are actually written on disk so they are also sent to OONI's collector
    • [x] add geoip files as resources so that geolocation works
    • [x] understand whether dns_injection requires a DNS server to be used for auxiliary operations
    opened by bassosimone 5
  • Implement faster measurement resubmission

    Implement faster measurement resubmission

    Part of https://github.com/ooni/probe/issues/861.

    Uses https://github.com/measurement-kit/mkcollector/pull/25 and https://github.com/measurement-kit/mkall-ios/pull/25 to make the act of resubmitting really faster.

    This is bundled with https://github.com/measurement-kit/mkall-ios/releases/tag/v0.5.5 that contains also reliability fixes, including a fix to make sure we really deallocate ObjectiveC objects context.

    enhancement 
    opened by bassosimone 4
  • Fix #114

    Fix #114

    [tampering objectForKey:@"xxx"] can be NSNull object. As a result, we have to check null before accessing the bool value or the app may crash.

    opened by tsekityam 4
  • Cocoapod

    Cocoapod

    I settled up the App to use cocoapod instead of build script. There are different improvement:

    • no more subrepository to include measurement-kit
    • no more build script, with the command pod install it download and build the frameworks.
    • to update the library you have just to remove the folders Pods and use the command pod install
    enhancement cleanup 
    opened by AntonioLangiu 4
  • chore: upgrade to oonimkall v3.11.0-beta.2

    chore: upgrade to oonimkall v3.11.0-beta.2

    This (experimental?) diff points to the first version of oonimkall automatically built using the cloud.

    Unfortunately, my local system is quite in a bit of a broken state at the moment, after the macOS 12.0 system update.

    I'm going to use the CI to know whether the automatically built oonimkall works with the current probe-ios.

    Reference issue https://github.com/ooni/probe/issues/1879.

    opened by bassosimone 3
  • Feature/upload result manually

    Feature/upload result manually

    Fixes https://github.com/ooni/probe/issues/838 TestSummaryTableViewController.m became TestSummaryViewController.m but for some reason git think is a new file

    opened by lorenzoPrimi 3
  • sharkORM: use git repository rather than CocoaPods

    sharkORM: use git repository rather than CocoaPods

    As the creator of SharkORM said, we were using an old version (2.3.62) who has a problem with migration and column removal : https://github.com/sharksync/sharkorm/issues/115

    Unfortunately he has some problem with CocoaPods so he suggested to install the framework from the github repo for now as stated in this conversation with me https://github.com/sharksync/sharkorm/issues/27

    In this branch I remove the CocoaPod and I install the latest framework v2.3.67 (https://github.com/sharksync/sharkorm/releases/tag/v2.3.67), furthermore I remove an unused column from the database, I tested and migration worked perfectly.

    opened by lorenzoPrimi 3
  • update measurement-log retention policy

    update measurement-log retention policy

    Fixes https://github.com/ooni/probe/issues/2162

    Proposed Changes

    • [x] Delete Measurement log when measurement cli emits status.measurement_done and measurement has been uploaded.
    • [x] Delete Measurement log when measurement is re-submitted.
    opened by aanorbel 0
  • No warning displayed when starting OONI Run link based test while under a VPN

    No warning displayed when starting OONI Run link based test while under a VPN

    Fixes https://github.com/ooni/probe/issues/2138

    Proposed Changes

    • Update OoniRunViewController to display as UIModalPresentationFullScreen.
    • Check VPN availability before prepareForSegue
    opened by aanorbel 0
  •  Paginate scrolling in test result screen

    Paginate scrolling in test result screen

    Fixes https://github.com/ooni/probe/issues/1430

    Proposed Changes

    • Load the Initial result set and Load more when the tableView reaches the last item.
    opened by aanorbel 0
  • Improve communication of which websites are tested by OONI Probe

    Improve communication of which websites are tested by OONI Probe

    Fixes https://github.com/ooni/probe/issues/1929 , https://github.com/ooni/probe/issues/1935

    Proposed Changes

    • Add button to load websites (loadFromTemplateButton) used in web_connectivity test in CustomURLViewController.
    • Fetch and display websites in webconnectivity when loadFromTemplateButton is clicked, making loadFromTemplateButton invisible when successful.

    | . | . | . | | -- | -- | -- | | Simulator Screen Shot - iPhone 13 Pro Max - 2022-04-06 at 21 27 44 |Simulator Screen Shot - iPhone 13 Pro Max - 2022-04-06 at 21 27 47 | Simulator Screen Shot - iPhone 13 Pro Max - 2022-04-06 at 22 12 23 |

    opened by aanorbel 1
Releases(v3.7.0)
  • v3.7.0(Jul 21, 2022)

    What's new?

    • New Vanila Tor experiment
    • Added In App Language Selection
    • Add support for sharing a link to the OONI Probe app
    • Measurement engine synced with OONI Probe CLI 3.15.2
    • Bug fixes and improvements.
    Source code(tar.gz)
    Source code(zip)
  • v3.6.1(Apr 29, 2022)

  • v3.6.0(Apr 27, 2022)

    What's new?

    • New Tor Snowflake experiment
    • New DNS Check experiment
    • RiseupVPN test temporarily disabled
    • Links to OONI blog posts and research reports
    • User-initiated tests start off minimized
    • Improved progress bar and test runtime counter
    • Measurement engine synced with OONI Probe CLI 3.14
    • Bug fixes and improvements
    Source code(tar.gz)
    Source code(zip)
  • v3.5.0(Dec 16, 2021)

    What's new?

    • Don't start automated-testing if the battery level is less than 20%
    • Automatically run tests now include also the Circumvention and Instant Messaging suites
    • Sync the measurement engine with OONI Probe CLI 3.13.0
    • Bug fixing and maintenance

    Codename: Ma chi ha detto che non c'è?

    Source code(tar.gz)
    Source code(zip)
  • v3.4.1(Nov 26, 2021)

  • v3.4.0(Nov 18, 2021)

    What's new?

    • New label indicating when a VPN is being used
    • Improved UI for requesting autorun permission
    • Bug fix in RiseupVPN and Signal analysis logic
    • Logs retained for 1 week
    Source code(tar.gz)
    Source code(zip)
  • v3.3.0(Sep 20, 2021)

  • v3.2.0(Jul 26, 2021)

    # What's new?

    • Added a reminder encouraging users to enable automated testing
    • Added a badge to indicate that a proxy is being used
    • Added support for minimizing a running test
    Source code(tar.gz)
    Source code(zip)
  • v3.0.0(Jun 16, 2021)

    # What's new?

    This exciting new release includes many important new features!

    1. Automated testing: By enabling automated testing in the settings, OONI Probe will run automatically every hour!

    2. New Experimental card: Run new experimental tests developed by the OONI team.

    3. Proxy support: Are you unable to use OONI Probe? Try enabling Psiphon or using a custom proxy through the new backend proxy settings.

    Source code(tar.gz)
    Source code(zip)
  • v2.11.0(Apr 13, 2021)

    What's new?

    This exciting release includes a new OONI Probe test for the Signal Private Messenger app! You can now measure the blocking of Signal.

    Source code(tar.gz)
    Source code(zip)
  • v2.10.1(Mar 23, 2021)

  • v2.10.0(Mar 8, 2021)

  • v2.9.3(Feb 11, 2021)

  • v2.9.2(Feb 5, 2021)

  • v2.9.1(Jan 25, 2021)

    What's new?

    We're excited to share that the latest OONI Probe version features a brand new test for RiseupVPN!

    Thanks to the LEAP collective (who developed this new test), you can now check whether RiseupVPN works on your network.

    • A bug with some iOS versions was fixed in this build
    Source code(tar.gz)
    Source code(zip)
  • v2.9.0(Jan 21, 2021)

  • v2.8.0(Dec 10, 2020)

  • v2.7.1(Nov 19, 2020)

    What's new?

    • Removed the "Include Network Info" setting in order to collect ASNs by default (as ASN information is necessary)
    • Removed the "Include my IP address" setting (to ensure greater protections for users)
    • Removed the Sharing section, and moved "Publish results" under the Privacy settings
    • Probe engine updated to v0.20.2
    • Minor fixes and improvements
    Source code(tar.gz)
    Source code(zip)
  • v2.7.0(Oct 8, 2020)

    What's new?

    • Fixed a bug to ensure that the ASN is not leaked in the report ID of measurements when users have opted out of ASN collection
    • Removed all dependencies from the C++ Measurement Kit engine
    • Made the app rely entirely on the new Go probe engine
    • General improvements and minor bug fixes
    Source code(tar.gz)
    Source code(zip)
  • v2.6.0(Sep 23, 2020)

    Release notes

    • Notifications to run OONI Probe tests when censorship events emerge
    • Self-hosted platform for the collection of anonymized usage metrics so that we can improve OONI Probe
    Source code(tar.gz)
    Source code(zip)
  • v2.5.2(Jul 29, 2020)

  • v2.5.1(Jul 17, 2020)

    Release notes

    • You have more storage space! Uploaded measurements are automatically deleted from local files.
    • You can interrupt/stop a test while it's running.
    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(Jun 28, 2020)

    Release notes

    • New tests for measuring the blocking of circumvention tools (Tor & Psiphon)
    • 5 new languages: Indonesian, Thai, Romanian, Slovak, and Icelandic
    • Rewritten NDT to increase reliability and measurements accuracy
    • Telegram, Ndt, Dash test written in golang
    Source code(tar.gz)
    Source code(zip)
  • v2.4.0(May 22, 2020)

  • v2.3.0(Mar 6, 2020)

    Highlights:

    1. You can re-test URLs. This new feature can be useful if you want to collect more evidence on potential blocking, or if a test fails.
    2. You can test many more websites in one go! By disabling the Max Runtime (of the website settings), you can test all of the URLs included in the Citizen Lab's global and country-specific test lists.

    Other improvements:

    • Improved runtime algorithm
    • URL sanitization in custom testing
    • Test-specific settings have been moved to the Settings page
    • UI tweaks
    • Automatic weekly deletion of logs
    • Deletion of raw data and log files upon re-run
    • Faster text load in the log and raw data views
    • Display of upload failure reason
    • Display of number of failed upload results
    • Display of bouncer failure reason
    • Updated measurement-kit engine to v0.7.0
    Source code(tar.gz)
    Source code(zip)
  • v2.2.0(Oct 15, 2019)

  • v2.1.0(Jun 14, 2019)

  • v2.0.5(Mar 12, 2019)

    • Improved OONI Run screen for better website testing (i.e. not supporting malformed URLs)
    • UI improvements to performance test results
    • Stability fixes

    measurement-kit version: mkall 0.3.11

    Source code(tar.gz)
    Source code(zip)
  • v2.0.4(Feb 22, 2019)

  • v2.0.3(Feb 16, 2019)

Owner
Open Observatory of Network Interference (OONI)
The Open Observatory of Network Interference (OONI) is a free software project that measures internet censorship around the world.
Open Observatory of Network Interference (OONI)
Free & Open source To-Do app for iOS

Summary I tried to make a To-Do application for my education graduation project. Table of contents Technologies Features Screenshots Installation For

Enes Nurullah Kendirci 3 Oct 25, 2021
OctoPod is a free open source iPhone/iPad app for OctoPrint

OctoPod OctoPod is a free open source iPhone/iPad app for OctoPrint. Build Instructions Download Xcode You will need to install Swift 5.0 and Xcode 11

Gaston Dombiak 193 Dec 30, 2022
A free open source iOS app for events or conferences

EventBlank iOS App I go to a lot of conferences and events and noticed that few of them have a proper iPhone app. And I can understand that - there ar

Marin Todorov 290 Nov 3, 2022
iOS On-Device Game Cheat Creation/Sharing Platform and Software

CheatManager CheatManager is a mobile platform, used for installation/distribution/creation of mobile game cheats/hacks. This platform is completely d

Project Manticore 49 Jan 2, 2023
An iOS template project using SwiftUI, Combine and MVVM-C software architecture

SwiftUI-MVVM-C A template project that uses SwiftUI for UI, Combine for event handling, MVVM-C for software architecture. I have done some small proje

Huy Nguyen 107 Jan 2, 2023
A document-based SwiftUI application for viewing and editing EEG data, aimed at making software for viewing brain imaging data more accessible.

Trace A document-based SwiftUI application for viewing and editing EEG data, aimed at making software for viewing brain imaging data more accessible.

Tahmid Azam 3 Dec 15, 2022
Add a software notch to your outdated Macbook! Deceive strangers!

The Notch Draws a persistent little cutout out at the top of the screen, on top of everything else. Purpose Each year when Apple releases a new Macboo

vgmoose 15 Nov 18, 2022
KHabit an open source, pure and minimalistic app which helps you maintain productive habits, and nothing more.

an open source, pure and minimalistic app which helps you maintain productive habits, and nothing more. The app is completely open source, it does not contain in-app or ads, and does not track the user in any way.

Stefano Bertoli 42 Dec 17, 2022
an open source, pure and minimalistic app which helps you maintain productive habits, and nothing more.

KHabit an open source, pure and minimalistic app which helps you maintain productive habits, and nothing more. The app is completely open source, it d

Stefano Bertoli 17 May 5, 2021
Open source game built in SwiftUI and the Composable Architecture.

isowords This repo contains the full source code for isowords, an iOS word search game played on a vanishing cube. Connect touching letters to form wo

Point-Free 2.1k Jan 1, 2023
iCome Out is an open source project of an unofficial Pornub app for iPhone and iPad

iCome Out is an open source project of an unofficial Pornub app for iPhone and iPad, written in Swift with some cool features Getting Started Prerequi

Anon 3 Dec 1, 2022
Open-source platform that raises awareness of the injustice and often forgotten names of racial inequality.

Welcome to the Say Their Names project. Our aim is to build an open-source platform that raises awareness of the injustice and often forgotten names of racial inequality at the hands of law enforcement. We strive to identify and amplify verified organizations to ensure donations are reaching those who can make the most impact with it.

Say Their Names 249 Nov 10, 2022
This app has always been open source! It began with the Big Brain Hackathon and now during Hacktoberfest

Brain Marks This app has always been open source! It began with the Big Brain Hackathon and now during Hacktoberfest. It is available for free on the

Mikaela Caron 79 Jan 4, 2023
Lockdown is an open source firewall that blocks trackers, ads, and badware in all apps

Lockdown Privacy (iOS) Lockdown is an open source firewall that blocks trackers, ads, and badware in all apps. Product details at lockdownprivacy.com.

Confirmed + Lockdown 819 Dec 17, 2022
An open-source app which can help you record income and expense

MoneyPlus An open-source app which can help you record income and expense. 中文 0x00 Introduction First quick devolopment in iOS using Swift programmati

FakeCoder 23 Oct 17, 2022
An open-source SwiftUI Stack Overflow client

StackOv A SwiftUI Stackoverflow client We are currently in the developing process of the next version of StackOv app. The demo version of StackOv is a

Surf 235 Dec 17, 2022
Weathy is an Open Source Song/Musician search for Apple Music

Weathy is an Open Source Apple Music Search App You can search for Musician or Songs to play it on Apple Music / Itunes You can find the main Source i

Marvin Hülsmann 4 Jul 12, 2021
iOS Open-Source Telematics App with Firebase© integration

Open-source telematics app for iOS. The application is suitable for UBI (Usage-based insurance), shared mobility, transportation, safe driving, tracking, family trackers, drive-coach, and other driving mobile applications

Damoov 17 Dec 11, 2022
A curated list of Open Source example iOS apps developed in Swift

Example iOS Apps A curated list of Open Source example iOS apps developed in Swift. How to Use Example-iOS-Apps is an amazing list for people who are

null 1 Dec 15, 2021