Commit Graph

146 Commits

Author SHA1 Message Date
Davide De Rosa e2cd0bc7e1 Reuse intent creation code from IntentDispatcher 2019-03-27 23:47:35 +01:00
Davide De Rosa d24295295a Drop unnecessary downcast 2019-03-27 23:03:19 +01:00
Davide De Rosa 77658e5cc6 Show shortcut add on viewDidAppear 2019-03-27 22:36:23 +01:00
Davide De Rosa c9d170768a Create shortcuts from manager
Delegate Intents callbacks to a single place.
2019-03-27 22:22:32 +01:00
Davide De Rosa ae88fdfad6 Rename shortcut manager vc 2019-03-27 22:09:08 +01:00
Davide De Rosa d29aafe08e Propagate addShortcut delegation in ConnectTo 2019-03-27 21:08:51 +01:00
Davide De Rosa 05ba654b2f Reload in the background on edit 2019-03-27 21:08:51 +01:00
Davide De Rosa f0d0eb5ed3 Sort shortcuts by phrase 2019-03-27 21:08:51 +01:00
Davide De Rosa 5ee18071b0 Add shortcut and delegate to manager 2019-03-27 21:08:51 +01:00
Davide De Rosa 0d619ffd62 Pack Siri controllers to simplify @available 2019-03-27 21:08:51 +01:00
Davide De Rosa e1638d1c73 Link add shortcut to manager 2019-03-27 21:08:51 +01:00
Davide De Rosa d5b7a1e576 Show existing Siri shortcuts as first controller 2019-03-27 21:08:51 +01:00
Davide De Rosa b459495e90 Reuse controller title 2019-03-27 21:08:36 +01:00
Davide De Rosa f3e6c34bd1 Customize block on passphrase input cancellation
Do not delete .ovpn file when importing from iTunes.
2019-03-25 20:33:17 +01:00
Davide De Rosa 8f0e28e315 Forward input passphrase to parser 2019-03-25 20:33:17 +01:00
Davide De Rosa dc81356b31 Retry import after passphrase input
Isolate .ovpn parsing routines.

- AppDelegate (external URL)
- ImportedHosts

Only delete URL if error is not encryption passphrase.
2019-03-25 20:33:07 +01:00
Davide De Rosa 8a855bf538 Show app version in About cell 2019-03-22 19:29:15 +01:00
Davide De Rosa fdc3869d29 Move baseVPNConfiguration to TransientStore
Simplifies configuration update.
2019-03-22 19:09:52 +01:00
Davide De Rosa 15f23dd448 Retain Pool.name internally but show .localizedName
Use name from API if available (XXX: not localized).

Make it private to avoid unintended use in app.
2019-03-21 22:21:42 +01:00
Davide De Rosa af51911536 Replace Cancel with X to exit shortcuts
Misleading!
2019-03-19 18:01:15 +01:00
Davide De Rosa 63d74b6feb Reorganize shortcut sections 2019-03-19 18:01:15 +01:00
Davide De Rosa c0be33dacc Add descriptive footer to Siri section 2019-03-19 18:01:15 +01:00
Davide De Rosa 03c8e43ce7 Tweak intent donations
- Activate -> EnableVPN
- Connect -> ConnectVPN/MoveToLocation
- Disconnect -> DisableVPN
2019-03-19 18:01:15 +01:00
Davide De Rosa 88a1e39a6e Add a Done button to exit connect shortcuts 2019-03-18 22:40:06 +01:00
Davide De Rosa 15602f7dc9 Pick profile/location for connection intent
- Host: ConnectVPN intent
- Provider: requires Pool selection
2019-03-18 22:13:36 +01:00
Davide De Rosa 98160fdccb Split shortcuts into VPN and Trust 2019-03-18 21:00:07 +01:00
Davide De Rosa 8f3d2f0b15 Add basic cells for any possible shortcut 2019-03-18 20:54:47 +01:00
Davide De Rosa 1c103c639d Add shortcuts view controller stub 2019-03-18 20:54:47 +01:00
Davide De Rosa c3e6e1ecd5 Move intents to Core target
Suppress responses for consistency.
2019-03-18 17:06:35 +01:00
Davide De Rosa 5237aa3916 Import Core framework into iOS target 2019-03-18 11:52:19 +01:00
Davide De Rosa 9dcd6de873 Always donate a MoveTo when provider 2019-03-10 14:13:30 +01:00
Davide De Rosa 7a21338042 Update copyright 2019-03-09 11:44:44 +01:00
Davide De Rosa 5d2450b985 Donate interactions
- Connect on add profile (covers first profile)
- Connect on activate profile
- Disable on connect to VPN
- Trust on add current Wi-Fi
- Trust on cellular network
- MoveTo on first connected location (if provider)
- MoveTo on location change (if provider)
2019-03-09 11:23:50 +01:00
Davide De Rosa 2e4d2162ac Define custom intents
- Connect
- Disable
- (Un)Trust current network
- (Un)Trust cellular network
- Move to location
2019-03-09 11:23:47 +01:00
Davide De Rosa 5ccdece72b Do not reload views on profile renaming
Use explicit accessor, implicit didSet is worrisome.

