Commit Graph

3111 Commits

Author SHA1 Message Date
Davide
1942b82ebb
Rework App+Kit as monorepository (#1055)
Simplify development and maintenance immensely by making this a
monorepository:

- Convert PassepartoutKit and VPN bindings to local packages
  - OpenVPN/OpenSSL
  - WireGuard/Go
- Make PassepartoutKit available via
  - Source submodule for production (private)
- [Binary XCFramework for
development](https://github.com/passepartoutvpn/passepartoutkit)
 - Add PassepartoutKit Demo in root
   - Deploy package later
2025-01-13 12:26:53 +01:00
Davide
537c5fd12c
Provide default values for non-frozen enums (#1054) 2025-01-12 23:12:05 +01:00
Davide
9560acff3a
Bump version 2025-01-08 00:53:46 +01:00
Davide
46206ae76f
Restore server entitlement for WireGuard to work on macOS (#1053)
The entitlement "clean-up" was pushed by the App Review, but this had
horrible consequences apparently.

In fact, the WireGuard Go adapter is unable to bind the UDP socket
without the "server" entitlement, making WireGuard on macOS silently
broken:

```
Unable to update bind: listen udp4 :0: bind: operation not permitted
```

Regression in #1042
2025-01-08 00:52:22 +01:00
Davide
ea8176047d
Read user level in tunnel too 2025-01-06 21:50:38 +01:00
Davide
b16952a852
Bump version 2025-01-05 18:10:03 +01:00
Davide
5caf6da23f
Edit OpenVPN remotes (#1052)
In a further subview. Remotes are not editable in providers.
2025-01-05 18:08:29 +01:00
Davide
a91f71345c
Log profiles decoding time 2025-01-05 16:32:18 +01:00
Davide
2f67bcbbf2
Sync local profiles consistently (#1051)
Rather than redoing ProfileManager.observeLocal() altogether:

- Keep the existing profiles subscription (localSubscription)
- Reload ALL local profiles on NE notifications

The reload is "heavy" because each profile save causes a reload of ALL
profiles, but it's the most reliable approach and in the end, it only
takes 1-2msec. It can be improved later.

Partially reverts #1049, because the app did not sync when a VPN
configuration was deleted from the OS settings.
2025-01-04 23:42:10 +01:00
Davide
236df80950
Fix on-demand SSID not being added on macOS (#1050)
Skip CoreLocation completely, not entitled.
2025-01-04 11:01:25 +01:00
Davide
c232fd18a8
Set up local profiles observer once (#1049)
Beyond being useless, reloading the repository across app
active/inactive may spoil notifications and leave the profiles list out
of sync.
2025-01-04 10:46:10 +01:00
Davide
24ddb270aa
Skip backup repository on simulator (#1048)
ProfileManager is behaving crazy because on simulator local and backup
repository point to the same container.
2025-01-04 10:45:51 +01:00
Davide
edb7c29b26
Bump version 2024-12-31 00:49:23 +01:00
Davide
fabb4c664c
Verify tunnel profile periodically (#1047)
Eligibility may have changed during connection. Repeat verification
every 10 minutes.
2024-12-31 00:48:54 +01:00
Davide
34495e88f1
Bump version 2024-12-30 10:58:57 +01:00
Davide
be72e4af61
Speed up detection of OpenVPN ping timeout 2024-12-30 10:54:10 +01:00
Davide
dadd721dc2
Bump version 2024-12-27 17:12:08 +01:00
Davide
df6f3d1fb1
Fix macOS not reconnecting on wake-up (#1046)
Resolve persistent DNS failures in the library. DNS requests were likely
going through a stale tunnel.
2024-12-27 17:10:35 +01:00
Davide
4454a198b9
Handle non-ASCII credentials in OpenVPN (#1045)
Not a regression, just a long-going drag from TunnelKit.
2024-12-27 17:01:25 +01:00
Davide
b300e0b178
Bump version 2024-12-24 09:14:26 +01:00
Davide
df64f8cabb
Use matrix for public_beta and app_review
A tolerant way to cope with scattered approvals. That is, if a
platform build fails to upload, it will not prevent other
platforms from being sent to public_beta/app_review.

The app_store environment is also allowed despite errors, as the
platform builds may have been approved at different times.

This somehow deals with the lottery of getting an approval for
multiple platforms at the same time.

Fixes #1043
2024-12-24 09:12:04 +01:00
Davide
4052a41d6b
Bump version 2024-12-24 08:42:03 +01:00
Davide
1d0661e28c
Continue CI on platform error 2024-12-24 08:41:51 +01:00
Davide
8d7351d5e2
Bump version 2024-12-23 22:48:35 +01:00
Davide
ce3e1f2c9f
Enforce phased release 2024-12-23 22:48:13 +01:00
Davide
3706268bf9
Drop broken macOS code to get SSID (#1042)
Related to #497
2024-12-23 22:47:33 +01:00
Davide
5a4efa9d15
Bump version 2024-12-22 12:24:48 +01:00
Davide
3e04f03b01
Skip local receipt on Apple TV (#1041)
App/Tunnel behavior is inconsistent.
2024-12-22 12:24:20 +01:00
Davide
5acf1982cf
Bump version 2024-12-22 11:47:59 +01:00
Davide
6d62953eff
Improve display of keep-alive options in OpenVPN configuration (#1038)
Timeout was not displayed. Move options to a separate section.
2024-12-22 10:55:56 +01:00
Davide
a187fd56e0
Import manual translations with GPT (#1037)
Save prompt for proper input format.
2024-12-22 10:10:54 +01:00
Davide
2ae615406a
Update API with fixed keep-alive 2024-12-22 08:09:13 +01:00
Davide
f112ea8061
Save last used profile (#1036)
Especially useful on macOS and tvOS where Network Extension does not
retain this information when the profile is disabled. On these
platforms, there's no native way to tell the last used profile, so save
it to UserDefaults and fall back to it when tunnel.currentProfile is
nil.
2024-12-21 22:39:55 +01:00
Davide
60336ba110
Bump version 2024-12-20 23:28:20 +01:00
Davide
e13a84cba3
Fix uncredited features on tvOS (#1033)
This was not apparent on TestFlight, but features from single iOS and
macOS "Full version" purchases were not being credited on the Apple TV
because of the incomplete `#if` conditionals.
2024-12-20 23:21:22 +01:00
Davide
9e18466e2e
Bump version 2024-12-20 21:14:05 +01:00
Davide
a9becd17ad
Fix disconnection on OpenVPN renegotiation (#1032)
Affecting servers with --tls-auth or --tls-crypt enabled. It turned out
to be an extremely old drag from TunnelKit.

See https://github.com/passepartoutvpn/passepartoutkit-source/pull/443
2024-12-20 21:12:36 +01:00
Davide
0d3af046b4
Fall back to production if beta receipt is missing (#1031)
When level is .beta, it was relying on beta receipt exclusively without
falling back to production receipt.

This was preventing the sandbox receipt ("production" in TestFlight)
from being read unless the AppUserLevel was explicitly set to .freemium
(0).
2024-12-20 21:09:02 +01:00
Davide
46d236cb5e
Reuse $PLATFORMS in CI 2024-12-20 21:08:23 +01:00
Davide
59e4e2e4ab
Hide profiles until remote repository is ready
Regression from #1029
2024-12-20 10:39:39 +01:00
Davide
42bf392fff
Do not connect TV profile on server selection (#1030)
You may still connect manually, but iOS/macOS apps mainly serve as
remote to switch servers on the TV.
2024-12-20 10:30:57 +01:00
Davide
f8e623e1fe
Fix regressions with CloudKit synchronization (#1029)
The remote container is shared by ProfileManager and
PreferencesManager, but it must be the same for CloudKit sync
to work properly.

Externalize the logic of onEligibleFeatures() so that the
AppContext singleton can update the managers (and their
repositories) with the new remote store.

Now that the remote profile repository is reloaded every time that
eligible features change, the .removeDuplicates() may also be
restored. Just add a .dropFirst() to skip the initially empty
value of eligible features. Even when features are eventually empty,
a value is always emitted after IAPManager.reloadReceipt()

Lastly, enable Core Data lightweight migration.

Regressions from #1017
2024-12-20 10:05:07 +01:00
Davide
26e97625fa
Update library with HARD_RESET fix (#1028)
https://github.com/passepartoutvpn/passepartoutkit-source/pull/441
2024-12-20 09:56:08 +01:00
Davide
d3eea33656
Bump version 2024-12-18 17:29:37 +01:00
Davide
1f81c3dfea
Resolve NEVPNErrorDomain error and profile duplication on first import (#1026)
Fixes #1025
2024-12-18 17:26:35 +01:00
Davide
1be2510e8c
Bump version 2024-12-18 10:30:17 +01:00
Davide
810b8e4bd4
Fix compile errors on iOS 2024-12-18 10:30:02 +01:00
Davide
34b20ad73b
Bump version 2024-12-18 10:21:09 +01:00
Davide
c527171957
Simplify products (#1024)
Only offer compensations to former purchasers:

- .appleTV to .full purchasers
- .full to .appleTV purchasers

Always suggest .fullTV to new purchasers.

Finally rename:

- .full to .iOS_macOS
- .fullTV to .allFeatures (lifetime)
2024-12-18 10:15:58 +01:00
Davide
2eca757dc6
Verify sharing/TV features only on profile save (#1023)
Do not verify sharing/TV on connect iOS/macOS.
2024-12-18 09:16:58 +01:00