diff --git a/elixir/apps/api/lib/api/client/views/relay.ex b/elixir/apps/api/lib/api/client/views/relay.ex index 6bc75a1aa..793a54364 100644 --- a/elixir/apps/api/lib/api/client/views/relay.ex +++ b/elixir/apps/api/lib/api/client/views/relay.ex @@ -24,7 +24,7 @@ defmodule API.Client.Views.Relay do [ %{ type: :stun, - uri: "stun:#{format_address(address)}:#{relay.port}" + addr: "#{format_address(address)}:#{relay.port}" } ] end @@ -39,7 +39,7 @@ defmodule API.Client.Views.Relay do [ %{ type: :turn, - uri: "turn:#{format_address(address)}:#{relay.port}", + addr: "#{format_address(address)}:#{relay.port}", username: username, password: password, expires_at: expires_at diff --git a/elixir/apps/api/test/api/client/channel_test.exs b/elixir/apps/api/test/api/client/channel_test.exs index d2e5e0114..5c8917a45 100644 --- a/elixir/apps/api/test/api/client/channel_test.exs +++ b/elixir/apps/api/test/api/client/channel_test.exs @@ -597,8 +597,8 @@ defmodule API.Client.ChannelTest do assert gateway_id == gateway.id assert gateway_last_seen_remote_ip == gateway.last_seen_remote_ip - ipv4_turn_uri = "turn:#{global_relay.ipv4}:#{global_relay.port}" - ipv6_turn_uri = "turn:[#{global_relay.ipv6}]:#{global_relay.port}" + ipv4_turn_uri = "#{global_relay.ipv4}:#{global_relay.port}" + ipv6_turn_uri = "[#{global_relay.ipv6}]:#{global_relay.port}" assert [ %{ @@ -606,14 +606,14 @@ defmodule API.Client.ChannelTest do expires_at: expires_at_unix, password: password1, username: username1, - uri: ^ipv4_turn_uri + addr: ^ipv4_turn_uri }, %{ type: :turn, expires_at: expires_at_unix, password: password2, username: username2, - uri: ^ipv6_turn_uri + addr: ^ipv6_turn_uri } ] = relays @@ -684,8 +684,8 @@ defmodule API.Client.ChannelTest do assert gateway_id == gateway.id assert gateway_last_seen_remote_ip == gateway.last_seen_remote_ip - ipv4_turn_uri = "turn:#{relay.ipv4}:#{relay.port}" - ipv6_turn_uri = "turn:[#{relay.ipv6}]:#{relay.port}" + ipv4_turn_uri = "#{relay.ipv4}:#{relay.port}" + ipv6_turn_uri = "[#{relay.ipv6}]:#{relay.port}" assert [ %{ @@ -693,14 +693,14 @@ defmodule API.Client.ChannelTest do expires_at: expires_at_unix, password: password1, username: username1, - uri: ^ipv4_turn_uri + addr: ^ipv4_turn_uri }, %{ type: :turn, expires_at: expires_at_unix, password: password2, username: username2, - uri: ^ipv6_turn_uri + addr: ^ipv6_turn_uri } ] = relays @@ -771,17 +771,17 @@ defmodule API.Client.ChannelTest do assert gateway_id == gateway.id assert gateway_last_seen_remote_ip == gateway.last_seen_remote_ip - ipv4_turn_uri = "stun:#{global_relay.ipv4}:#{global_relay.port}" - ipv6_turn_uri = "stun:[#{global_relay.ipv6}]:#{global_relay.port}" + ipv4_turn_uri = "#{global_relay.ipv4}:#{global_relay.port}" + ipv6_turn_uri = "[#{global_relay.ipv6}]:#{global_relay.port}" assert [ %{ type: :stun, - uri: ^ipv4_turn_uri + addr: ^ipv4_turn_uri }, %{ type: :stun, - uri: ^ipv6_turn_uri + addr: ^ipv6_turn_uri } ] = relays end diff --git a/elixir/apps/api/test/api/gateway/channel_test.exs b/elixir/apps/api/test/api/gateway/channel_test.exs index 509d26fba..93310746d 100644 --- a/elixir/apps/api/test/api/gateway/channel_test.exs +++ b/elixir/apps/api/test/api/gateway/channel_test.exs @@ -334,8 +334,8 @@ defmodule API.Gateway.ChannelTest do assert payload.flow_id == flow_id assert payload.actor == %{id: client.actor_id} - ipv4_turn_uri = "turn:#{relay.ipv4}:#{relay.port}" - ipv6_turn_uri = "turn:[#{relay.ipv6}]:#{relay.port}" + ipv4_turn_uri = "#{relay.ipv4}:#{relay.port}" + ipv6_turn_uri = "[#{relay.ipv6}]:#{relay.port}" assert [ %{ @@ -343,14 +343,14 @@ defmodule API.Gateway.ChannelTest do expires_at: expires_at_unix, password: password1, username: username1, - uri: ^ipv4_turn_uri + addr: ^ipv4_turn_uri }, %{ type: :turn, expires_at: expires_at_unix, password: password2, username: username2, - uri: ^ipv6_turn_uri + addr: ^ipv6_turn_uri } ] = payload.relays @@ -444,8 +444,8 @@ defmodule API.Gateway.ChannelTest do assert payload.flow_id == flow_id assert payload.actor == %{id: client.actor_id} - ipv4_turn_uri = "turn:#{relay.ipv4}:#{relay.port}" - ipv6_turn_uri = "turn:[#{relay.ipv6}]:#{relay.port}" + ipv4_turn_uri = "#{relay.ipv4}:#{relay.port}" + ipv6_turn_uri = "[#{relay.ipv6}]:#{relay.port}" assert [ %{ @@ -453,14 +453,14 @@ defmodule API.Gateway.ChannelTest do expires_at: expires_at_unix, password: password1, username: username1, - uri: ^ipv4_turn_uri + addr: ^ipv4_turn_uri }, %{ type: :turn, expires_at: expires_at_unix, password: password2, username: username2, - uri: ^ipv6_turn_uri + addr: ^ipv6_turn_uri } ] = payload.relays @@ -553,17 +553,17 @@ defmodule API.Gateway.ChannelTest do assert payload.flow_id == flow_id assert payload.actor == %{id: client.actor_id} - ipv4_turn_uri = "stun:#{relay.ipv4}:#{relay.port}" - ipv6_turn_uri = "stun:[#{relay.ipv6}]:#{relay.port}" + ipv4_turn_uri = "#{relay.ipv4}:#{relay.port}" + ipv6_turn_uri = "[#{relay.ipv6}]:#{relay.port}" assert [ %{ type: :stun, - uri: ^ipv4_turn_uri + addr: ^ipv4_turn_uri }, %{ type: :stun, - uri: ^ipv6_turn_uri + addr: ^ipv6_turn_uri } ] = payload.relays diff --git a/rust/connlib/clients/shared/src/messages.rs b/rust/connlib/clients/shared/src/messages.rs index 6a3948a1b..af08b7aa8 100644 --- a/rust/connlib/clients/shared/src/messages.rs +++ b/rust/connlib/clients/shared/src/messages.rs @@ -335,24 +335,24 @@ mod test { resource_id: "f16ecfa0-a94f-4bfd-a2ef-1cc1f2ef3da3".parse().unwrap(), relays: vec![ Relay::Stun(Stun { - uri: "189.172.73.111:3478".parse().unwrap(), + addr: "189.172.73.111:3478".parse().unwrap(), }), Relay::Turn(Turn { expires_at: NaiveDateTime::from_timestamp_opt(1686629954, 0) .unwrap() .and_utc(), - uri: "189.172.73.111:3478".parse().unwrap(), + addr: "189.172.73.111:3478".parse().unwrap(), username: "1686629954:C7I74wXYFdFugMYM".to_string(), password: "OXXRDJ7lJN1cm+4+2BWgL87CxDrvpVrn5j3fnJHye98".to_string(), }), Relay::Stun(Stun { - uri: "[::1]:3478".parse().unwrap(), + addr: "[::1]:3478".parse().unwrap(), }), Relay::Turn(Turn { expires_at: NaiveDateTime::from_timestamp_opt(1686629954, 0) .unwrap() .and_utc(), - uri: "[::1]:3478".parse().unwrap(), + addr: "[::1]:3478".parse().unwrap(), username: "1686629954:dpHxHfNfOhxPLfMG".to_string(), password: "8Wtb+3YGxO6ia23JUeSEfZ2yFD6RhGLkbgZwqjebyKY".to_string(), }), @@ -373,24 +373,24 @@ mod test { "relays": [ { "type":"stun", - "uri": "stun:189.172.73.111:3478" + "addr": "189.172.73.111:3478" }, { "expires_at": 1686629954, "password": "OXXRDJ7lJN1cm+4+2BWgL87CxDrvpVrn5j3fnJHye98", "type": "turn", - "uri": "189.172.73.111:3478", + "addr": "189.172.73.111:3478", "username":"1686629954:C7I74wXYFdFugMYM" }, { "type": "stun", - "uri": "[::1]:3478" + "addr": "[::1]:3478" }, { "expires_at": 1686629954, "password": "8Wtb+3YGxO6ia23JUeSEfZ2yFD6RhGLkbgZwqjebyKY", "type": "turn", - "uri": "turn:[::1]:3478", + "addr": "[::1]:3478", "username": "1686629954:dpHxHfNfOhxPLfMG" }] }, diff --git a/rust/connlib/shared/src/messages.rs b/rust/connlib/shared/src/messages.rs index 6a3e23bc7..7d6dce5f7 100644 --- a/rust/connlib/shared/src/messages.rs +++ b/rust/connlib/shared/src/messages.rs @@ -302,9 +302,8 @@ pub struct Turn { //// Expire time of the username/password in unix millisecond timestamp UTC #[serde(with = "ts_seconds")] pub expires_at: DateTime, - /// URI of the relay - #[serde(with = "stun_turn_uri", alias = "addr")] - pub uri: SocketAddr, + /// Address of the relay + pub addr: SocketAddr, /// Username for the relay pub username: String, // TODO: SecretString @@ -315,29 +314,6 @@ pub struct Turn { /// Stun kind of relay #[derive(Debug, Deserialize, Clone, PartialEq, Eq)] pub struct Stun { - /// URI for the relay - #[serde(with = "stun_turn_uri", alias = "addr")] - pub uri: SocketAddr, -} - -mod stun_turn_uri { - use serde::de::Error; - use serde::Deserialize; - use std::net::SocketAddr; - - pub fn deserialize<'de, D>(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - D::Error: Error, - { - let string = String::deserialize(deserializer)?; - - let socket_addr = string - .trim_start_matches("stun:") - .trim_start_matches("turn:") - .parse::() - .map_err(D::Error::custom)?; - - Ok(socket_addr) - } + /// Address for the relay + pub addr: SocketAddr, } diff --git a/rust/connlib/tunnel/src/control_protocol.rs b/rust/connlib/tunnel/src/control_protocol.rs index 33b451afa..c50ee4816 100644 --- a/rust/connlib/tunnel/src/control_protocol.rs +++ b/rust/connlib/tunnel/src/control_protocol.rs @@ -45,7 +45,7 @@ fn stun(relays: &[Relay]) -> HashSet { .iter() .filter_map(|r| { if let Relay::Stun(r) = r { - Some(r.uri) + Some(r.addr) } else { None } @@ -59,7 +59,7 @@ fn turn(relays: &[Relay]) -> HashSet<(SocketAddr, String, String, String)> { .filter_map(|r| { if let Relay::Turn(r) = r { Some(( - r.uri, + r.addr, r.username.clone(), r.password.clone(), REALM.to_string(), diff --git a/rust/gateway/src/messages.rs b/rust/gateway/src/messages.rs index 4c397ddf7..0bbce9e50 100644 --- a/rust/gateway/src/messages.rs +++ b/rust/gateway/src/messages.rs @@ -176,13 +176,13 @@ mod test { "relays": [ { "type": "stun", - "uri": "172.28.0.101:3478" + "addr": "172.28.0.101:3478" }, { "type": "turn", "username": "1719367575:ZQHcVGkdnfgGmcP1", "password": "ZWYiBeFHOJyYq0mcwAXjRpcuXIJJpzWlOXVdxwttrWg", - "uri": "172.28.0.101:3478", + "addr": "172.28.0.101:3478", "expires_at": 1719367575 } ]