Skip to content
This repository has been archived by the owner on Aug 25, 2021. It is now read-only.

Commit

Permalink
Replace 'turn.ip' config option with 'turn.host' (#42)
Browse files Browse the repository at this point in the history
  • Loading branch information
evdokimovs authored Aug 6, 2019
1 parent f5d407d commit c96d9f6
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 42 deletions.
4 changes: 2 additions & 2 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,10 @@


[turn]
# Turn server IP address.
# Turn server host.
#
# Default:
# ip = "127.0.0.1"
# host = "localhost"

# Turn server port.
#
Expand Down
3 changes: 3 additions & 0 deletions jason/demo/minikube.vals.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ server:
image:
tag: dev
pullPolicy: IfNotPresent
conf:
turn:
host: medea-demo.test

coturn:
image:
Expand Down
2 changes: 1 addition & 1 deletion jason/demo/staging.vals.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ server:
server:
bind_port: 9980
turn:
ip: 178.162.214.89
host: demo.medea.stg.t11913.org
pass: changeme

coturn:
Expand Down
8 changes: 4 additions & 4 deletions src/conf/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -236,17 +236,17 @@ mod tests {
fn turn_conf() {
let default_conf = Conf::default();

env::set_var("MEDEA_TURN.IP", "5.5.5.5");
env::set_var("MEDEA_TURN.HOST", "example.com");
env::set_var("MEDEA_TURN.PORT", "1234");

let env_conf = Conf::parse().unwrap();

assert_ne!(default_conf.turn.ip, env_conf.turn.ip);
assert_ne!(default_conf.turn.host, env_conf.turn.host);
assert_ne!(default_conf.turn.port, env_conf.turn.port);

assert_eq!(env_conf.turn.ip, Ipv4Addr::new(5, 5, 5, 5));
assert_eq!(env_conf.turn.host, "example.com");
assert_eq!(env_conf.turn.port, 1234);
assert_eq!(env_conf.turn.addr(), "5.5.5.5:1234".parse().unwrap());
assert_eq!(env_conf.turn.addr(), "example.com:1234");
}

#[test]
Expand Down
19 changes: 8 additions & 11 deletions src/conf/turn.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
//! STUN/TURN server settings.
use std::{
net::{IpAddr, Ipv4Addr, SocketAddr, ToSocketAddrs as _},
borrow::Cow,
net::{IpAddr, Ipv4Addr},
time::Duration,
};

Expand All @@ -14,9 +15,9 @@ use smart_default::SmartDefault;
pub struct Turn {
/// Database settings
pub db: Db,
/// IP address STUN/TURN server. Defaults to `127.0.0.1`.
#[default(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)))]
pub ip: IpAddr,
/// Host of STUN/TURN server. Defaults to `localhost`.
#[default = "localhost"]
pub host: Cow<'static, str>,
/// Port to connect TURN server. Defaults to `3478`.
#[default = 3478]
pub port: u16,
Expand All @@ -29,14 +30,10 @@ pub struct Turn {
}

impl Turn {
/// Builds [`SocketAddr`] from `ip` and `port`.
/// Builds [`String`] addr from `host` and `port`.
#[inline]
pub fn addr(&self) -> SocketAddr {
(self.ip, self.port)
.to_socket_addrs()
.unwrap()
.next()
.unwrap()
pub fn addr(&self) -> String {
format!("{}:{}", self.host, self.port)
}
}

Expand Down
10 changes: 4 additions & 6 deletions src/media/ice_user.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
use std::net::SocketAddr;

use medea_client_api_proto::IceServer;

use crate::signalling::RoomId;
Expand All @@ -8,7 +6,7 @@ use crate::signalling::RoomId;
#[derive(Clone, Debug)]
pub struct IceUser {
/// Address of Turn server.
address: SocketAddr,
address: String,
/// Username for authorization.
user: String,
/// Password for authorization.
Expand All @@ -22,7 +20,7 @@ pub struct IceUser {
impl IceUser {
/// Build new non static [`IceUser`].
pub fn build(
address: SocketAddr,
address: String,
room_id: RoomId,
name: &str,
pass: String,
Expand All @@ -36,7 +34,7 @@ impl IceUser {
}

/// Build new static [`IceUser`].
pub fn new(address: SocketAddr, user: String, pass: String) -> Self {
pub fn new(address: String, user: String, pass: String) -> Self {
Self {
address,
user,
Expand Down Expand Up @@ -65,7 +63,7 @@ impl IceUser {
vec![stun, turn]
}

pub fn address(&self) -> &SocketAddr {
pub fn address(&self) -> &str {
&self.address
}

Expand Down
37 changes: 19 additions & 18 deletions src/turn/service.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::{fmt, net::SocketAddr, sync::Arc};
use std::{fmt, sync::Arc};

use actix::{
fut::wrap_future, Actor, ActorFuture, Addr, Context, Handler, MailboxError,
Expand Down Expand Up @@ -141,7 +141,7 @@ struct Service {
/// TurnAuthRepo password.
db_pass: String,
/// Turn server address.
turn_address: SocketAddr,
turn_address: String,
/// Turn server static user.
turn_username: String,
/// Turn server static user password.
Expand Down Expand Up @@ -199,7 +199,7 @@ impl Service {
fn static_user(&mut self) -> IceUser {
if self.static_user.is_none() {
self.static_user.replace(IceUser::new(
self.turn_address,
self.turn_address.clone(),
self.turn_username.clone(),
self.turn_password.clone(),
));
Expand Down Expand Up @@ -233,25 +233,27 @@ impl Handler<CreateIceUser> for Service {
_ctx: &mut Self::Context,
) -> Self::Result {
let ice_user = IceUser::build(
self.turn_address,
self.turn_address.clone(),
msg.room_id,
&msg.member_id.to_string(),
self.new_password(TURN_PASS_LEN),
);

Box::new(self.turn_db.insert(&ice_user).into_actor(self).then(
move |result, act, _| {
wrap_future(match result {
Ok(_) => ok(ice_user),
Err(e) => match msg.policy {
UnreachablePolicy::ReturnErr => err(e.into()),
UnreachablePolicy::ReturnStatic => {
ok(act.static_user())
}
},
})
},
))
Box::new(
self.turn_db.insert(&ice_user).into_actor(self).then(
move |result, act, _| {
wrap_future(match result {
Ok(_) => ok(ice_user),
Err(e) => match msg.policy {
UnreachablePolicy::ReturnErr => err(e.into()),
UnreachablePolicy::ReturnStatic => {
ok(act.static_user())
}
},
})
},
),
)
}
}

Expand Down Expand Up @@ -315,5 +317,4 @@ pub mod test {
pub fn new_turn_auth_service_mock() -> Arc<dyn TurnAuthService> {
Arc::new(TurnAuthServiceMock {})
}

}

0 comments on commit c96d9f6

Please sign in to comment.