Coder Social home page Coder Social logo

orbot-apple's People

Contributors

chrisballinger avatar conradev avatar cstiens avatar fredericjacobs avatar johnantoni avatar mtigas avatar n8fr8 avatar tladesignz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

orbot-apple's Issues

accessibility issues for blind user

from a user email:

"I am a totally blind user and first want to thank you for your work. I am extremely happy that Orbotis now on iOS, but there needs to be an update for accessibility with voiceover, built in iOS screen reader for people visually impaired.

Absolutely everything seems to be functional, but all of the buttons are unlabeled. Log needs to be “log”, bridges should be “bridges”, etc. apart from this, everything seems to work flawlessly. I have checked and clicked on all of the available buttons and seems to check out.

Apart from the above bug which needs to be fixed I would also like to add a suggestion. It would be nice if there were a setting to include or exclude countries that you connect to for a node similar to how you can configure on desktop."

Keeping an updated IPA version.

I was wondering if you could possibly keep updated IPA versions for download. Just so users can download the latest updated versions for people who want to have the IPA files?

Thabks!

Pre-compiled binary releases

It would be useful to have ipa files for each release just as the Android repo has apk files, for the purpose of both sideloading and beta testing. For sideloading in particular, there are Windows methods for doing so while there is practically no way to build from source without a Mac.

Main View once connected

Screenshot 2023-01-11 at 9 29 04 AM

Here's the UI mockup as reference. We have a few things to work through though.

  1. @tladesignz I know you've had questions in the past about how we get the list that's shown under 'Change Exit'. @n8fr8 can you provide details on how we do that list on Android.

  2. Right now the idea is that a user can tap on the status 'Connected' and get the sheet for how to connect.

Screenshot 2023-01-11 at 9 37 39 AM

  1. 'Refresh Connection' replaces the action for 'Build New Circuits' that is currently in the top right corner. There may be a debate about the language here. The reason we've used 'refresh connection' in the UI was because the aim is to be accessible to a non-technical audience that isn't familiar with the nuances and terminology associated with Tor.

Orbot boostraps and establishes circuits but then all connections time out on iPhone

iOS version 16.1.2 (newest available on my iphone 8)
Orbot v1.4.1 from the Apple app store [Version 1.4.1, Build 25]

I hit the big onion Start button on in the Orbot app and it says I'm connected.
Orbot's Tor log indicates "Bootstrapped 100%" and under Circuits, I have 2 circuits that opened quickly.

Under Settings, I am using Disable Orbot for non-onion traffic [Enabled]

Now when I try to browse with Safari, or through the Apple app store, or check for updates under Settings > General > Software Update, all connections time out.

Stopping Orbot relieves the situation and everything works again, despite the fact that I am using Disable Orbot for non-onion traffic mode.

Thanks for your time and attention.

(Screenshot) Tests Fail

Running tests from the CLI and from Xcode fails. Commenting out the offending line in the error below causes the tests to complete successfully.

All tests
Test Suite Screenshots.xctest started
Screenshots
    ✗ testScreenshots, Failed to Error Domain=com.apple.dt.xctest.ui-testing.error Code=10008 "No matches found for Elements matching predicate '"transport_3" IN identifiers' from input {(
    ✗ testScreenshots, Failed to Error Domain=com.apple.dt.xctest.ui-testing.error Code=10008 "No matches found for Elements matching predicate '"transport_3" IN identifiers' from input {(
    ✗ testScreenshots, Failed to Error Domain=com.apple.dt.xctest.ui-testing.error Code=10008 "No matches found for Elements matching predicate '"transport_3" IN identifiers' from input {(


Screenshots.Screenshots
  testScreenshots, Failed to Error Domain=com.apple.dt.xctest.ui-testing.error Code=10008 "No matches found for Elements matching predicate '"transport_3" IN identifiers' from input {(
  /Users/johnhess/Dropbox/Guardian/orbot-apple/Screenshots/Screenshots.swift:62

		app.tables.cells["transport_3"].tap()

  testScreenshots, Failed to Error Domain=com.apple.dt.xctest.ui-testing.error Code=10008 "No matches found for Elements matching predicate '"transport_3" IN identifiers' from input {(
  /Users/johnhess/Dropbox/Guardian/orbot-apple/Screenshots/Screenshots.swift:62

		app.tables.cells["transport_3"].tap()

  testScreenshots, Failed to Error Domain=com.apple.dt.xctest.ui-testing.error Code=10008 "No matches found for Elements matching predicate '"transport_3" IN identifiers' from input {(
  /Users/johnhess/Dropbox/Guardian/orbot-apple/Screenshots/Screenshots.swift:62

		app.tables.cells["transport_3"].tap()

	 Executed 3 tests, with 3 failures (0 unexpected) in 63.839 (63.840) seconds

