iroh_relay/server/
testing.rs1use std::{net::Ipv4Addr, sync::Arc};
3
4use super::{AllowAll, 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 cert: CertConfig::Manual { server_config },
44 https_bind_addr: (Ipv4Addr::LOCALHOST, 0).into(),
45 }
46}
47
48pub fn relay_config() -> RelayConfig {
54 RelayConfig {
55 http_bind_addr: (Ipv4Addr::LOCALHOST, 0).into(),
56 tls: Some(tls_config()),
57 limits: Default::default(),
58 key_cache_capacity: Some(1024),
59 access: Arc::new(AllowAll),
60 }
61}
62
63pub fn quic_config() -> QuicConfig {
68 let (_, server_config) = self_signed_tls_certs_and_config();
69 QuicConfig {
70 bind_addr: (Ipv4Addr::UNSPECIFIED, 0).into(),
71 server_config: Some(server_config),
72 }
73}
74
75pub fn server_config() -> ServerConfig {
81 ServerConfig {
82 relay: Some(relay_config()),
83 quic: Some(quic_config()),
84 #[cfg(feature = "metrics")]
85 metrics_addr: None,
86 }
87}