1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2024-11-22 21:39:21 +00:00

Add RTC config

This commit is contained in:
Pierre HUBERT 2021-02-06 16:59:27 +01:00
parent bc8cda78ae
commit 63f56d3dae
2 changed files with 46 additions and 5 deletions

View File

@ -31,4 +31,15 @@ database:
password: pierre password: pierre
# If set to true, every requests made on the database will be shown on the terminal # If set to true, every requests made on the database will be shown on the terminal
log_all_queries: true log-all-queries: true
# Video calls configuration
rtc-relay:
ip: ::ffff:127.0.0.1
token: SecretToken
ice-servers:
- stun:stun.l.google.com:19302
max-users-per-calls: 10
allow-video: true
max-users-per-video-calls: 6

View File

@ -14,16 +14,27 @@ pub struct DatabaseConfig {
pub log_all_queries: bool, pub log_all_queries: bool,
} }
#[derive(Debug)]
pub struct RtcRelayConfig {
pub ip: String,
pub token: String,
pub ice_servers: Vec<String>,
pub max_users_per_calls: u64,
pub allow_video: bool,
pub max_users_per_video_calls: u64,
}
#[derive(Debug)] #[derive(Debug)]
pub struct Config { pub struct Config {
pub port: i32, pub port: i32,
pub listen_address: String, pub listen_address: String,
pub storage_url: String, pub storage_url: String,
pub storage_path: String, pub storage_path: String,
pub database: DatabaseConfig,
pub proxy: Option<String>, pub proxy: Option<String>,
pub force_https: bool, pub force_https: bool,
pub verbose_mode: bool, pub verbose_mode: bool,
pub database: DatabaseConfig,
pub rtc_relay: Option<RtcRelayConfig>,
} }
/// Globally available configuration /// Globally available configuration
@ -34,6 +45,10 @@ impl Config {
parsed[name].as_i64().expect(format!("{} is missing (int)", name).as_str()) as i32 parsed[name].as_i64().expect(format!("{} is missing (int)", name).as_str()) as i32
} }
fn yaml_u64(parsed: &Yaml, name: &str) -> u64 {
parsed[name].as_i64().expect(format!("{} is missing (int)", name).as_str()) as u64
}
fn yaml_str(parsed: &Yaml, name: &str) -> String { fn yaml_str(parsed: &Yaml, name: &str) -> String {
parsed[name].as_str().expect(format!("{} is missing (str)", name).as_str()).to_string() parsed[name].as_str().expect(format!("{} is missing (str)", name).as_str()).to_string()
} }
@ -61,7 +76,20 @@ impl Config {
name: Config::yaml_str(parsed_db, "name"), name: Config::yaml_str(parsed_db, "name"),
username: Config::yaml_str(parsed_db, "username"), username: Config::yaml_str(parsed_db, "username"),
password: Config::yaml_str(parsed_db, "password"), password: Config::yaml_str(parsed_db, "password"),
log_all_queries: Config::yaml_bool(parsed_db, "log_all_queries"), log_all_queries: Config::yaml_bool(parsed_db, "log-all-queries"),
};
let parsed_rtc = &parsed["rtc-relay"];
let rtc_config = match parsed_rtc.is_badvalue() {
true => None,
false => Some(RtcRelayConfig {
ip: Config::yaml_str(parsed_rtc, "ip"),
token: Config::yaml_str(parsed_rtc, "token"),
ice_servers: parsed_rtc["ice-servers"].as_vec().unwrap().iter().map(|f| f.as_str().unwrap().to_string()).collect(),
max_users_per_calls: Config::yaml_u64(parsed_rtc, "max-users-per-calls"),
allow_video: Config::yaml_bool(parsed_rtc, "allow-video"),
max_users_per_video_calls: Config::yaml_u64(parsed_rtc, "max-users-per-video-calls"),
})
}; };
let proxy = Config::yaml_str(parsed, "proxy"); let proxy = Config::yaml_str(parsed, "proxy");
@ -73,8 +101,6 @@ impl Config {
storage_url: Config::yaml_str(parsed, "storage-url"), storage_url: Config::yaml_str(parsed, "storage-url"),
storage_path: Config::yaml_str(parsed, "storage-path"), storage_path: Config::yaml_str(parsed, "storage-path"),
database: database_conf,
proxy: match proxy.as_ref() { proxy: match proxy.as_ref() {
"none" => None, "none" => None,
s => Some(s.to_string()) s => Some(s.to_string())
@ -83,6 +109,10 @@ impl Config {
force_https: Config::yaml_bool(parsed, "force-https"), force_https: Config::yaml_bool(parsed, "force-https"),
verbose_mode: Config::yaml_bool(parsed, "verbose-mode"), verbose_mode: Config::yaml_bool(parsed, "verbose-mode"),
database: database_conf,
rtc_relay: rtc_config,
}; };
// Save new configuration in memory // Save new configuration in memory