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

Function setup

chirpstack/src/api/backend/mod.rs:42–84  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

40use lrwn::{AES128Key, EUI64, NetID};
41
42pub async fn setup() -> Result<()> {
43 let conf = config::get();
44 if conf.backend_interfaces.bind.is_empty() {
45 info!("Backend interfaces API interface is disabled");
46 return Ok(());
47 }
48
49 let addr: SocketAddr = conf.backend_interfaces.bind.parse()?;
50 info!(bind = %conf.backend_interfaces.bind, "Setting up backend interfaces API");
51
52 let app = Router::new().fallback(handle_request);
53
54 if !conf.backend_interfaces.ca_cert.is_empty()
55 || !conf.backend_interfaces.tls_cert.is_empty()
56 || !conf.backend_interfaces.tls_key.is_empty()
57 {
58 let mut server_config = ServerConfig::builder()
59 .with_client_cert_verifier(if conf.backend_interfaces.ca_cert.is_empty() {
60 Arc::new(NoClientAuth)
61 } else {
62 let root_certs = get_root_certs(Some(conf.backend_interfaces.ca_cert.clone()))?;
63 WebPkiClientVerifier::builder(root_certs.into()).build()?
64 })
65 .with_single_cert(
66 load_cert(&conf.backend_interfaces.tls_cert).await?,
67 load_key(&conf.backend_interfaces.tls_key).await?,
68 )?;
69 server_config.alpn_protocols = vec![b"h2".to_vec(), b"http/1.1".to_vec()];
70
71 axum_server::bind_rustls(
72 addr,
73 axum_server::tls_rustls::RustlsConfig::from_config(Arc::new(server_config)),
74 )
75 .serve(app.into_make_service())
76 .await?;
77 } else {
78 axum_server::bind(addr)
79 .serve(app.into_make_service())
80 .await?;
81 }
82
83 Ok(())
84}
85
86pub async fn handle_request(b: Bytes) -> Response {
87 let b: Vec<u8> = b.into();

Callers

nothing calls this directly

Calls 5

get_root_certsFunction · 0.85
load_certFunction · 0.85
load_keyFunction · 0.85
getFunction · 0.50
intoMethod · 0.45

Tested by

no test coverage detected