Packet Tunnel exits quietly due to faulty leaf_run

Hey Orbot community,

Thank you so much for building this canon torified app that uses the Leaf backend. I have faced an issue when I try building a sample iOS VPN using the similar way like orbot.

Problem

The Packet Tunnel provider just exits quietly due to a NULL netif from leaf_run internally.

How to produce

  1. Create a sample iOS VPN that uses Shared/Tunnel/LeafPTProvider and related components under shared directory as an NE extension.
  2. Start the VPN
  3. Packet Tunnel provider will exit quietly because of error from netstack-lwip.

Debugging

Retrieve tunnel FD from iOS

Screen Shot 2022-08-26 at 4 53 26 PM

orbot-ios/Shared/Tunnel/BasePTProvider.swift

leaf conf, for simplicity

[General]
loglevel = info
dns-server = 1.1.1.1
always-real-ip = *
tun-fd = {{tunFd}}

[Proxy]
MyDns = redirect, 1.1.1.1, 53
SocksPoxy = socks, {{socksHost}}, {{socksPort}}
Reject = reject

[Rule]
PORT-RANGE, 53-53, MyDns
NETWORK, tcp, SocksPoxy
FINAL, Reject

This conf is a borrowing work from the upstream work orbot-ios/Shared/template.conf with hardcoded DNS

Packet tunnel provider

Similarly, orbot-ios/Shared/Tunnel/LeafPTProvider.swift is used, leaf.conf is generated with the {{}} placeholders replaced with working SOCKS host and port for sure.

netstack-lwip faults

When the tunnel is started, it quits quietly in a couple of seconds with the fault like:
Screen Shot 2022-08-26 at 4 45 26 PM

At the line 35, netif_first always returns NULL. It seems that the utun device from iOS is not usable.

netstack-lwip/src/stack_impl.rs

Looking for Help

Could you please instruct what extra work we need to do or pay attention to to make it work? I've seen in the orbot-ios main app, there are stuff like Transport and commTunnel, but I don't think they are related.

Your help is greatly appreciated! Some sponsorship will be also be provided in this case.

Compile exit node country list

Finally found out how Orbot Android creates that list of countries for exit nodes and my worst ideas were not disappointed:

https://github.com/guardianproject/orbot/blob/master/app/src/main/java/org/torproject/android/ExitNodeDialogFragment.kt#L60-L84

It's static.

I tried really hard to come up with a better solution. Result is, I optimized memory consumption and processing time for Tor controller responses in Tor.framework heavily:

iCepa/Tor.framework@0e9fa79
iCepa/Tor.framework@5190602

...but still need ~15 seconds to compile a list of exit nodes and resolve their countries, since there seems to be no way to have Tor filter the full node list first.

That's not good.

@n8fr8, is there really nothing better than a static list?

Improve Bridge Selection

Screenshot 2023-01-11 at 9 23 38 AM

@tladesignz We have screens for the full workflows of using customs bridges and getting a bridge from Tor. I think there are some additional considerations based on our recent conversations in #39. I'll review and provide a design update and the full UI.

Strip unwanted leaf features

The default feature set included in leaf contains a lot features, e.g. SSL, crypto, QUIC, Websocket, that have no use in this project. According to the config template, the minimal feature set could look like,

default = [
    "leaf/config-conf",
    "leaf/inbound-tun",
    "leaf/inbound-socks",
    "leaf/outbound-socks",
    "leaf/outbound-redirect",
    "leaf/outbound-direct",
    "leaf/outbound-drop"
]

This gives a much smaller binary.

It may need our own leaf-ffi-orbot library for doing so, just as how leaf-ffi does.

not working on mac

