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
Davide De Rosa
48d8173871
Drop return in single line functions
2022-07-16 17:39:42 +02:00
Davide De Rosa
dec7fb9030
Activate first created profile
2022-07-16 17:39:42 +02:00
Davide De Rosa
58e375ec41
Attach @MainActor where needed
...
Some methods were updating UI from non-main thread.
2022-07-16 17:39:42 +02:00
Davide De Rosa
3f4b55a003
Implement Mac bundle with system menu
...
Use bundle as a means to provide Mac APIs to Catalyst app.
In order to cross the @objc wall set by the Mac Bundle mechanism,
Swift structures cannot be used directly and must be bridged
through ObjC facades.
Create NSMenu in MVVM style and install it on app launch. Make
sure to do it in AppDelegate.applicationDidFinishLaunching(),
because doing it as early as in PassepartoutApp.init() would
crash Mac code.
Use .representedObject to own view models.
With menu in place, app can be sent to background when main window
is closed. Requires multiple documents support for app not to die
instantly.
2022-07-16 17:39:42 +02:00
Davide De Rosa
7d5f3e63c8
Add 'didUpdate' subjects in managers
...
objectWillChange may not work outside SwiftUI.
- ProfileManager.didUpdateProfiles
- ProviderManager.didUpdateProviders
2022-07-15 08:59:29 +02:00
Davide De Rosa
7771b50b56
Add ProfileManager methods to return full profiles
2022-07-14 17:07:30 +02:00
Davide De Rosa
9d9dc2b2f6
Rename activeProfileId publisher for consistency
2022-07-14 17:07:30 +02:00
Davide De Rosa
cbf00cef73
Fix Core Data fault due to missing headers lastUpdate
2022-07-14 17:07:30 +02:00
Davide De Rosa
0a2d1e9d37
Mitigate fatalError() in properties, fail gracefully
...
Do not trigger fatalError() on properties too much because
SwiftUI may read them at any unpredictable time.
2022-07-08 20:01:53 +02:00
Davide De Rosa
3e8a49c970
Remove store value when set value is nil
...
Fixes crash on removing active profile when current, due to setting
nil activeProfileId in UserDefaults.
2022-07-05 08:04:58 +02:00
Davide De Rosa
9a8477225e
Refactor library into domain + impl
2022-06-23 23:31:01 +02:00