summaryrefslogtreecommitdiffhomepage
path: root/mullvad-management-interface
AgeCommit message (Collapse)AuthorFilesLines
2023-12-04Perform testing of access methods asynchronouslyMarkus Pettersson2-4/+5
Perform testing of access methods asynchronously in a separate `tokio` task as to not block the daemon from handling other daemon events during the testing window
2023-12-04Move access method testing logic to `mullvad-daemon`Markus Pettersson3-31/+5
Move access method testing logic to `mullvad-daemon`, which means that the implementation details of how the test works is opaque to whatever frontend which wants to issue a test of some (configured) access method.
2023-11-22Obtain tunnel interface from management interface in testsDavid Lönnhager1-0/+4
2023-11-17Add support for applying JSON patches to management interfaceDavid Lönnhager2-0/+8
2023-11-13Add relay override commands to wrapper clientDavid Lönnhager1-1/+20
2023-11-13Add management interface for relay overrideDavid Lönnhager1-0/+2
2023-11-13Add proto message for relay overridesDavid Lönnhager3-0/+54
2023-11-07Add configurable transport protocol to local SOCKS5 access methodMarkus Pettersson2-10/+18
2023-11-06Remove `from_args` constructors for `access_methods` datatypesMarkus Pettersson1-23/+31
In particular, `access_methods::Socks5Local`, `access_methods::Socks5Remote` & `access_methods::Shadowsocks` have got new constructors which are all infallible.
2023-11-06Prefix remote `ip` and `port` with `remote_` in Socks5Local contextsMarkus Pettersson2-16/+21
2023-10-31Replace UpdateRelaySettings with SetRelaySettingsDavid Lönnhager3-200/+6
2023-10-20Relax relay constraints in `test_quantum_resistant_multihop_udp2tcp_tunnel`Markus Pettersson1-0/+6
Loosen up relay constraints in `test_quantum_resistant_multihop_udp2tcp_tunnel`, which makes the test more resilient to changes in the testing environment.
2023-10-13Use optional modifier for optional primitives in protobuf messagesDavid Lönnhager11-242/+130
2023-10-11Make `once_cell` a workspace dependencyMarkus Pettersson1-1/+1
2023-10-09Add `GetApiAddresses` now returns a list of API addressesMarkus Pettersson3-4/+33
2023-10-09Add authentication with username+password for SOCKS5 access methodMarkus Pettersson2-18/+54
Add the option to authenticate against remote SOCKS5 proxies with a username+password combination. It was an oversight that this was not added from the start.
2023-10-09Code cleanupMarkus Pettersson2-25/+7
- Get rid of extraneous calls to `clone` - Address nit: combine similar match arms into a single match arm - Fix `clippy` lint "unused `async` for function with no await statements" - Fix protobuf field numbers should start from 1 - This was not the case for `Socks5Local` & `Shadowsocks` - Refactor code for opening proxy connections - Cut down on duplicated code for setting up a proxied connection in `mullvad-api`. The difference between different connection modes is how they wrap the underlying `TCP` stream. - Remove `enable_access_method` & `disable_access_method` from RPC-client
2023-10-09Add `GetCurrentApiAccessMethod` to show the current API access methodMarkus Pettersson2-1/+13
- Add a new RPC message: `GetCurrentApiAccessMethod`. This message may be used to retrieve the access method which is currently in use by the daemon for connecting to the Mullvad API. - Add `mullvad api-access status` for showing the API access method in use
2023-10-09Code cleanupMarkus Pettersson6-342/+302
- Rename `mullvad_types::api_access.rs` -> `mullvad_types::access_method.rs` - Rename `ApiAccessMethodId` to simply `Id` Prefer to prefix with module name `access_method` to disambiguate use of `Id` instead, like `access_method::Id` - Remove dead code - Remove `AccessMethodSettingsUpdate` - Remove the `retry_attempt` struct field from `ApiConnectionModeProvider`, as it is no longer used for anything. - Fix typos - `GetApiAddressess` is now correctly spelled `GetApiAddresses` (a single trailing "s") - Deprecate the name `ApiAccessMethod` in favor of `AccessMethodSetting` - To decrease the confusion between `AccessMethod` & `ApiAccessMethod`. `AccessMethodSetting` adds some app-specific settings details on top of an `AccessMethod`, which is not too far fetched with the new naming convention. - Refactor proto file - Rename protobuf message `AccessMethodSettingAdd` to `NewAccessMethodSetting` - `AccessMethod` is now its own message - `AccessMethods` is removed - Add `ApiAccessMethodAdd` protobuf message - The `ApiAccessMethodAdd` returns a `UUID` for the . One important change is that new `AccessMethodSetting`s are created in the daemon, rather than in the CLI/other clients. This means that the daemon now has full control over generating new `AccessMethodSetting`s from `AccessMethod`s. - Clean up conversion code to/from `AccessMethod` protobuf types - Simplify `UpdateApiAccessMethod` RPC - Remove the extranous `ApiAccessMethodUpdate` data type - get rid of `ApiAccessMethodUpdate` protobuf message. Use `UUID` of `ApiAccessMethod` to identify which struct to edit. - get rid of `ApiAccessMethodUpdate` struct
2023-10-09Rename `ApiAccessMethod` to `AccessMethodSetting`Markus Pettersson3-28/+28
`ApiAccessMethod` was just an app-centric wrapper around `AccessMethod`.
2023-10-09Code cleanupMarkus Pettersson6-42/+40
- Refactor `RemoveApiAccessMethod` to be based on UUID - Remove debug-prints in `mullvad api-access list` et al - Get rid of `GetApiAccessMethods` RPC - Use the more generic RPC `GetSettings` to get hold of all API access methods instead - Rename `mullvad_types::access_method` to `mullvad_types::api_access` - Remove (unjustified) `#[inline(always)]` attributes
2023-10-09Refactor protobuf `ApiAccessMethod` definitionsMarkus Pettersson4-93/+165
- Replace rpcs `ReplaceApiAccessMethod` and `ToggleApiAccessMethod` in favor of a commmon `UpdateApiAccessMethod` (which resembles `ReplaceApiAccessMethod` in a lot of ways). - `UpdateApiAccessMethod` works with unique identifiers instead of array indices to pinpoint which API access method to update. - Toggling an API access method to be enabled/disabled now happens via `UpdateApiAccessMethod` - Add the useful `UUID` protobuf type definition, which conveys more information that a raw string. - Refactor `SetApiAccessMethod` to use API access method ID - Update `ApiAcessMethod` messages to use `UUID` type for uuid values - Use unique id for removing custom `ApiAccessMethods`
2023-10-09CleanupMarkus Pettersson4-215/+160
- General code cleanup - Fix some typos - Add some doc comments - Address several `TODO` comments - Fix `clippy` warnings - Removed unused dependency `mullvad-api` from `mullvad-cli` - Removed unused dependency `rand` from `mullvad-daemon` - Rename `mullvad proxy` to `mullvad api-access` - Rename `mullvad_types::api_access_method` -> `mullvad_types::access_method` - Remove unused `mullvad api-access edit` arguments - Fix `Display` for `ProxyConfig` printing arguments in the wrong order - Re-phrase `mullvad api-access test` - If the API call failed, point out which tested access method that did not work. - Fix missing `socket_bypass_tx` value for Android - Refactor `ApiAccessMethod` proto definition - Simplify protobuf definitions of `SOCKS5` api access methods - Remove the `Socks5` enum in favor of implementing `Socks5Local` and `Socks5Remote` directly. - Move `enabled` and `name` out of the individual messages and put them next to the `oneof access_method` in `ApiAccessMethod` proto definition - Use derived `PartialEq` and `Hash` from `AccessMethod` - Instead of hand-rolling `Hash` and implementing an ad-hoc version of half of `PartialEq`, these can now be derived and used as one would imaging due to the refactoring wherer `name` and `enabled` was moved out of `AccessMethod` into `ApiAccessMethod`.
2023-10-09Add `mullvad proxy test`Markus Pettersson2-0/+7
For quickly assessing whether an api access method can reach the API or not.
2023-10-09Add `mullvad proxy use`Markus Pettersson2-0/+20
Allow for settings a specific Access Method to use
2023-10-09Add naming custom access methodsMarkus Pettersson2-29/+43
Just a bookkeeping feature for the end user
2023-10-09Add `mullvad api-access enable/disable`Markus Pettersson3-40/+105
Add `mullvad api-access enable/disable`, which allows for toggling API access methods On/Off. Make `ApiConnectionModeProvider` consider status of access method. `ApiConnectionModeProvider` will only be able to return access methods which are enabled, as it will disregard those which are disabled. Add logic to guarantee the invariant that at least one API access method is available for selection by the `ApiConnectionModeProvider`
2023-10-09(De)Serialize uuid for custom API access methodsMarkus Pettersson2-9/+15
2023-10-09Code cleanupMarkus Pettersson4-74/+135
- Add a new datastructures for distinguishing between built-in & custom api access methods - Implement `TryFrom` instead of `From` for fallible conversions - Do not panic if a protobuf-message is ill-formatted - Do not allow removal of built-in api access methods - Refactor notification logic in `access_methods.rs` - Rename `mullvad proxy api` to simply `mullvad proxy` - Since there are no other kinds of proxies at the moment, the subcommand `proxy api` does not make much sense. - Remove left-over comments
2023-10-09Add `mullvad proxy api edit` commandMarkus Pettersson3-0/+33
Allow a user to edit an existing custom api proxy method
2023-10-09Add `mullvad proxy api remove` commandMarkus Pettersson2-0/+11
Allow the user to manually remove a custom api proxy.
2023-10-09Add `mullvad proxy add` commandMarkus Pettersson5-0/+245
Add daemon logic for storing custom access methods & allow a user to add a custom socks5 or shadowsocks proxy. Add all the necessary information for establishing Socks5 connections (both using a local Socks-proxy as well as the normal, remote-proxy, use case) and Shadowsocks connections. Add `api_access_settings` to `mullvad-daemon` Naturally, the Protobuf types has to be mirrored on the Rust/daemon side and lots of boilerplate code had to be written to convert between the two.
2023-09-27Refactor custom list implementationDavid Lönnhager6-203/+42
2023-09-20Add social media blocklists to daemon+CLILinus Färnstrand2-0/+3
When infra has deployed these block lists to the relays, this setting will allow blocking social media domains directly with the app
2023-09-11Move log depedency to workspace toml fileDavid Lönnhager1-1/+1
2023-09-11Remove deprecated uses of from_i32David Lönnhager7-84/+75
2023-09-11Fix chrono warningsDavid Lönnhager3-6/+8
2023-09-11Make err-derive a workspace dependencyDavid Lönnhager1-1/+1
2023-09-05Remove forwarded port from devices in Rust codeLinus Färnstrand2-25/+0
2023-08-31Remove wireguard-nt switchDavid Lönnhager3-18/+0
2023-08-30Fix clippy lintsEmīls1-1/+1
2023-08-21Remove `wg_migration_rand_num` field from settingsMarkus Pettersson1-2/+0
2023-08-04Replace all use of `lazy_static` with `once_cell`Markus Pettersson2-5/+5
To align more with the upcoming standardizations within the Rust ecosystem which started with the release of `1.70.0` and the inevitable deprecation of `lazy_static`.
2023-08-02Make chrono a workspace dependency and fix featuresLinus Färnstrand1-1/+1
2023-08-01Disable chrono features to get rid of time dependencyLinus Färnstrand1-1/+1
2023-07-14Move tonic and related crates to workspace dependenciesLinus Färnstrand1-5/+5
2023-07-14Move tokio dependency to be a workspace dependencyLinus Färnstrand1-1/+1
2023-07-14Remove `x_threshold_wg_default` codeMarkus Pettersson1-2/+0
Since we migrated to using Wireguard as the definitive default VPN, we can stop reading the `x_threshold_wg_default` field from the API and remove all daemon code related to using it
2023-07-14Set package fields in workspace and inherit in packagesLinus Färnstrand1-5/+6
2023-06-29Add settings migration code, refactor and cleanupJonathan1-2/+2
Bump the settings version. Add code for migrating settings to new version since it is now not backwards compatible. Refactor LocationConstraint and related types to be more lean. Cleanup issues and fix formatting. Refactor LocationConstraint and add migration code