(net_id: &NetID)
| 71 | } |
| 72 | |
| 73 | pub async fn get(net_id: &NetID) -> Result<Arc<Client>> { |
| 74 | let mut clients_w = CLIENTS.write().await; |
| 75 | |
| 76 | if let Some(client) = clients_w.get(net_id) { |
| 77 | return Ok(client.clone()); |
| 78 | } |
| 79 | |
| 80 | let conf = config::get(); |
| 81 | if conf.roaming.default.enabled { |
| 82 | debug!(net_id = %net_id, "Configuring default roaming client"); |
| 83 | |
| 84 | let server = if conf.roaming.default.server.is_empty() { |
| 85 | format!( |
| 86 | "https://{}{}", |
| 87 | net_id, conf.roaming.resolve_net_id_domain_suffix, |
| 88 | ) |
| 89 | } else { |
| 90 | conf.roaming.default.server.clone() |
| 91 | }; |
| 92 | |
| 93 | let c = Client::new(ClientConfig { |
| 94 | sender_id: conf.network.net_id.to_vec(), |
| 95 | receiver_id: net_id.to_vec(), |
| 96 | server, |
| 97 | use_target_role_suffix: conf.roaming.default.use_target_role_suffix, |
| 98 | ca_cert: conf.roaming.default.ca_cert.clone(), |
| 99 | tls_cert: conf.roaming.default.tls_cert.clone(), |
| 100 | tls_key: conf.roaming.default.tls_key.clone(), |
| 101 | authorization: if conf.roaming.default.authorization_header.is_empty() { |
| 102 | None |
| 103 | } else { |
| 104 | Some(conf.roaming.default.authorization_header.clone()) |
| 105 | }, |
| 106 | async_timeout: conf.roaming.default.async_timeout, |
| 107 | request_log_sender: stream::backend_interfaces::get_log_sender().await, |
| 108 | })?; |
| 109 | |
| 110 | let c = Arc::new(c); |
| 111 | let c_out = c.clone(); |
| 112 | clients_w.insert(*net_id, c); |
| 113 | |
| 114 | return Ok(c_out); |
| 115 | } |
| 116 | |
| 117 | Err(anyhow!( |
| 118 | "Roaming client for net_id {} does not exist", |
| 119 | net_id |
| 120 | )) |
| 121 | } |
| 122 | |
| 123 | pub fn get_passive_roaming_lifetime(net_id: NetID) -> Result<std::time::Duration> { |
| 124 | let conf = config::get(); |
no test coverage detected