Fixes #37
2019-03-08 12:57:51 +01:00
Davide De Rosa ccf7a68ba8 Show raw debug log in beta 2019-03-07 23:00:14 +01:00
Davide De Rosa 9441a31fd1 Add button to test app termination
Might help reproducing #19
2019-03-06 17:46:06 +01:00
Davide De Rosa fedea91087 Add FAQ in About 2019-02-03 22:08:24 +01:00
Davide De Rosa afcb45c614 Cache fetched license content
And show an error message when unable to fetch license URL.
2018-12-04 10:45:12 +01:00
Davide De Rosa 534f1e2094 Show activity indicator while loading license 2018-12-04 10:34:38 +01:00
Davide De Rosa 8270c20179 Fetch license content via URL 2018-12-04 10:33:19 +01:00
Davide De Rosa a486cb4265 List licenses/notices in full table 2018-12-04 10:33:19 +01:00
Davide De Rosa 3d5c2bb8f5 Move .ovpn parser to TunnelKit 2018-11-10 11:39:36 +01:00
Davide De Rosa c7cb00f679 Move ProfileKey to separate file 2018-11-06 11:16:34 +01:00
Davide De Rosa e7d2dde972 Add/remove profile to/from filesystem immediately
Save unnecessary serialization of unaffected profiles.
2018-11-04 15:06:53 +01:00
Davide De Rosa bc0568cc38 Do not re-save profiles on (de)activate
Only service JSON is affected.
2018-11-04 14:55:25 +01:00
Davide De Rosa c1065751b6 Add method to parse configuration from [String]
With an optional original URL. Helps testing. Take the chance to
also disambiguate method overloads.
2018-11-04 11:45:19 +01:00
Davide De Rosa 9e7c4960e5 Update GitHub URL in license preamble 2018-11-04 10:53:16 +01:00
Davide De Rosa 76a3e48242 Make serialize() the very first call in delegate 2018-11-04 10:49:40 +01:00
Davide De Rosa 3f5d23a34c Drop redundant table/model updates on remove
Already done in commit row, and also breaks animation.
2018-11-04 10:49:40 +01:00
Davide De Rosa 8e445e90b3 Move profile reactions to delegate
- Activation
- Removal
2018-11-04 10:49:40 +01:00
Davide De Rosa b051f8118f Add "Edit" item to rename host profile
Disabled in network profiles. Reuse same title style/constraints
and message strings in host wizard.

For consistency, rename activate() to activateProfile(). And it's
not even an IBAction.
2018-11-02 15:52:36 +01:00
Davide De Rosa 3f1e98f8ac Delegate profile management from ConnectionService
Makes much more sense than dumb wizard notifications. Organizer is
already a ConnectionServiceDelegate.
2018-11-02 15:20:37 +01:00
Davide De Rosa 88124f5588 Replace source section with web section 2018-10-30 20:44:58 +01:00
Davide De Rosa 2564f2446d Show disclaimer from website 2018-10-29 21:25:22 +01:00
Davide De Rosa fe85677e68 Add privacy policy 2018-10-29 21:25:08 +01:00
Davide De Rosa 17ebaccbad Add title to version screen 2018-10-29 21:25:08 +01:00
Davide De Rosa fec2f02df5 Move Credits inside Version 2018-10-29 21:25:06 +01:00
Davide De Rosa cced9b018f Fix provider name ordering
Define intrinsecally with Comparable.
2018-10-29 17:48:17 +01:00
Davide De Rosa 3d62728a95 Fix detail replacement in compact mode
Do not push created profile onto presented profile or any other
screen deeper inside (e.g. Parameters).
2018-10-27 22:17:53 +02:00
Davide De Rosa 06ecd3367f Overwrite pending profile when reimporting
- Overwrite title field
- Remove old .ovpn

