guardianproject / orbot-apple

Orbot VPN app for iOS
MIT License
186 stars 34 forks source link

Orbot iOS / macOS

Torifies your iOS / macOS device running iOS 15 or macOS 11 and newer.

Find links to official releases, beta tests etc. here: https://orbot.app/download

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

Build

Prerequisits:

brew install cocoapods bartycrouch fastlane rustup-init automake autoconf libtool gettext
rustup-init -y
rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios aarch64-apple-darwin x86_64-apple-darwin
cargo install cbindgen
git clone git@github.com:guardianproject/orbot-apple.git
cd orbot-apple
git submodule update --init --recursive
pod update
leaf-ffi-orbot/build-leaf.sh
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 to handle the scheme orbot and associates the domain https://orbot.app.

Using the associated domain is preferred, as it protects against other apps trying to hijack the orbot scheme and it provides a nice fallback for users who don't have Orbot installed, yet.

The following URIs are available to interact with Orbot from other apps:

You can call these URIs like this:

    UIApplication.shared.open(URL(string: "https://orbot.app/rc/start")!)

Direct Dependencies

Acknowledgements

These people helped with translations. Thank you so much, folks!

Tech Stuff

Figma template used to create rounded MacOS icons: https://www.figma.com/community/file/857303226040719059

How to use experimental Onionmasq/Arti

=> You should be good to go.

Look out for USE_ONIONMASQ references in the code: there you'll find the special handling necessary for Onionmasq.

NOTE: No bridge support, yet! iOS 50 MB memory limit might crash Onionmasq. There's no limit on macOS.

Further reading

https://tordev.guardianproject.info

Author, License

Benjamin Erhart, Die Netzarchitekten e.U.

Under the authority of Guardian Project with friendly support from The Tor Project.

Licensed under MIT.

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