Fmt, add experimental features
This commit is contained in:
parent
0e9b4feaf7
commit
11a4777cfe
8 changed files with 1091 additions and 963 deletions
66
examples/basic.rs
Normal file
66
examples/basic.rs
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
use sslrelay::{self, CallbackRet, HandlerCallbacks, RelayConfig, TCPDataType, TLSConfig};
|
||||
|
||||
// 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<u8>, _conn_id: u64) {
|
||||
if let Ok(in_data) = str::from_utf8(&in_data) {
|
||||
println!("[downstream] {in_data}");
|
||||
} else {
|
||||
//println!("[downstream] {in_data:?}");
|
||||
}
|
||||
}
|
||||
|
||||
// DownStream blocking callback
|
||||
fn ds_b_callback(&mut self, _in_data: Vec<u8>, _conn_id: u64) -> CallbackRet {
|
||||
//println!("[CALLBACK] Down Stream Blocking CallBack!");
|
||||
CallbackRet::Relay(_in_data)
|
||||
}
|
||||
|
||||
// UpStream non blocking callback
|
||||
fn us_nb_callback(&self, in_data: Vec<u8>, _conn_id: u64) {
|
||||
if let Ok(in_data) = str::from_utf8(&in_data) {
|
||||
println!("[upstream] {in_data}");
|
||||
} else {
|
||||
//println!("[upstream] {in_data:?}");
|
||||
}
|
||||
}
|
||||
|
||||
// UpStream blocking callback
|
||||
fn us_b_callback(&mut self, _in_data: Vec<u8>, _conn_id: u64) -> CallbackRet {
|
||||
//println!("[CALLBACK] Up Stream Blocking CallBack!");
|
||||
CallbackRet::Relay(_in_data)
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// Create new SSLRelay object
|
||||
let mut relay = sslrelay::SSLRelay::new(
|
||||
Handler,
|
||||
RelayConfig {
|
||||
downstream_data_type: TCPDataType::TLS,
|
||||
upstream_data_type: TCPDataType::TLS,
|
||||
bind_host: "127.0.0.1".to_string(),
|
||||
bind_port: "443".to_string(),
|
||||
remote_host: |server_name| {
|
||||
server_name.map_or_else(|| panic!("NO HOST"), str::to_string)
|
||||
},
|
||||
remote_port: "443".to_string(),
|
||||
tls_config:
|
||||
TLSConfig::FILE {
|
||||
certificate_path: "/dev/shm/exp/certs/prime256v1/apple.com.crt".to_string(),
|
||||
private_key_path: "/dev/shm/exp/certs/prime256v1/apple.com.key".to_string(),
|
||||
},
|
||||
},
|
||||
);
|
||||
|
||||
// Start listening
|
||||
relay.start();
|
||||
}
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
use sslrelay::{self, RelayConfig, HandlerCallbacks, CallbackRet, TCPDataType, TLSConfig};
|
||||
|
||||
// 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<u8>) {
|
||||
println!("[CALLBACK] Down Stream Non Blocking CallBack!");
|
||||
}
|
||||
|
||||
// DownStream blocking callback
|
||||
fn ds_b_callback(&mut self, _in_data: Vec<u8>) -> CallbackRet {
|
||||
println!("[CALLBACK] Down Stream Blocking CallBack!");
|
||||
CallbackRet::Relay(_in_data)
|
||||
}
|
||||
|
||||
// UpStream non blocking callback
|
||||
fn us_nb_callback(&self, _in_data: Vec<u8>) {
|
||||
println!("[CALLBACK] Up Stream Non Blocking CallBack!");
|
||||
}
|
||||
|
||||
// UpStream blocking callback
|
||||
fn us_b_callback(&mut self, _in_data: Vec<u8>) -> CallbackRet {
|
||||
println!("[CALLBACK] Up Stream Blocking CallBack!");
|
||||
CallbackRet::Relay(_in_data)
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
||||
// Create new SSLRelay object
|
||||
let mut relay = sslrelay::SSLRelay::new(
|
||||
Handler,
|
||||
RelayConfig {
|
||||
downstream_data_type: TCPDataType::TLS,
|
||||
upstream_data_type: TCPDataType::TLS,
|
||||
bind_host: "0.0.0.0".to_string(),
|
||||
bind_port: "443".to_string(),
|
||||
remote_host: "remote.com".to_string(),
|
||||
remote_port: "443".to_string(),
|
||||
tls_config: TLSConfig::FILE{
|
||||
certificate_path: "./tls.crt".to_string(),
|
||||
private_key_path: "./tls.key".to_string(),
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
// Start listening
|
||||
relay.start();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue