summaryrefslogtreecommitdiffhomepage
path: root/mullvad-management-interface/src
AgeCommit message (Collapse)AuthorFilesLines
2024-09-17Add `use_anywhere` daita settingJoakim Hulthe1-0/+2
2024-09-06Build wg with daita support for androidAlbin1-1/+1
2024-08-27Use std LazyLock instead of once_cell LazyDavid Lönnhager1-3/+3
2024-08-22Fix IP-override feature indicatorSebastian Holmin1-0/+2
It was trigger by any overrides existing in the settings, not by the current endpoint being overridden. Add flag to `Relay` to specify if its IPv4 and/or IPv6 has been overridden and use that in combination with the endpoint IP version to derive if the current connection is overridden.
2024-08-21Add unit test for feature indicatorSebastian Holmin1-1/+1
2024-08-16Add Shadowsocks feature indicatorDavid Lönnhager2-5/+15
2024-08-16Use range types for all port rangesDavid Lönnhager1-22/+21
Breaks backwards compatibility with relays.json (which is acceptable)
2024-08-16Add Shadowsocks obfuscation support to mullvad-daemonDavid Lönnhager2-15/+60
2024-08-16Parse shadowsocks ports in relay listDavid Lönnhager1-4/+46
2024-08-14Redo error handling `test_automatic_wireguard_rotation`Markus Pettersson1-3/+3
Make the following changes: - Propagate the device error instead of throwing away the error information by transforming it into an `Option`. - Increase daemon restart timeout - Convert catch-all arm to exhaustive check
2024-08-06Shut down gRPC server gracefullyMarkus Pettersson1-2/+6
This commit also removes the `EventListener` trait and the daemon is no longer parameterized over it.
2024-08-01Implement feature indicators in daemonJoakim Hulthe4-16/+109
- Add a GetFeatureIndicators gRPC call that get's the current set of active "features" that should be shown in the UI. - Extend the TunnelState with a FeatureIndicators value. Clients who listens for TunnelState events will get updates automatically.
2024-07-31Add ResetSettings RPC to the management interfaceDavid Lönnhager1-0/+5
2024-07-30Reconnect if split tunnel state changedMarkus Pettersson1-1/+5
2024-07-26Fix `doc list item missing indentation`Sebastian Holmin1-1/+1
2024-06-25Add `daita` as a Cargo cfg variableMarkus Pettersson5-11/+11
Gate DAITA compilation on `"cargo::rustc-cfg=daita"` emitted in build files per platform.
2024-06-25Enable DAITA for linux in CLI and typesSebastian Holmin5-11/+11
2024-06-20Add `PrepareRestartv2` gRPC callMarkus Pettersson1-0/+14
- Add option to automatically shutdown daemon on after running through the same safety routine as `PrepareRestart`. This is exposed via a new gRPC call called `PrepareRestartV2`. - Add help text for enabling full disk access to the CLI
2024-06-17Get value of data directory value at app startupMarkus Pettersson2-12/+31
Remove `APP_PATH` from `mullvad-paths` on Android since it should not be a constant value. Instead, it is passed down from the Android app startup. As it turns out, it is really ever used for pointing to the RPC socket in use.
2024-05-29Migrate to gRPCDavid Göransson3-23/+52
Co-authored-by: Jonatan Rhodin <jonatan.rhodin@mullvad.net> Co-authored-by: Markus Pettersson <markus.pettersson@mullvad.net> Co-authored-by: David Lönnhager <david.l@mullvad.net>
2024-05-29Add error state cause for full disk permissions errorDavid Lönnhager1-1/+9
2024-04-30Add initial split tunneling implementation for macOSDavid Lönnhager2-6/+6
2024-04-25Fix chrono deprecation warningsJoakim Hulthe3-25/+26
2024-04-22Fix broken lints in rustdocsSebastian Holmin2-10/+3
I ran `cargo doc` and fixed as many broken links as I could find.
2024-04-18Limit the size of custom list names to 30 graphemesEmīls1-0/+1
2024-04-16Add DAITA Windows client and updated tuncfgDavid Lönnhager6-0/+51
2024-04-12Add ClearCustomLists RPC callJoakim Hulthe1-0/+9
2024-04-12Add ClearCustomApiAccessMethods rpc callJoakim Hulthe1-0/+9
2024-04-11Fix wireguard rotation testSebastian Holmin1-2/+2
The test was flaky because if a race condition which made the key rotation missable.
2024-03-27Refactor `mullvad-relay-selector`Markus Pettersson1-3/+2
Implement a system built on 'queries' for selecting appropriate relays. A query is a set of constraints which dictates which relay(s) that *can* be chosen by the relay selector. The user's settings can naturally be expressed as a query. The semantics of merging two queries in a way that always prefer user settings is defined by the new `Intersection` trait. Split `mullvad-relay-selector` into several modules: - `query.rs`: Definition of a query on different types of relays. This module is integral to the new API of `mullvad-relay-selector` - `matcher.rs`: Logic for filtering out candidate relays based on a query. - `detailer.rs`: Logic for deriving connection details for the selected relay. - `tests/`: Integration tests for the new relay selector. These tests only use the public APIs of `RelaySelector` and make sure that the output matches the expected output in different scenarios.
2024-03-20Test leaking TCP/UDP/ICMP packets in split tunnelJoakim Hulthe1-8/+0
2024-03-20Add split tunnel test for windowsJoakim Hulthe1-5/+4
2024-02-27Replace err_derive with thiserrorJoakim Hulthe2-37/+36
`err_derive` is unmaintained and will probably stop working with rust edition 2024. `thiserror` is almost a drop-in replacement. This commit simply replaces all occurences of `derive(err_derive::Error)` with `derive(thiserror::Error)` and fixes the attributes, but the Error and Display impls should be identical.
2024-01-31Change API access methods settings formatMarkus Pettersson3-28/+43
Change API access methods settings format to encode that built-in access methods always exist by making them distinct values of the `AccessMethod` settings. This change was also propagated to the corresponding protobuf definition, such that any client may make use of this fact as well. The appropriate settings migration was added.
2024-01-31Add tunnel creation error on WindowsDavid Lönnhager1-0/+23
2024-01-22Add `TestCustomApiAccessMethod` RPC callMarkus Pettersson2-26/+16
Add a new RPC call `TestCustomApiAccessMethod` for testing access methods on the fly, without having to save them to the daemon settings first. This only works for custom access methods.
2024-01-18Print if lockdown mode is enabled when disconnected for `mullvad status`Sebastian Holmin1-8/+12
Add `locked_down` field to disconnected tunnel state.
2024-01-12Validate SOCKS5 credentialsMarkus Pettersson2-118/+107
Validate SOCKS credentials by checking that both `username` and `password` both have a length between 1 and 255 bytes. Link to RFC detailing SOCKS5 username/password authentication: https://datatracker.ietf.org/doc/html/rfc1929
2024-01-10Add patch export to the management interfaceDavid Lönnhager1-0/+5
2024-01-08Add new internal daemon event `AccessMethodEvent`Markus Pettersson2-2/+14
Add a new `InternalDaemonEvent` for announcing when the current API access method changes.
2024-01-03Allow app to use custom socks5 and shadwosocks proxiesJonathan3-175/+251
This PR has a couple of different purposes - Allow users to use socks5 local proxies with the CLI without having to be root nor use split-tunneling. This only works for OpenVPN. - Unify the types used by different proxy parts of the codebase, such as the Access Methods as well as some already existing OpenVPN proxy code. This PR changes the firewall on all desktop platforms as well as changes the routing table slightly on MacOS and Windows. On Linux the firewall code is modified to apply the appropriate firewall marks to all packages that go to a remote endpoint corresponding to the remote part of a local socks5 proxy. The firewall marks will allow the routing to be done without having to modify the routing table. On MacOS and Windows the routing table is modified to allow packages to go to that same endpoint to pass outside the VPN tunnel, it will additionally punch a hole in the firewall. The PR also migrates the settings file from version 7 to version 8 in order to properly and neatly unify Proxy related types. Finally it provides some slight extensions to the gRPC interface in order to allow for control over the custom proxy settings.
2023-12-29Fetch account ID from APIDavid Lönnhager1-0/+2
2023-12-21Remove `GetCurrentLocation`.Sebastian Holmin2-25/+14
Make the daemon send two tunnel state updates, one with out IP being empty, and another with it being filled when am.i.mullvad.net responds. Update CLI for this change. Other front ends are left out.
2023-12-04Perform testing of access methods asynchronouslyMarkus Pettersson1-3/+4
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 Pettersson2-28/+4
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önnhager1-0/+5
2023-11-13Add relay override commands to wrapper clientDavid Lönnhager1-1/+20
2023-11-13Add proto message for relay overridesDavid Lönnhager2-0/+47
2023-11-07Add configurable transport protocol to local SOCKS5 access methodMarkus Pettersson1-9/+16