Commit Graph

504 Commits

Author SHA1 Message Date
Davide
f2a141a189
Purge stale NetworkExtension/keychain data ()
- [x] NE managers were not deleted when unable to be decoded to a
profile
- [x] Keychain items were not deleted on profile removal
- [x] Perform clean-up on app launch
- [x] Perform clean-up on app active

Prematurely merged as  then reverted, this is the complete PR.
2024-10-11 17:48:37 +02:00
Davide
8f6192c2b6
Fix extra team prefix in keychain group ()
Team ID already included in .xcconfig

Fixes 
2024-10-11 03:45:20 +02:00
Davide
a0b9529870
Delete keychain entry on profile deletion 2024-10-11 00:25:26 +02:00
Davide
da87ca698a
Add initial support for providers ()
Initial integration of providers via API:

- Generic views and modifiers for provider/server selection
- Add in OpenVPNView
- Prepare in WireGuardView

Also:

- Introduce ProfileProcessor, move IAP processing there
- Move .asModuleView() to ModuleViewModifier for proper animation
- Use .themeModal() rather than .sheet()
2024-10-11 00:24:06 +02:00
Davide
d589f1162d
Reorganize shared objects ()
Mainly:

- Aggregate shared/mock entities in less scattered files
- Review package dependencies

Also:

- Decouple ProfileRepository from Core Data Repository in UtilsLibrary
(filters done by ProfileManager)
2024-10-10 16:20:36 +02:00
Davide
0aac8cd9f3
In-place NetworkExtension profiles ()
Profiles are being maintained in two places:

- Core Data
- NetworkExtension

Core Data is redundant for local profiles, so make NetworkExtension the
only source of truth.
2024-10-10 16:03:02 +02:00
Davide
f4505d0efd
Refactor ProfileEditor to leverage ProfileType ()
Closes 
2024-10-06 13:41:02 +02:00
Davide De Rosa
17f1331de0
Bump version 2024-10-05 12:29:32 +02:00
Davide
f66193cf78
Several fixes in ProfileManager ()
- [x] Search not accounted for when reloading profiles
- [x] Remote profile being saved twice
- [x] Add some logging
2024-10-04 20:58:11 +02:00
Davide De Rosa
a306d61a84
Bump version 2024-10-04 15:54:41 +02:00
Davide De Rosa
c461fe27be
Bump version 2024-10-04 10:02:43 +02:00
Davide
5fb6f4f4d2
Refactor static functions/entities in Library ()
Reduce the impact of hidden dependencies on BundleConfiguration and
Constants.shared

Fixes 
2024-10-04 09:58:42 +02:00
Davide De Rosa
2d32e099b7
Rename repositories 2024-10-04 02:43:18 +02:00
Davide
0917e47ea3
Granularize app features ()
Split .networkSettings and add .sharing for 
2024-10-03 12:13:03 +02:00
Davide De Rosa
dcdcec4da7
Bump version 2024-10-02 13:46:27 +02:00
Davide
3ab80cd076
Fix incorrect VPN status in some cases ()
Regression following 
2024-10-02 13:40:44 +02:00
Davide
51dbc3f246
Add App Intents extension stub ()
Just the Xcode metadata, no actual content.
2024-10-01 10:17:20 +02:00
Davide De Rosa
f4a17e6df8
Restore accidentally removed Package.resolved 2024-10-01 09:58:51 +02:00
Davide De Rosa
8616c002f9
Bump version 2024-10-01 08:05:09 +02:00
Davide De Rosa
6aa9abc35a
Bump version 2024-09-30 21:47:18 +02:00
Davide De Rosa
5640d4abca
Add another missing key 2024-09-30 21:27:06 +02:00
Davide De Rosa
c079f606a9
Bump version 2024-09-30 21:16:31 +02:00
Davide De Rosa
0df95f9fab
Bump version 2024-09-30 21:10:17 +02:00
Davide De Rosa
51cb1d2d38
Fix library about previous commit 2024-09-30 21:08:45 +02:00
Davide
4b1f6e547b
Fix some on-demand behavior ()
Fixes  
Fixes 
2024-09-30 19:35:41 +02:00
Davide De Rosa
3f60dee9a2
Add missing Info.plist document key 2024-09-30 19:00:09 +02:00
Davide De Rosa
6a1da55841
Bump version 2024-09-30 18:11:17 +02:00
Davide De Rosa
e9298218be
Bump version 2024-09-30 17:45:52 +02:00
Davide
0e4dd086ef
Import profiles with on-demand disabled ()
Make it friendly to Shortcuts automation by default.
2024-09-30 17:40:24 +02:00
Davide
4877c2bd20
Restrict paywall to on-demand rules ()
Rather than whole module.

