MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / get

Function get

chirpstack/src/backend/joinserver.rs:47–106  ·  view source on GitHub ↗
(join_eui: EUI64)

Source from the content-addressed store, hash-verified

45}
46
47pub async fn get(join_eui: EUI64) -> Result<Arc<Client>> {
48 for client in CLIENTS.read().await.iter() {
49 if client.0.matches(join_eui) {
50 return Ok(client.1.clone());
51 }
52 }
53
54 let conf = config::get();
55 if conf.join_server.default.enabled {
56 debug!(join_eui = %join_eui, "Configuring default join-server client");
57
58 let server = if conf.join_server.default.server.is_empty() {
59 let join_eui: String = join_eui
60 .to_string()
61 .chars()
62 .rev()
63 .map(|v| v.to_string())
64 .collect::<Vec<String>>()
65 .join(".");
66
67 format!(
68 "https://{}{}",
69 join_eui, conf.join_server.resolve_join_eui_domain_suffix
70 )
71 } else {
72 conf.join_server.default.server.clone()
73 };
74
75 let c = Client::new(ClientConfig {
76 sender_id: conf.network.net_id.to_vec(),
77 server,
78 ca_cert: conf.join_server.default.ca_cert.clone(),
79 tls_cert: conf.join_server.default.tls_cert.clone(),
80 tls_key: conf.join_server.default.tls_key.clone(),
81 async_timeout: conf.join_server.default.async_timeout,
82 request_log_sender: stream::backend_interfaces::get_log_sender().await,
83 authorization: if conf.join_server.default.authorization_header.is_empty() {
84 None
85 } else {
86 Some(conf.join_server.default.authorization_header.clone())
87 },
88 ..Default::default()
89 })?;
90
91 let c = Arc::new(c);
92 let c_out = c.clone();
93
94 CLIENTS
95 .write()
96 .await
97 .push((EUI64Prefix::new(join_eui.to_be_bytes(), 64), c));
98
99 return Ok(c_out);
100 }
101
102 Err(anyhow!(
103 "Join Server client for join_eui {} does not exist",
104 join_eui

Callers 1

setupFunction · 0.70

Calls 7

get_log_senderFunction · 0.85
iterMethod · 0.80
matchesMethod · 0.80
to_stringMethod · 0.80
pushMethod · 0.80
to_vecMethod · 0.45
to_be_bytesMethod · 0.45

Tested by

no test coverage detected