Can not connect even add custom bridges which is got from email (macOS Monterey ver12.2.1)
And unfortunately no logs when open Log view.

Bug: reenable the vpn doesn't work

On android 11, I've selected the apps to use orbot, whenever we disable vpn mode and we want to enable it again, it enposible till we disconnect and reconnect the tor,

It would be appreciated if you make an update for it.

VPN periodically disconnecting on iPhone SE 2nd gen.

Issue description:
On an iPhone SE 2nd gen. Orbot's VPN connection will sometimes automatically disconnect, without user interaction.
OS: iOS 15.3.1
Orbot version: 1.1.0 (6) from Testflight

Steps to reproduce:

  1. Install Orbot from an iPhone SE 2nd gen. with the latest iOS version
  2. Connect to Tor with Orbot
  3. Leave Orbot's VPN connection turned on and let the device stay idle for a while
  4. Wake the device and observe that the VPN disconnected

Extract from log at the time when issue last occured:

Mar 03 12:52:05.000 [notice] {GENERAL} Your system clock just jumped 281 seconds forward; assuming established circuits no longer work.
Mar 03 12:52:19.000 [warn] {CONFIG} MaxMemInQueues is set to a low value; if your client doesn't work, this may be the reason why.
Mar 03 12:52:19.000 [notice] Tor 0.4.6.9 opening log file.
Mar 03 12:52:19.000 [notice] {GENERAL} Received reload signal (hup). Reloading config and resetting internal state.
Mar 03 12:52:19.000 [notice] {CONFIG} Configuration file "/private/var/mobile/Containers/Data/PluginKitPlugin/72B35562-3C91-4F1C-B10E-4A2BEB826B38/.torrc" not present, using reasonable defaults.
Mar 03 12:52:19.000 [warn] {CONFIG} MaxMemInQueues is set to a low value; if your client doesn't work, this may be the reason why.
Mar 03 12:52:19.000 [notice] Tor 0.4.6.9 opening log file.

Orbot Intel Mac

Hello!

Thanks for the astonishing work, I am currently using your app on my iPhone and it works extremely well!
Which leads me to the question whether it would perhaps be possible to also make this app available on Intel Macs? Many people are still using these, and having Orbot to thwart censorship in some countries would be really beneficial.

Yours faithfully

UX Architecture

Screenshot 2022-11-16 at 9 35 13 AM

@tladesignz the padding on the 'My Tor Connection' should be the 16 pt that is standard on iOS. This mockup was pulled from the Android version that has different screen dimensions.

Create official Github release for 1.2.0.

I was wondering if there’s a way to make this build work on iOS 14? Specifically iOS 14.3 - 14.8.1 or even iOS 14.5 - 14.8.1. Since the App Store app version requires iOS 15. Also the latest IPA release is a version behind the App Store version.

Thanks!

Remove STUN server for Snowflake (and discuss how we manage our pool)

According to OONI stunreachability measurements,
stun://stun.altar.com.pl:3478 has been showing 100% anomalies since
2022-10-13. If it's down for good, we ought to remove it from the list
of STUN servers.

https://explorer.ooni.org/chart/mat?test_name=stunreachability&since=2022-10-01&until=2022-12-30&axis_x=measurement_start_day&axis_y=input

Previous mention of stun.altar.com.pl:

https://lists.torproject.org/pipermail/anti-censorship-team/2022-May/000237.html

meek-lite support

Hello,

Is there any plan to add meek-lite to be used in the custom bridges?

AppPrivacyReport shouldn't be aware of network activities

Problem

App Privacy Report of iOS can record all network activities even if Orbot VPN is in use, however, this should not take place for the sake of privacy.

Note that, App Privacy Report is a new feature since iOS 15.2.

More details such as

How to Reproduce

Root Cause Analysis

Proposal

Related Work

are posted to the upstream work at https://github.com/eycorsican/leaf/issues/302

Upvote Request

Hey Orbot community, please kindly help comment and / or upvote the upstream proposal https://github.com/eycorsican/leaf/issues/302 at Leaf community to better address this privacy issue.

How should other apps test if Tor/Orbot is already running? / Orbot interaction with other apps

So, when this app hits the app store, we'll finally have a fully-torified iOS[1].