Closes 
2024-09-30 15:56:32 +02:00
Davide
a9fa6a2f62
Maintain one configuration per profile ()
Helps with automation. Install the VPN configuration before persisting a
profile, so that the 1:1 reference with OS settings is maintained.
Likewise, uninstall the VPN configuration after removing a profile.

This before-save hook also resolves a problem with multiple imports,
where multiple VPN permission alerts coalesce if no VPN configuration is
installed. Now the first import waits for the permission synchronously.

Fixes 
2024-09-30 14:56:20 +02:00
Davide
989886c434
Fix description of parsing errors on import ()
Fixes 
2024-09-28 00:01:01 +02:00
Davide
fbc6ece59d
Reorganize library into AppUI ()
Closes 
2024-09-26 23:13:55 +02:00
Davide
4124ff5cae
Lock app with FaceID ()
Restore feature as-is from v2.

Closes 
2024-09-25 19:32:07 +02:00
Davide De Rosa
b7e8e15d1b
Bump version 2024-09-24 17:56:27 +02:00
Davide De Rosa
41e8d2c5f5
Bump version 2024-09-24 11:20:00 +02:00
Davide De Rosa
d12677f657
Bump version 2024-09-23 15:28:46 +02:00
Davide
6cc86e8668
Import v3 code ()
Closes 
2024-09-23 15:02:26 +02:00
Davide De Rosa
6bfda3487b
Attempt release 2024-09-22 16:29:08 +02:00
Davide De Rosa
9ada8e1a04
Fix again 2024-09-22 16:29:00 +02:00
Davide De Rosa
913a7c61b3
Try fix signing 2024-09-22 16:27:55 +02:00
Davide De Rosa
ea4028d33c
Attempt release 2024-09-22 16:20:20 +02:00
Davide De Rosa
ffb1a26e30
Set distribution certs for release 2024-09-22 16:20:07 +02:00
Davide De Rosa
d1d66dcbb3
Attempt release 2024-09-22 16:16:26 +02:00
Davide De Rosa
a98cedfd7d
Attempt release 2024-09-22 16:02:40 +02:00
Davide De Rosa
1a6c5fd303
Attempt release 2024-09-22 15:58:52 +02:00
Davide De Rosa
10cfc8e54a
Attempt release 2024-09-22 15:55:50 +02:00
Davide De Rosa
9e2b757ec5
Attempt release 2024-09-22 15:43:34 +02:00
Davide De Rosa
18b933d36e
Respect global macOS accent () 2024-02-03 11:52:29 +01:00
Davide De Rosa
e3f4443cc0
Attempt release 2024-01-19 00:07:12 +01:00
Davide De Rosa
5fe9d7405f
Attempt release 2024-01-14 15:14:42 +01:00
Davide De Rosa
64d1131fdd
Update copyright
Closes 
2024-01-14 14:36:55 +01:00
Davide De Rosa
cdd33c881d
Attempt release 2024-01-14 14:04:39 +01:00
Davide De Rosa
ea0fd51362
Attempt release 2024-01-11 18:18:23 +01:00
Davide De Rosa
4b909ebf8a
Attempt release 2024-01-11 17:52:31 +01:00
Davide De Rosa
917e712510
Attempt release 2024-01-11 16:47:40 +01:00
Davide De Rosa
63cbf39a8a
Attempt release 2024-01-11 00:16:47 +01:00
Davide De Rosa
328e2bafd6
Attempt release 2024-01-11 00:15:49 +01:00
Davide De Rosa
e8d8f27750
Attempt release 2024-01-10 18:51:03 +01:00
Davide De Rosa
821d4c79f4
Attempt release 2024-01-09 18:18:53 +01:00
Davide De Rosa
dde2d22eed
Revisit submission of OpenVPN diagnostic report ()
Some improvements:

- Suggest replacing the template with the description of the issue
- Attach app log
- Append purchased features

Also reuse the same body for `mailto:` reports, as metadata were not
being attached in that case.

Closes 
2024-01-07 12:11:16 +01:00
Davide De Rosa
60ed10e45e
Attempt release 2024-01-06 00:10:22 +01:00
Davide De Rosa
87804e89d8
Attempt release 2024-01-06 00:07:26 +01:00
Davide De Rosa
978c74ad6e
Attempt release 2024-01-05 23:55:19 +01:00
Davide De Rosa
4836bbac18
Restore proper OpenVPN connectivity () 2024-01-05 23:54:16 +01:00
Davide De Rosa
7295249cb8
Attempt release 2023-12-31 01:24:28 +01:00
Davide De Rosa
5c5697762b
Add minimal TV app
Closes 
2023-12-31 01:21:38 +01:00
Davide De Rosa
1551b59f21
Use async in ProductManager ()
Drop legacy completion handlers. Push `Task` to the views.

Also:

- Group library tests in a test plan
- Fix a broken library dependency
2023-12-21 08:09:52 +01:00
Davide De Rosa
a0da930d98
Refactor and test ProductManager ()
Carefully drop the StoreKit and Kvitto dependencies for ProductManager
to be testable.

Rebuild test target completely to start writing meaningful tests in
general.
2023-12-20 20:43:39 +01:00
Davide De Rosa
fe127e258b
Fix package dependencies 2023-12-17 08:09:51 +01:00
Davide De Rosa
5cfa32dbb7
Add data count to WireGuard connections ()
Closes 
2023-12-14 22:18:20 +01:00
Davide De Rosa
4a92acbeb9 Attempt release 2023-10-14 19:50:24 +02:00
Davide De Rosa
cc6c8a90d7 Bump version
Drop stale version in project.
2023-10-14 16:06:17 +02:00
Davide De Rosa
2596622a43 Attempt release 2023-10-10 23:01:19 +02:00
Davide De Rosa
12c08c132c
Update metadata and translations () 2023-10-10 23:00:19 +02:00
Davide De Rosa
7de000148f
Level up to strict Concurrency ()
Trigger and resolve some additional Concurrency issues.
2023-09-10 20:36:52 +02:00
Davide De Rosa
c5cf0ca1d2
Shift async responsibility to ProductManager ()
SandboxChecker should not care about what actor is running on.

Better than 
2023-09-10 19:08:31 +02:00
Davide De Rosa
9d72dc43a2 Attempt release 2023-09-10 11:21:59 +02:00
Davide De Rosa
0b755c1c77 Attempt release 2023-09-10 10:35:22 +02:00
Davide De Rosa
0872c27fce
Move CloudKit logic to PersistenceManager ()
Observe updates rather than execute operations imperatively. Also refine
responsibilities of AppContext and CoreContext.
2023-09-10 10:34:42 +02:00
Davide De Rosa
3891723356 Attempt release 2023-09-10 08:09:05 +02:00
Davide De Rosa
6b0a08a189 Attempt release
Fix sed syntax on Mac.
2023-09-10 01:08:07 +02:00
Davide De Rosa
a38e3fed7a
Look up TestFlight flag asynchronously ()
Xcode has been quite obnoxious recently with this issue. Start the app
with the most restrictive type (.undefined), relax restrictions after
looking up sandbox and app receipt.
2023-09-10 00:52:39 +02:00
Davide De Rosa
a4ca8cc996
Support iCloud sync as an option ()
Sync will be enabled on upgrade for consistency with current behavior,
and disabled for new installs.

Fixes 
2023-09-09 20:29:04 +02:00
Davide De Rosa
a3cfde1950
Drop v2 migrations () 2023-09-08 22:18:41 +02:00
Davide De Rosa
f159252e24
Replicate Diagnostics in Settings ()
As the only link to "Diagnostics" appears in the profile screen, when
there are no profiles the screen is unreachable. Replicate the same
entry in Settings.
2023-08-06 20:27:16 +02:00
Davide De Rosa
19e52bfd59 Attempt release 2023-07-30 18:01:44 +02:00
Davide De Rosa
388af4a73c Attempt release 2023-07-30 17:47:41 +02:00
Davide De Rosa
db4c6094ea Attempt release 2023-07-24 23:32:51 +02:00
Davide De Rosa
38cca79683 Attempt release 2023-07-23 13:59:56 +02:00
Davide De Rosa
6ede6f052a
Allow editing of OpenVPN endpoints ()
Hosts only:

- Add new
- Edit/delete existing
- Reorder

Closes 
2023-07-23 12:45:47 +02:00
Davide De Rosa
1c3cbe02e5
Improve OpenVPN Endpoint UX ()
- Make selection linear by address
- Do not hide endpoints when automatic, show disabled
- Suggest manual endpoint required
- Pre-expand selected endpoint address
- Do not dismiss on selection, because selected value is not visible in
ProfileView
2023-07-22 17:10:16 +02:00
Davide De Rosa
0804c6b38e Attempt release 2023-07-06 18:47:35 +01:00
Davide De Rosa
1935d9e92c Attempt release 2023-07-06 11:10:10 +01:00
Davide De Rosa
fac06f58db Use versioned TunnelKit 2023-07-06 11:09:59 +01:00
Davide De Rosa
cf43e1cd7b Attempt release 2023-07-06 11:05:27 +01:00
Davide De Rosa
addbf8ab5f Update TunnelKit with keychain fix 2023-07-06 11:05:14 +01:00
Davide De Rosa
b5d230f0b9 Attempt release
Use TunnelKit 6.1.0
2023-07-05 17:16:09 +01:00
Davide De Rosa
98e5e4cdde
Share common protocols across localized strings () 2023-07-05 17:18:33 +02:00
Davide De Rosa
bf70c7c59a
Reorganize app folders () 2023-07-04 22:29:43 +02:00
Davide De Rosa
bd6340ce77
Split reusable views into extensions ()
Like in 
2023-07-03 17:37:16 +02:00
Davide De Rosa
de7e574fec Do some housekeeping
- Upgrade Xcode project

- Fix Twitter link in README
2023-07-03 12:30:26 +01:00
Davide De Rosa
278efaf347
Refactor domain errors () 2023-07-02 12:51:50 +02:00
Davide De Rosa
3a06d6c984 Do not use spaces in filenames 2023-06-18 10:05:10 +02:00
Davide De Rosa
7ccb10febc
Rethink library architecture () 2023-05-24 18:19:47 +02:00
Davide De Rosa
40330cc87a Attempt beta release 2023-04-18 18:15:39 +02:00
Davide De Rosa
1fd38790e4 Attempt beta release 2023-04-18 17:24:47 +02:00
Davide De Rosa
7a7a815979 Attempt beta release 2023-04-06 12:51:01 +02:00
Davide De Rosa
aec7f8eefe Attempt beta release 2023-04-05 16:32:50 +02:00
Davide De Rosa
34e41ba93f Attempt beta release 2023-04-04 18:59:44 +02:00
Davide De Rosa
d4d3d97081 Attempt beta release 2023-04-04 17:11:44 +02:00
Davide De Rosa
3678d01dc1 Prepare release
- Use versioned TunnelKit

