Commit Graph

61 Commits

Author SHA1 Message Date
Davide De Rosa
2a54d59a80
Roll back broken TunnelKit .killSwitch flag (#294) 2023-04-18 17:22:45 +02:00
Davide De Rosa
67fc2a3cc0
Override manual DNS servers when using DoH/DoT (#283) 2023-04-06 12:50:39 +02:00
Davide De Rosa
d4d3d97081 Attempt beta release 2023-04-04 17:11:44 +02:00
Davide De Rosa
e050c0c8df
Catch WireGuard parsing errors properly (#279)
They could be reported as OpenVPN errors.
2023-04-03 08:48:18 +02:00
Davide De Rosa
6fd1f96e54
Use a distinct debug log per VPN protocol (#277)
Log content from different tunnels was interleaved.

Store debug logs in a protocol-specific folder.
2023-04-01 21:40:15 +02:00
Davide De Rosa
44e0ca9127
Force Mac "Catalyst" idiom in debug log (#276)
Mac Catalyst incorrectly reported as "Pad".
2023-04-01 16:24:27 +02:00
Davide De Rosa
e9f11d1dbe Attempt beta release 2023-03-25 17:07:58 +01:00
Davide De Rosa
1e0d522010
Drop #available condition on iOS 15 (#274) 2023-03-25 17:05:53 +01:00
Davide De Rosa
513b38584d
Upgrade SwiftLint to CI version (#266) 2023-03-19 16:10:40 +01:00
Davide De Rosa
1dda8dce98 Attempt beta release 2023-03-19 08:45:34 +01:00
Davide De Rosa
8d0fb5c9b5
Support DoH/DoT network settings in WireGuard profiles (#264) 2023-03-19 08:41:51 +01:00
Davide De Rosa
17ae9793df
Randomize provider server (#263)
* Pick random server within location

* Add toggle to provider section in profile
2023-03-19 08:19:32 +01:00
Davide De Rosa
c85f3d894e
Restore DNS "Domain" setting (#260) 2023-03-17 22:16:04 +01:00
Davide De Rosa
f06f097f27
Add SwiftLint phase (#262) 2023-03-17 21:55:47 +01:00
Davide De Rosa
e7a98acf9c Restore generic VPN in TunnelKitVPNManagerStrategy
MockVPN was not compiling.

Partially revert e17224e61e
2023-03-17 21:19:32 +01:00
Davide De Rosa
37354d1b87 Update copyright 2023-03-17 16:56:19 +01:00
Davide De Rosa
e17224e61e Refactor stale library entities
- Move VPNConfiguration* to VPN implementation

- Drop old model protocols
2023-03-17 16:53:13 +01:00
Davide De Rosa
2e10aab039
Extend authentication methods (#259)
* Add profile authentication method

- Persistent (default, fallback)

- Interactive (may expire through reconnections)

- TOTP (seed-based) - currently disabled

* Disable on-demand if login is interactive

* Present interactive prompt on VPN toggle
2023-03-17 16:49:35 +01:00
Davide De Rosa
44ccd21536
Fetch full profiles from Core Data (#258)
* Fetch full profiles

* Manage full profiles in organizer
2023-03-16 16:49:09 +01:00
Davide De Rosa
17b01a4dbc Clean up some code
- Drop stale generic

- Improve readability
2023-03-16 15:12:23 +01:00
Davide De Rosa
3f6c71e4f5 Update API (TorGuard) 2022-12-04 12:22:58 +01:00
Davide De Rosa
6e6c212649 Move .killSwitch property to extras 2022-11-10 07:55:31 +01:00
Davide De Rosa
1b704d7d4a
Decouple VPNManager from TunnelKit (#248)
* Drop VPNManager dependency on TunnelKit

* Hook .masksPrivateData to preferences updates
2022-11-10 07:42:08 +01:00
Davide De Rosa
e2c976e58d Attempt beta release 2022-10-31 14:18:07 +01:00
Davide De Rosa
e1a3e7992f Update TunnelKit with .killSwitch option
Fixes #181
2022-10-30 11:54:52 +01:00
Davide De Rosa
22c28de641
Retain original filename as imported profile name (#240) 2022-10-30 10:22:44 +01:00
Davide De Rosa
e1d8ec6066 Attempt beta release 2022-10-25 09:07:39 +02:00
Davide De Rosa
c345265451 Attempt beta release 2022-10-16 08:36:17 +02:00
Davide De Rosa
54c53707e0
Add app log in Diagnostics screen (#234) 2022-10-16 08:33:32 +02:00
Davide De Rosa
fbc17877b1 Suppress buggy Xcode warnings
@discardableResult annotations became suddenly ineffective.
2022-10-15 22:30:21 +02:00
Davide De Rosa
66a04862f9
Override Mullvad password (#233)
Set "m" as per official documentation:

https://mullvad.net/en/help/installing-mullvad-iphone-and-ipad/
2022-10-15 16:44:48 +02:00
Davide De Rosa
f95e4f228d
Implement --route-nopull via TunnelKit (#230)
Use it internally to override server-pushed settings.
2022-10-13 19:09:51 +02:00
Davide De Rosa
5627e6c4a9
Address UI race conditions (#229)
* Make some managers concurrency-safe

- IntentsManager: @MainActor, non-shared, continuation

- SSIDReader: @MainActor, continuation

- Reviewer: main queue, non-shared

* Review wrong use of Concurrency framework

There were background thread calls e.g. in VPNToggle, because
ProfileManager was used inside a VPNManager async call.

Annotate @MainActor wherever a Task involves UI.

* Make main managers MainActor

* Apply MainActor to Mac menus

* [ci skip] Update CHANGELOG

* Set MainActor consistently on Mac menu view models
2022-10-13 08:53:50 +02:00
Davide De Rosa
54dc8a2556 Use MockVPN from TunnelKit
Rather than ad hoc strategy.
2022-10-12 22:37:40 +02:00
Davide De Rosa
fb4d563804 Do not sort Core Data entities by UUID
Crash on compare.
2022-10-11 09:43:26 +02:00
Davide De Rosa
d40e40ae02 Wrap UIKit extension inside canImport
See fab982bf81
2022-10-08 09:20:27 +02:00
Davide De Rosa
8fed92c52e Update API 2022-10-04 21:49:34 +02:00
Davide De Rosa
1cbc481516 Allow spaces as legal filename characters 2022-10-04 07:56:28 +02:00
Davide De Rosa
fab982bf81 Fix UI idiom in debug log 2022-10-04 07:34:32 +02:00
Davide De Rosa
092d4f5de2 Drop return in one-line functions 2022-09-04 20:30:55 +02:00
Davide De Rosa
ca2c2b9d9c Update API (SurfShark issues) 2022-09-04 20:00:42 +02:00
Davide De Rosa
3b1a1954b9 Set persistent history tracking even for local containers
Allows switching between local and CloudKit mode.
2022-09-03 12:47:40 +02:00
Davide De Rosa
4c4b3ee0c9 Revert to concrete-only managers
Abstraction was overcomplicated. Strategy pattern is enough.
2022-09-03 12:47:40 +02:00
Davide De Rosa
e29f0bbd83 Strip empty debug log lines 2022-08-27 22:10:53 +02:00
Davide De Rosa
f465108a0a Attempt beta release 2022-08-16 12:43:20 +02:00
Davide De Rosa
92ffc382cb Reconnect VPN without disabling it
Retain on-demand flag to avoid leaks during reconnection.
2022-08-05 07:40:43 +02:00
Davide De Rosa
1c64253a1f Fix inverted profile lastUpdate logic
- Least recent was set last in the headers dictionary, thus
overwriting most recent (ascending = false)

- Mapping full profiles directly to array was generating
duplicates, use a dictionary to keep ID unicity
2022-08-04 23:36:09 +02:00
Davide De Rosa
b183dece8c Fix logic to activate first created profile
Broken in dec7fb9030

VPN was lost when app was sent to background. Current (and active)
profile was persisted with nil isActive and instead of ignoring
profile activation, isActive was falling back to
allHeaders.isEmpty (false), erroneously deactivating the profile
and disconnecting the VPN.
2022-08-04 23:33:17 +02:00
Davide De Rosa
9195d426e4 Attempt beta release 2022-07-18 08:03:24 +02:00
Davide De Rosa
9458c4f3a3 Fix server description and sorting
- Name (countries, area)
- Index
- Tags

Also use short description in menu (without country prefix).
2022-07-16 17:39:42 +02:00