iroh_relay/server/
testing.rs1use std::net::Ipv4Addr;
3
4use super::{AccessConfig, CertConfig, QuicConfig, RelayConfig, ServerConfig, TlsConfig};
5
6pub fn self_signed_tls_certs_and_config() -> (
10 Vec<rustls::pki_types::CertificateDer<'static>>,
11 rustls::ServerConfig,
12) {
13 let cert = rcgen::generate_simple_self_signed(vec![
14 "localhost".to_string(),
15 "127.0.0.1".to_string(),
16 "::1".to_string(),
17 ])
18 .expect("valid");
19 let rustls_cert = cert.cert.der();
20 let private_key = rustls::pki_types::PrivatePkcs8KeyDer::from(cert.signing_key.serialize_der());
21 let private_key = rustls::pki_types::PrivateKeyDer::from(private_key);
22 let certs = vec![rustls_cert.clone()];
23 let server_config = rustls::ServerConfig::builder_with_provider(std::sync::Arc::new(
24 rustls::crypto::ring::default_provider(),
25 ))
26 .with_safe_default_protocol_versions()
27 .expect("protocols supported by ring")
28 .with_no_client_auth();
29
30 let server_config = server_config
31 .with_single_cert(certs.clone(), private_key)
32 .expect("valid");
33 (certs, server_config)
34}
35
36pub fn tls_config() -> TlsConfig<()> {
41 let (certs, server_config) = self_signed_tls_certs_and_config();
42 TlsConfig {
43 server_config,
44 cert: CertConfig::<(), ()>::Manual { certs },
45 https_bind_addr: (Ipv4Addr::LOCALHOST, 0).into(),
46 quic_bind_addr: (Ipv4Addr::UNSPECIFIED, 0).into(),
47 }
48}
49
50pub fn relay_config() -> RelayConfig<()> {
56 RelayConfig {
57 http_bind_addr: (Ipv4Addr::LOCALHOST, 0).into(),
58 tls: Some(tls_config()),
59 limits: Default::default(),
60 key_cache_capacity: Some(1024),
61 access: AccessConfig::Everyone,
62 }
63}
64
65pub fn quic_config() -> QuicConfig {
70 let (_, server_config) = self_signed_tls_certs_and_config();
71 QuicConfig {
72 bind_addr: (Ipv4Addr::UNSPECIFIED, 0).into(),
73 server_config,
74 }
75}
76
77pub fn server_config() -> ServerConfig<()> {
83 ServerConfig {
84 relay: Some(relay_config()),
85 quic: Some(quic_config()),
86 #[cfg(feature = "metrics")]
87 metrics_addr: None,
88 }
89}