Commit Graph

369 Commits

Author SHA1 Message Date
Davide De Rosa f159252e24
Replicate Diagnostics in Settings (#342)
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 (#335)
Hosts only:

- Add new
- Edit/delete existing
- Reorder

Closes #206
2023-07-23 12:45:47 +02:00
Davide De Rosa 1c3cbe02e5
Improve OpenVPN Endpoint UX (#332)
- 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 (#324) 2023-07-05 17:18:33 +02:00
Davide De Rosa bf70c7c59a
Reorganize app folders (#323) 2023-07-04 22:29:43 +02:00
Davide De Rosa bd6340ce77
Split reusable views into extensions (#322)
Like in #321
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 (#310) 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 (#301) 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 (#280) 2023-04-04 17:07:41 +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 33e0ceec04
Lock in background (#275)
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 (#270) 2023-03-20 11:00:01 +01:00
Davide De Rosa 7346bfc65c
Add 3D Touch items (#267)
- 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 (#265) 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 (#264) 2023-03-19 08:41:51 +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 cecf64d871
Move Diagnostics view to Profile bottom (#261) 2023-03-17 21:46:53 +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 6e6c212649 Move .killSwitch property to extras 2022-11-10 07:55:31 +01:00
Davide De Rosa ba09dcffa7
Full OpenVPN XOR patch (#245) 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 #181
2022-10-30 11:54:52 +01:00
Davide De Rosa aca431aac5
Run tests on PR (#241) 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 #237
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 (#230)
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
Davide De Rosa 88f40525cf Fix warning about script w/o output 2022-10-08 08:41:22 +02:00
Davide De Rosa 145c9cbcc9 Drop old script fixing frameworks bug 2022-10-05 21:58:21 +02:00
Davide De Rosa 63c3ac80b4 Attempt beta release 2022-10-04 22:37:53 +02:00
Davide De Rosa ecb3138817 Attempt beta release 2022-09-25 08:55:15 +02:00
Davide De Rosa 496d993e3d Attempt beta release 2022-09-23 23:07:40 +02:00
Davide De Rosa 1364d5153e Attempt beta release 2022-09-23 22:57:36 +02:00
Davide De Rosa be6726fbd8 Attempt beta release 2022-09-23 21:56:37 +02:00
Davide De Rosa 7fe63ba796 Use versioned TunnelKit 2022-09-23 21:54:40 +02:00
Davide De Rosa db6f7bdf28 Revisit app metadata and screenshots
- Add script to import localized metadata

- Update app name, subtitle, keywords

- Update App Store description

    - Replace "OpenVPN" with "VPN"

    - Add .conf file extension (WireGuard)

    - Drop PIA (404)

    - Drop trailing notices

- Update README snapshots (Mac versions unused)

- Update App Store screenshots

- Revert to legacy launch screen (SwiftUI method stretches)
2022-09-15 17:41:22 +02:00
Davide De Rosa 38bdbc3697 Move diagnostics to settings 2022-09-12 22:58:37 +02:00
Davide De Rosa 940e0cf8c9 Attempt beta release 2022-09-05 22:35:22 +02:00
Davide De Rosa f36d7596d0 Integrate settings with about screen
Move everything to SettingsView and remove invite actions.
2022-08-27 23:15:51 +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 9195d426e4 Attempt beta release 2022-07-18 08:03:24 +02:00
Davide De Rosa b26e334881 Get Mac strings from main bundle
Alter bundle in SwiftGen configuration file.
2022-07-18 07:55:56 +02:00
Davide De Rosa 04faf57d4c Send app to background if started hidden
Sandbox had to be enabled in order to submit binary to App Store
Connect, therefore command line arguments cannot be used to tell
if the app was started by the launcher.

However, given that launcher starts app in hidden state, we can
safely assert that if the app is hidden on start, it was started
by the launcher.

See f33380b4e2

Also drop automatic signing on Mac bundle and unused utils.
2022-07-18 07:55:56 +02:00
Davide De Rosa 32e548421f Attempt beta release 2022-07-17 14:50:05 +02:00
Davide De Rosa 781291940f Enforce window appearance on 'Show' after closure 2022-07-16 21:24:53 +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 df0d40c556 Add launcher target
- Launch main app in background then die

- Do not launch app if already running

- Launch app binary relative to launcher location
2022-06-25 16:53:38 +02:00
Davide De Rosa 7ba9879c8c Revisit constants structure
Move some stuff back to App:

- Constants, and split library-dependent

- InApp entities and constants

Flatten global constants hierarchy.
2022-06-25 14:36:28 +02:00
Davide De Rosa 3c9511cd0c Only support Catalyst where required
- App
- Tunnels
2022-06-25 13:28:28 +02:00
Davide De Rosa 9a8477225e Refactor library into domain + impl 2022-06-23 23:31:01 +02:00
Davide De Rosa 8504998bbb Reorganize app-specific shared code into AppShared 2022-06-19 14:41:26 +02:00
Davide De Rosa 02a9db057f Update TunnelKit
- Set explicit tunnel log path

- OpenSSL 1.1.1o
2022-06-19 13:33:49 +02:00
Davide De Rosa 10b4c321c8 Separate context responsibilities
- Split Core and App context

- Move .shared instantiation to extension

Context may differ by target.
2022-06-16 13:42:53 +02:00
Davide De Rosa 14b42fbea5 Persist managers state to generic key-value store
Move all persisted state out of AppManager to where it really
belongs. To do that, inject a shared KeyValueStore object into
managers that need to persist part of their state in a strongly
typed manner.

Below are persisted states:

- PersistenceManager
    - persistenceAuthor

- ProfileManager
    - activeProfileId

- UpgradeManager (formerly AppManager)
    - didMigrateToV2 (migrate former value)

- VPNManager
    - tunnelLogFormat
    - masksPrivateData

A similar approach is used for app-specific preferences, by using
a strongly typed enum (AppPreference) together with SwiftUI
@AppStorage property wrapper.

Worth moving logging logic into a specific LogManager.

Finally, drop any former view dependency on AppManager, as states
are now accessed through specific managers.
2022-06-16 13:42:37 +02:00
Davide De Rosa 127ba28a8c Run SwiftGen manually
Build phase may raise concerns in CI.
2022-06-16 13:42:21 +02:00
Davide De Rosa 83cdd460e4 Attempt beta release 2022-05-21 19:15:48 +02:00
Davide De Rosa a2d4ed370e Revisit sidebar with per-profile VPN toggles 2022-05-21 19:15:37 +02:00
Davide De Rosa ddce671c62 Move theme extensions to non-reusable 2022-05-18 11:33:29 +02:00
Davide De Rosa b1d77cccbc Attempt beta release 2022-05-18 11:18:57 +02:00
Davide De Rosa 160338e62a Add credits in Mac about 2022-05-17 19:57:19 +02:00
Davide De Rosa 4c2a471b9f Attempt beta release 2022-05-17 19:34:13 +02:00