use crate::stream::Identity; use crate::{ClientTunnelConfig, ServerTunnelConfig, SslConfig}; use serde::{Deserialize, Serialize}; #[derive(Debug, Clone, Default, Serialize, Deserialize)] pub struct ConnectConfig { #[serde(default)] pub server: Vec, #[serde(default)] pub client: Vec, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct TcpServerTunnelConfig { pub url: String, #[serde(flatten)] pub cert: Option, pub token: String, } impl TcpServerTunnelConfig { pub fn into_tunnel_config(self, identity: Identity) -> anyhow::Result { Ok(ServerTunnelConfig { identity, url: self.url, cert: self.cert, token: self.token, }) } } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct TcpClientTunnelConfig { pub host: Option, pub url: String, pub token: String, } impl TcpClientTunnelConfig { pub fn into_tunnel_config(self, identity: Identity) -> ClientTunnelConfig { ClientTunnelConfig { identity, host: self.host, url: self.url, token: self.token, } } }