guardianproject / orbot-apple Goto Github PK
View Code? Open in Web Editor NEWOrbot VPN app for iOS
License: MIT License
Orbot VPN app for iOS
License: MIT License
See #1. Will need test in Swift if ports are already in use.
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."
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!
@tladesignz Here are the svg files for Orbie. Will you create a folder in the repo for design assets. I don't seem to have the permissions to.
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.
This one: stun:stun.voip.blackberry.com:3478
Tor Browser hasn't used it in some time: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/fc89e8b10c3ff30db2079b2fb327d05b2b5f3c80
My primary use case would be to allow scripts to be executed on only trusted websites.
Here's the UI mockup as reference. We have a few things to work through though.
@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.
Right now the idea is that a user can tap on the status 'Connected' and get the sheet for how to connect.
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.
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
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.
The Packet Tunnel provider just exits quietly due to a NULL netif from leaf_run internally.
orbot-ios/Shared/Tunnel/BasePTProvider.swift
[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
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.
When the tunnel is started, it quits quietly in a couple of seconds with the fault like:
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
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.
Finally found out how Orbot Android creates that list of countries for exit nodes and my worst ideas were not disappointed:
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?
Via URI: "orbot:start"
No stop, no install, only start.
@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.
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.
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.
Odysee.com works on Desktop Tor Browser, but doesn't work on mobile, I've opened another issue here OdyseeTeam/odysee-frontend#1052
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.
A user asked:
"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."
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:
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.
New capabilities added for region specific bridges
https://gitlab.torproject.org/meskio/rdsys/-/blob/doc_moat_api/doc/moat.md
from onion browser
for open ended customization
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
@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.
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!
We have notes in issue #39 on how to simulate blocking and bad networks.
Currently implementing Orbie in Orbot Apple.
@cstiens, can you please provide another Orbie version (when it's on) which is suitable for onion-only mode?
Thank you!
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.
Previous mention of stun.altar.com.pl:
https://lists.torproject.org/pipermail/anti-censorship-team/2022-May/000237.html
Hello,
Is there any plan to add meek-lite to be used in the custom bridges?
instead of custom URI scheme (which can be hijacked), we instead use https://orbot.app/start/foo URL to launch Orbot since we can authentication this with apple appsite association feature.
We can also add a page to the Orbot.app website to tell the user to install Orbot if they don't have it, which is a nice failover.
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.
are posted to the upstream work at https://github.com/eycorsican/leaf/issues/302
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.
Our service is based on v2ray
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:
As far as I understand, the situation is the following:
(And please correct me, if I'm wrong, which might well be!)
201 OK
if Tor is running?Foot notes:
@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?
Short answer: no.
This issue is just to document my findings in case we hit that topic again.
guardianproject/orbot#625 (comment)
On this Orbot android leaf thread eycorsican says that using leaf/config-json
instead of leaf/config-conf
drops a bulky regex package and gives you an even smaller binary.
I still haven't gotten a chance to return to leaf on Android myself, but if this is something you can do for iOS I'm sure it'd go a long way!
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.)
migrate features from Onion Browser
As reference, here's a link to the Figma file that has all of the design work: https://www.figma.com/file/c22a0Vn4QjmoviIi9Oj5eB/Orbot-%5BLatest%5D?node-id=1407%3A11214
The Master page has the Android design for Smart Connect. The documentation that's been started is here: https://github.com/guardianproject/orbot/blob/master/docs/smart-connect-design-spec.md
Though, we need to update it.
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?
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.
@tladesignz Here are the assets!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.