/orbot-ios

Orbot VPN app for iOS

Primary LanguageSwiftMIT LicenseMIT

Orbot iOS

Torifies your iOS device running iOS 15 and newer.

Provides a "VPN" which tunnels all your device network traffic through Tor.

  • Supports Obfs4 and Snowflake bridges, fully configurable.
  • Supports Onion v3 service authentication.
  • Tor 0.4.6.8

Build

Prerequisits:

  • MacOS Big Sur or later
  • Xcode 13 or later
  • Homebrew
brew install cocoapods bartycrouch fastlane rustup-init
rustup-init -y
rustup target add aarch64-apple-ios
cargo install cargo-lipo cbindgen
git clone git@github.com:guardianproject/orbot-ios.git
cd orbot-ios
git submodule update --init --recursive
pod update
open Orbot.xcworkspace

Configure your code signing credentials in Config.xcconfig!

You will need to manually create App IDs, a group ID, and profiles.

Network Extensions can only run on real devices, not in the simulator.

Localization

Localization is done with BartyCrouch, licensed under MIT.

Just add new NSLocalizedStrings calls to the code. After a build, they will automatically show up in Localizable.strings.

Don't use storyboard and xib file localization. That just messes up everything. Localize these by explicit calls in the code.

IPC / Use with Other Apps

Orbot registers the scheme handler "orbot".

These URIs are available to interact with Orbot from other apps:

  • orbot:show Will just start the Orbot app.

  • orbot:show.bridges Will show the BridgeConfViewController, where users can change their bridge configuration.

  • orbot:show.auth Will show the AuthViewController, where users can edit their v3 onion service authentication tokens.

  • orbot:add.auth?url=http%3A%2F%2Fexample23472834zasd.onion&key=12345678examplekey12345678 Will show the AuthViewController, which will display a prefilled "Add" dialog. The user can then add that auth key. You don't need to provide all pieces. E.g. for the URL the second-level domain would be enough. Orbot will do its best to sanitize the arguments.

You can call these URIs like this:

	UIApplication.shared.open(URL(string: "orbot:show.bridges")!, options: [:])

Dependencies

Author, License

Benjamin Erhart, Die Netzarchitekten e.U.

Under the authority of Guardian Project.

Licensed under MIT.

Artwork taken from Orbot Android, licensed under BSD-3.