use sslrelay::{self, ConfigType, RelayConfig, HandlerCallbacks}; // Handler object #[derive(Clone)] // Must have Clone trait implemented. struct Handler; /* Callback traits that can be used to read or inject data into data upstream or downstream. */ impl HandlerCallbacks for Handler { // DownStream non blocking callback fn ds_nb_callback(&self, _in_data: Vec) { println!("[CALLBACK] Down Stream Non Blocking CallBack!"); } // DownStream blocking callback fn ds_b_callback(&self, _in_data: &mut Vec) { println!("[CALLBACK] Down Stream Blocking CallBack!"); } // UpStream non blocking callback fn us_nb_callback(&self, _in_data: Vec) { println!("[CALLBACK] Up Stream Non Blocking CallBack!"); } // UpStream blocking callback fn us_b_callback(&self, _in_data: &mut Vec) { println!("[CALLBACK] Up Stream Blocking CallBack!"); } } fn main() { // Create new SSLRelay object let mut relay = sslrelay::SSLRelay::new(Handler); // Load Configuration relay.load_config(ConfigType::Conf(RelayConfig { bind_host: "0.0.0.0".to_string(), bind_port: "443".to_string(), remote_host: "remote.com".to_string(), remote_port: "443".to_string(), ssl_private_key_path: "./remote.com.key".to_string(), ssl_cert_path: "./remote.com.crt".to_string(), })); // Start listening relay.start(); }