- Update targets in README
2023-04-04 17:10:54 +02:00
Davide De Rosa
7e2e4d6caa
Import missing translations () 2023-04-04 17:07:41 +02:00
Davide De Rosa
e050c0c8df
Catch WireGuard parsing errors properly ()
They could be reported as OpenVPN errors.
2023-04-03 08:48:18 +02:00
Davide De Rosa
33e0ceec04
Lock in background ()
There are plenty of situations where the app kind of stays in the
foreground, but goes to .inactive state. Lock screen could be
annoying in those cases.
2023-03-31 23:47:29 +02:00
Davide De Rosa
e9f11d1dbe Attempt beta release 2023-03-25 17:07:58 +01:00
Davide De Rosa
76084dbd30 Attempt beta release 2023-03-20 15:07:26 +01:00
Davide De Rosa
2d00a05c4c Attempt beta release 2023-03-20 14:14:20 +01:00
Davide De Rosa
325e10845d
Option to lock app when entering background () 2023-03-20 11:00:01 +01:00
Davide De Rosa
7346bfc65c
Add 3D Touch items ()
- Enable/Disable VPN

- Reconnect (if enabled)

Move lifecycle operations to SceneDelegate.
2023-03-19 20:04:31 +01:00
Davide De Rosa
4a2dec9c6a Attempt beta release 2023-03-19 16:11:09 +01:00
Davide De Rosa
4faeb85295 Attempt beta release
Update bundle in beta script.
2023-03-19 14:42:56 +01:00
Davide De Rosa
fbd32d8b26
Fine-tune SwiftLint () 2023-03-19 14:41:53 +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 () 2023-03-19 08:41:51 +01:00
Davide De Rosa
c85f3d894e
Restore DNS "Domain" setting () 2023-03-17 22:16:04 +01:00
Davide De Rosa
f06f097f27
Add SwiftLint phase () 2023-03-17 21:55:47 +01:00
Davide De Rosa
cecf64d871
Move Diagnostics view to Profile bottom () 2023-03-17 21:46:53 +01:00
Davide De Rosa
2e10aab039
Extend authentication methods ()
* 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
6e6c212649 Move .killSwitch property to extras 2022-11-10 07:55:31 +01:00
Davide De Rosa
ba09dcffa7
Full OpenVPN XOR patch () 2022-11-06 18:08:41 +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 
2022-10-30 11:54:52 +01:00
Davide De Rosa
aca431aac5
Run tests on PR () 2022-10-30 11:53:53 +01:00
Davide De Rosa
dad6d820e9 Upgrade project to Xcode 14 2022-10-29 22:18:02 +02:00
Davide De Rosa
e4ec1e642d Attempt beta release 2022-10-29 13:40:50 +02:00
Davide De Rosa
b2ec7f0422 Attempt beta release 2022-10-29 13:01:18 +02:00
Davide De Rosa
cdc05f0c10 Update TunnelKit
Split IP settings and routes. Now properly handling local routes.
2022-10-29 12:28:27 +02:00
Davide De Rosa
0f04bdcce3 Attempt beta release 2022-10-28 15:42:10 +02:00
Davide De Rosa
0bf1c71504 Update TunnelKit
- Default gateway not properly configured
2022-10-28 15:41:49 +02:00
Davide De Rosa
b431ce4f05 Attempt beta release 2022-10-27 00:43:41 +02:00
Davide De Rosa
e9b7be6334 Update TunnelKit
- Could encode but not decode profiles with IPv6 endpoints from
Core Data

- Improve options logging
2022-10-27 00:42:48 +02:00
Davide De Rosa
e1d8ec6066 Attempt beta release 2022-10-25 09:07:39 +02:00
Davide De Rosa
7c2d120a09 Update TunnelKit to fix 2.0.1 regressions
Fixes 
2022-10-25 09:06:35 +02:00
Davide De Rosa
f6e0caaa73 Implement --remote-random-hostname
- Update TunnelKit

- Show in UI
2022-10-17 09:06:52 +02:00
Davide De Rosa
54dc2307e9 Attempt beta release 2022-10-16 10:09:35 +02:00
Davide De Rosa
c345265451 Attempt beta release 2022-10-16 08:36:17 +02:00
Davide De Rosa
f95e4f228d
Implement --route-nopull via TunnelKit ()
Use it internally to override server-pushed settings.
2022-10-13 19:09:51 +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
1cf74d56d6 Update OpenSSL to 1.1.1q 2022-10-08 08:49:59 +02:00