useSuggestedTitle() is only called on load, it will never
overwrite user input unless there's a new import.
2018-10-27 20:41:47 +02:00
Davide De Rosa 326c5b823d Observe wizard creation via notifications
Flow is too scattered to safely maintain delegation.
2018-10-27 20:11:26 +02:00
Davide De Rosa b7dc72a5e9 Sort hosts ignoring case 2018-10-27 16:56:41 +02:00
Davide De Rosa 33849c8ec8 Retain credentials of replaced host profile 2018-10-27 16:00:34 +02:00
Davide De Rosa ad063965da Retain back button in import flow 2018-10-27 15:01:51 +02:00
Davide De Rosa 0f43255676 Show warning alert before continuing import
Fixes #16
2018-10-27 15:01:51 +02:00
Davide De Rosa 42c94c3a14 Delete openURL .ovpn on Cancel 2018-10-27 13:35:21 +02:00
Davide De Rosa 9f951fc68b Delete .ovpn after import 2018-10-27 13:35:21 +02:00
Davide De Rosa 4098a15172 Allow deletion of imported profiles 2018-10-27 12:43:26 +02:00
Davide De Rosa 5dcc9ff970 Sort imported profiles alphabetically 2018-10-27 12:43:26 +02:00
Davide De Rosa 7b7804091b Deselect profile row on parsing error 2018-10-27 12:43:26 +02:00
Davide De Rosa 663764177a Forward wizard delegate after import
Necessary to delegate adding to organizer.
2018-10-27 12:43:26 +02:00
Davide De Rosa 0e7c0b6388 List imported .ovpn if any, fall back to alert
Use .formSheet presentation (iPad).
2018-10-27 12:43:26 +02:00
Davide De Rosa 25523b5f61 Add stubs for imported hosts 2018-10-27 12:43:26 +02:00
Davide De Rosa 8c1e6d00ca Parse .ovpn file outside of wizard context 2018-10-27 12:33:17 +02:00
Davide De Rosa 422c4da09c Move ParsedFile out of WizardHostVC 2018-10-27 12:08:44 +02:00
Davide De Rosa 0d14349bca Move filename charset to extensions 2018-10-27 12:08:44 +02:00
Davide De Rosa 4b075bcc95 Improve alerts on configuration import error
Issue reporting is currently disabled because un unparsed .ovpn
may contain sensitive data.
2018-10-27 09:43:57 +02:00
Davide De Rosa 821393af70 Refactor configurations in service extension
Reuse same directories of ConnectionService for storing
configuration files.
2018-10-27 09:42:41 +02:00
Davide De Rosa 52ec2bebd5 Restrict charset for host profile title
It's used now as a filename. Remember to also normalize pre-filled
title from imported filename by replacing illegal characters.
2018-10-26 18:57:07 +02:00
Davide De Rosa b5347e04b2 Move Context to ConnectionProfile
Fix an id conflict in credentials.
2018-10-26 18:57:07 +02:00
Davide De Rosa 78abb8c764 Refactor service to use external profile JSONs
- Store only profile key/metadata into service.

- Map profiles by (context, id), context being either provider
or host.

- Initialize cache with a placeholder profile, lazily load full
profile (e.g. after opening profile).

- Only serialize non-placeholder profiles (opened once).

- Do not load full profiles for organizer listing

WARNING: always load active profile as non-placeholder.
2018-10-26 18:30:37 +02:00
Davide De Rosa 8e1b67d151 Infer profile id uniqueness by context
Drop "(provider|host)." prefix, reuse as title.
2018-10-26 17:37:52 +02:00
Davide De Rosa f1f09dde2f Rename support request to join community 2018-10-24 21:57:27 +02:00
Davide De Rosa d781d9c8e0 Add share section with generic activity
To invite a friend.
2018-10-23 12:59:06 +02:00
Davide De Rosa 39c053bd54 Add tweet cell to About 2018-10-23 12:59:06 +02:00
Davide De Rosa 4bd339d456 Remove "Report issue" from About
Will bind report to current profile.
2018-10-23 12:59:06 +02:00
Davide De Rosa 0f374fa8c9 Rename "Submit debug log" to "Report issue" 2018-10-23 12:59:06 +02:00
Davide De Rosa 346a9490ec Save .ovpn internally associated to host profile 2018-10-23 12:57:11 +02:00
Davide De Rosa 23e27535c6 Split support requests
- Generic support on Reddit
- Debug log via email
2018-10-18 16:40:58 +02:00
Davide De Rosa b93000819b Reuse Credits VC to add a Disclaimer 2018-10-18 10:19:08 +02:00
Davide De Rosa 62d1c2d882 Add promoting alert for subreddit 2018-10-18 10:04:23 +02:00
Davide De Rosa b6d430f106 Add link to Reddit 2018-10-18 09:37:18 +02:00
Davide De Rosa f3df03de9b Disclose organizer profiles
Use text instead of checkmark to mark active profile. Allows
restoring disclosure indicator.
2018-10-17 23:58:49 +02:00
Davide De Rosa 5c0738b136 Apply accent color to accessory checkmarks 2018-10-15 00:11:46 +02:00
Davide De Rosa b9ec01945d Initial commit 2018-10-11 09:13:19 +02:00