But that brings us to a new problem, we didn't have to think about before:

  • What should apps do, that bring their own Tor?
  • What should Orbot do with apps that bring their own Tor?
  • What's the implications for security?

As far as I understand, the situation is the following:
(And please correct me, if I'm wrong, which might well be!)

  • There's only one VPN / Network Extension running at the same time.
  • Apps only ever see their own VPN profiles, so you can't just ask the OS if an Orbot profile is currently in use.[2]
  • There's no compartmentalisation of apps on the localhost network. Meaning, Orbot will block ports for other apps and other apps might just connect to Orbot's Tor SOCKS5 port.
  • Vice-versa, if an app starts a Tor, and the user manages to start Orbot's Tor quick enough right after (typically, apps are suspended and sockets are freed after a few seconds, or the app actually uses the let-me-finish-some-stuff-in-the-background mode and gets around 3 minutes to do so), the other app's Tor (or anything else for that matter) might block the ports Orbot defines for Tor to use.
  • Other apps won't be able to access Orbot Tor's control port, as they would need the cookie for that. However, there's no globally shared disk space. Other apps can't read the cookie.
  • When Orbot's Tor is running, there's actually no need to do any SOCKS5 proxying anymore: The traffic is fully sent through Tor. Is there any standard way to test, if the network is torified? E.g. is there a default server to ask? Of course, that would leak information, if currently not. Or can Tor provide a "canary" on the localhost network? Should we provide anything? Like, an HTTP server on a fixed port, which just answers with 201 OK if Tor is running?
  • There's going to be apps, which bring their own Network Extension (esp. Onion Browser 3 will). It will be highly annoying for the user, to run Orbot and then start Onion Browser, which then tries to switch to its own Tor VPN, which is basically going to be a copy. So Onion Browser should definitely just use Orbot's Tor VPN, if it's available.
  • There's other apps like OnionShare, which might need their own Tor, because it's going to serve stuff. Other apps won't be able to access the filesystem of Orbot, so they won't be able to set up the server.
  • Additionally, it seems highly unlikely, that Apple lets us run a VPN which also integrates a server. Needs to be tested through submission of a burner project.
  • If they let us, however, Orbot might need a REST API for other apps, so they'll be able to set the configuration.
  • If not, how to allow other Tor apps? With leaf, we might be able to offer a SOCKS5 port where other apps could connect, which traffic we then could let bypass Orbot's Tor. However, that could lead to a security problem. So that needs to be explicitly configured by the user.
  • Should we show the Tor control port cookie to the user, who could then copy-paste it into another app, which wants to make use of it?
  • How should other apps interact with the user? Should they show an alert to them like "There seems to be Orbot running, should we just use that? If no, we'll replace it with our own VPN. / If no, we're going to run Tor in Tor. yes/no"
  • How can we protect Orbot's Tor SOCKS5 port?

Foot notes:

  1. It seems to me, that e.g. hotspot traffic is circumventing a Tor VPN. Some other traffic on the device might as well.
  2. Turns out, there's a method to test, if any VPN is on: https://stackoverflow.com/a/53724982
    Looks quite ugly, so probably should be librarized, but is still not a test, if a specific Network Extension is active.

@n8fr8, what problems does Orbot Android already solve? How? Which ones not? Why?
@ahf, how does Tor on desktop solve these issues? Which ones doesn't it care about? Why? What suggestion do you have?
@mtigas, @DavidMOliver, @m4mb01t4l14n0, any additional insights?

Possible to only tunnel specific apps?

Short answer: no.

This issue is just to document my findings in case we hit that topic again.

  1. Per-app-VPN only allowed on macOS and on managed iOS devices. See here:
  1. Installed apps not discoverable:
  1. Preinstalled (well-known) apps cannot be captured.

Orbot doesn’t connect - shows connecting and then back to disconnected

As per title, Orbot suddenly stopped working on my iPhone. When I press the connect button, the app shows that it is connecting for about fifteen seconds before changing back to the “disconnected” button.

Here is the log:

Jun 01 09:21:05.000 [notice] Tor 0.4.6.10 opening new log file.
Jun 01 09:21:05.274 [notice] We compiled with OpenSSL 101010df: OpenSSL 1.1.1m  14 Dec 2021 and we are running with OpenSSL 101010df: 1.1.1m. These two versions should be binary compatible.
Jun 01 09:21:05.284 [notice] Tor 0.4.6.10 running on Darwin with Libevent 2.1.12-stable, OpenSSL 1.1.1m, Zlib 1.2.11, Liblzma 5.2.5, Libzstd N/A and Unknown N/A as libc.
Jun 01 09:21:05.284 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://support.torproject.org/faq/staying-anonymous/
Jun 01 09:21:05.284 [notice] Configuration file "/private/var/mobile/Containers/Data/PluginKitPlugin/6DD9EC68-75BF-4411-B0F1-4C14AC096B88/.torrc" not present, using reasonable defaults.
Jun 01 09:21:05.288 [warn] MaxMemInQueues is set to a low value; if your client doesn't work, this may be the reason why.
Jun 01 09:21:05.292 [notice] Opening Socks listener on 127.0.0.1:0
Jun 01 09:21:05.292 [notice] Socks listener listening on port 56782.
Jun 01 09:21:05.293 [notice] Opened Socks listener connection (ready) on 127.0.0.1:56782
Jun 01 09:21:05.293 [notice] Opening DNS listener on 127.0.0.1:0
Jun 01 09:21:05.293 [notice] DNS listener listening on port 63092.
Jun 01 09:21:05.293 [notice] Opened DNS listener connection (ready) on 127.0.0.1:63092
Jun 01 09:21:05.293 [notice] Opening Control listener on 127.0.0.1:0
Jun 01 09:21:05.293 [notice] Control listener listening on port 56783.
Jun 01 09:21:05.293 [notice] Opened Control listener connection (ready) on 127.0.0.1:56783
Jun 01 09:21:05.000 [notice] {GENERAL} Parsing GEOIP IPv4 file /var/containers/Bundle/Application/5D84940D-1C99-4E40-9639-2FD6E4A06AF7/Orbot.app/Frameworks/Tor.framework/GeoIP.bundle/geoip.
Jun 01 09:21:05.000 [notice] {GENERAL} Parsing GEOIP IPv6 file /var/containers/Bundle/Application/5D84940D-1C99-4E40-9639-2FD6E4A06AF7/Orbot.app/Frameworks/Tor.framework/GeoIP.bundle/geoip6.
Jun 01 09:21:05.000 [notice] {CONTROL} Bootstrapped 0% (starting): Starting

It worked fine a couple weeks back when the app was initially out but since then I’ve been unable to get it working. I’m unsure whether this was before or after the update to iOS 15.5.

Currently using an iPhone XS Max running iOS 15.5 (19F77). Orbot is on version 1.2.0 build 10.

None of the settings have been changed on Orbot. I’ve tried force-closing and restarting the app. I’ve also tried deleting the VPN configuration in iOS settings and re-installing the VPN configuration.

I don’t use bridges. (But I have tried connecting with all the bridge types, which didn’t help fix the issue.)

Use Orbot for *.onion addresses only

I can't stress enough how happy I am that Orbot is finally on iOS - Excellent job!

Would it be possible to have a toggle in settings that would enable usage of Orbot for *.onion addresses only?

Orbot leaves my VPN settings turned off when it exits

I’ve discovered a possible issue with Orbot and was wondering if anyone already knows how to resolve it. I’m already filtering my home WiFi traffic manually via Settings - WiFi - WiFi Settings - DNS - Configure DNS - Manual - 176.103.130.130, 176.103.130.131 to send all my DNS requests via AdGuard Encrypted DNS so my home network would be protected. I was looking for something like this that could send all of my DNS requests via AdGuard Encrypted DNS while I was connected to free public WiFi. I discovered DNSCloak to send all of my DNS queries via AdGuard. It sets up a DNS connection via a VPN. It works just fine until I launch Orbot and then it changes over to the Orbot VPN. Only problem with this is once I disconnect from Orbot it leaves my VPN in a turned off state. I go into Settings - VPN only to find that it’s been turned off. I have to manually turn it back on and then toggle DNSCloak back on as my VPN service. Is there any way / workaround to have Orbot restore your previous VPN connection when it exits? Is there anything I can change to my DNSCloak settings to make it prevent this from happening? Would be nice if DNSCloak could automatically handle this issue and manually turn the VPN service back on and default back to DNSCloak.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.