summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJonathan <jonathan@mullvad.net>2023-06-22 09:46:15 +0200
committerJonathan <jonathan@mullvad.net>2023-06-29 15:00:08 +0200
commit521d4e30fcd2bd52484ddb3d41ecbcfbf353b28f (patch)
treed5c9296e25a90ce6c8d7391053a9c7ad40924c7d
parent432b0016b2c7b27f0a254507b20a464a9f4cf111 (diff)
downloadmullvadvpn-521d4e30fcd2bd52484ddb3d41ecbcfbf353b28f.tar.xz
mullvadvpn-521d4e30fcd2bd52484ddb3d41ecbcfbf353b28f.zip
Update changelog, sync naming in .proto update gui
Updates the changelog, syncs naming to be consistent inside the .proto file with rust in regards to newly added message types for custom lists. Update the gui so that it does not break when using a custom list daemon. However does not let gui actually use custom lists, only has CLI support.
-rw-r--r--CHANGELOG.md3
-rw-r--r--gui/src/main/daemon-rpc.ts32
-rw-r--r--mullvad-management-interface/proto/management_interface.proto4
-rw-r--r--mullvad-management-interface/src/types/conversions/relay_constraints.rs8
4 files changed, 30 insertions, 17 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 10ff6d74fa..973b96b0d4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -28,6 +28,9 @@ Line wrap the file at 100 chars. Th
- Add settings view button in main view in the desktop app.
- Add time left and device name in the header bar in the desktop app.
+- Add customizable relay lists to the CLI on desktop. Custom lists can be managed through
+ `mullvad custom-lists` and can be selected through `mullvad relay set` and `mullvad bridge set`.
+
#### Android
- Add UDP-over-TCP.
- Prevent incoming connections from outside the VPN in Android 11+ when Local Network Sharing
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts
index f3b744e522..e2a909b756 100644
--- a/gui/src/main/daemon-rpc.ts
+++ b/gui/src/main/daemon-rpc.ts
@@ -1228,15 +1228,25 @@ function convertFromConnectionConfig(
}
}
-function convertFromLocation(location: grpcTypes.RelayLocation.AsObject): RelayLocation {
- if (location.hostname) {
- return { hostname: [location.country, location.city, location.hostname] };
- }
- if (location.city) {
- return { city: [location.country, location.city] };
+function convertFromLocation(location: grpcTypes.LocationConstraint.AsObject): RelayLocation {
+ // FIXME: This is a hack that assumes that the LocationConstraint is not a custom list.
+ // If it is we just set the country to "any" even if that isn't correct.
+ if (location.location == undefined) {
+ return { country: "any" };
}
+ else {
+ const loc = location.location;
+
+ if (loc.hostname) {
+ return { hostname: [loc.country, loc.city, loc.hostname] };
+ }
- return { country: location.country };
+ if (loc.city) {
+ return { city: [loc.country, loc.city] };
+ }
+
+ return { country: loc.country };
+ }
}
function convertFromTunnelOptions(tunnelOptions: grpcTypes.TunnelOptions.AsObject): ITunnelOptions {
@@ -1455,24 +1465,24 @@ function convertToNormalBridgeSettings(
function convertToLocation(
constraint: RelayLocation | undefined,
-): grpcTypes.RelayLocation | undefined {
+): grpcTypes.LocationConstraint | undefined {
+ const locationConstraint = new grpcTypes.LocationConstraint();
const location = new grpcTypes.RelayLocation();
if (constraint && 'hostname' in constraint) {
const [countryCode, cityCode, hostname] = constraint.hostname;
location.setCountry(countryCode);
location.setCity(cityCode);
location.setHostname(hostname);
- return location;
} else if (constraint && 'city' in constraint) {
location.setCountry(constraint.city[0]);
location.setCity(constraint.city[1]);
- return location;
} else if (constraint && 'country' in constraint) {
location.setCountry(constraint.country);
- return location;
} else {
return undefined;
}
+ locationConstraint.setLocation(location);
+ return locationConstraint;
}
function convertToTunnelTypeConstraint(
diff --git a/mullvad-management-interface/proto/management_interface.proto b/mullvad-management-interface/proto/management_interface.proto
index c77e5d571a..709079bee4 100644
--- a/mullvad-management-interface/proto/management_interface.proto
+++ b/mullvad-management-interface/proto/management_interface.proto
@@ -289,8 +289,8 @@ message BridgeSettings {
message LocationConstraint {
oneof type {
- string custom = 1;
- RelayLocation normal = 2;
+ string customList = 1;
+ RelayLocation location = 2;
}
}
diff --git a/mullvad-management-interface/src/types/conversions/relay_constraints.rs b/mullvad-management-interface/src/types/conversions/relay_constraints.rs
index 2816be0e9b..8c1f89d368 100644
--- a/mullvad-management-interface/src/types/conversions/relay_constraints.rs
+++ b/mullvad-management-interface/src/types/conversions/relay_constraints.rs
@@ -484,12 +484,12 @@ impl From<mullvad_types::relay_constraints::LocationConstraint> for proto::Locat
use mullvad_types::relay_constraints::LocationConstraint;
match location {
LocationConstraint::Location { location } => Self {
- r#type: Some(proto::location_constraint::Type::Normal(
+ r#type: Some(proto::location_constraint::Type::Location(
proto::RelayLocation::from(location),
)),
},
LocationConstraint::CustomList { list_id } => Self {
- r#type: Some(proto::location_constraint::Type::Custom(
+ r#type: Some(proto::location_constraint::Type::CustomList(
list_id.0.to_string(),
)),
},
@@ -505,7 +505,7 @@ impl TryFrom<proto::LocationConstraint>
fn try_from(location: proto::LocationConstraint) -> Result<Self, Self::Error> {
use mullvad_types::relay_constraints::LocationConstraint;
match location.r#type {
- Some(proto::location_constraint::Type::Normal(location)) => {
+ Some(proto::location_constraint::Type::Location(location)) => {
let location = Constraint::<
mullvad_types::relay_constraints::GeographicLocationConstraint,
>::from(location);
@@ -516,7 +516,7 @@ impl TryFrom<proto::LocationConstraint>
}
}
}
- Some(proto::location_constraint::Type::Custom(list_id)) => {
+ Some(proto::location_constraint::Type::CustomList(list_id)) => {
let location = LocationConstraint::CustomList {
list_id: Id::try_from(list_id.as_str()).map_err(|_| {
FromProtobufTypeError::InvalidArgument("Id could not be parsed to a uuid")