Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5e0007fab6 | |||
| b475ad2c85 |
5 changed files with 45 additions and 42 deletions
|
|
@ -53,8 +53,7 @@ fn main() {
|
|||
server_name.map_or_else(|| panic!("NO HOST"), str::to_string)
|
||||
},
|
||||
remote_port: "443".to_string(),
|
||||
tls_config:
|
||||
TLSConfig::FILE {
|
||||
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(),
|
||||
},
|
||||
|
|
|
|||
|
|
@ -74,7 +74,6 @@ impl DownStreamInner {
|
|||
} else if byte_count == -1 {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -138,7 +137,6 @@ impl DownStreamInner {
|
|||
} else if byte_count == -1 {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -186,7 +184,7 @@ impl DownStreamInner {
|
|||
},
|
||||
}
|
||||
}
|
||||
return Some(data_length);
|
||||
Some(data_length)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -257,7 +255,6 @@ impl UpStreamInner {
|
|||
} else if byte_count == -1 {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -317,7 +314,6 @@ impl UpStreamInner {
|
|||
} else if byte_count == -1 {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -365,6 +361,6 @@ impl UpStreamInner {
|
|||
},
|
||||
}
|
||||
}
|
||||
return Some(data_length);
|
||||
Some(data_length)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,7 +61,6 @@
|
|||
//! }
|
||||
//! }
|
||||
//!
|
||||
//! fn main() {
|
||||
//! // Create new SSLRelay object
|
||||
//! let mut relay = sslrelay::SSLRelay::new(
|
||||
//! Handler,
|
||||
|
|
@ -81,7 +80,6 @@
|
|||
//!
|
||||
//! // Start listening
|
||||
//! relay.start();
|
||||
//! }
|
||||
//! ```
|
||||
|
||||
use openssl::{
|
||||
|
|
@ -146,6 +144,12 @@ pub enum TLSConfig {
|
|||
certificate: Vec<u8>,
|
||||
private_key: Vec<u8>,
|
||||
},
|
||||
CALLBACK {
|
||||
servername_callback: fn(
|
||||
&mut openssl::ssl::SslRef,
|
||||
&mut openssl::ssl::SslAlert,
|
||||
) -> Result<(), openssl::ssl::SniError>,
|
||||
},
|
||||
NONE,
|
||||
}
|
||||
|
||||
|
|
|
|||
12
src/relay.rs
12
src/relay.rs
|
|
@ -16,7 +16,7 @@ impl<H: HandlerCallbacks + std::marker::Sync + std::marker::Send + Clone + 'stat
|
|||
}
|
||||
/// Starts the SSLRelay connection handling.
|
||||
pub fn start(&mut self) {
|
||||
let rhost = self.config.remote_host.clone();
|
||||
let rhost = self.config.remote_host;
|
||||
let rport = self.config.remote_port.clone();
|
||||
let upstream_data_stream_type = self.config.upstream_data_type;
|
||||
|
||||
|
|
@ -38,10 +38,11 @@ impl<H: HandlerCallbacks + std::marker::Sync + std::marker::Send + Clone + 'stat
|
|||
let acceptor = acceptor.clone();
|
||||
let mut handler_clone = self.handlers.as_ref().unwrap().clone();
|
||||
|
||||
let r_host = rhost.clone();
|
||||
let r_host = rhost;
|
||||
let r_port = rport.clone();
|
||||
|
||||
let this_conn_id = conn_id;
|
||||
|
||||
thread::spawn(move || {
|
||||
match acceptor.accept(stream) {
|
||||
Ok(stream) => {
|
||||
|
|
@ -90,7 +91,7 @@ impl<H: HandlerCallbacks + std::marker::Sync + std::marker::Send + Clone + 'stat
|
|||
Ok(stream) => {
|
||||
let handler_clone = self.handlers.as_ref().unwrap().clone();
|
||||
|
||||
let r_host = rhost.clone();
|
||||
let r_host = rhost;
|
||||
let r_port = rport.clone();
|
||||
|
||||
let this_conn_id = conn_id;
|
||||
|
|
@ -154,6 +155,11 @@ impl<H: HandlerCallbacks + std::marker::Sync + std::marker::Send + Clone + 'stat
|
|||
.unwrap();
|
||||
acceptor.set_private_key(private_key.as_ref()).unwrap();
|
||||
}
|
||||
TLSConfig::CALLBACK {
|
||||
servername_callback,
|
||||
} => {
|
||||
acceptor.set_servername_callback(*servername_callback);
|
||||
}
|
||||
TLSConfig::NONE => {
|
||||
panic!(
|
||||
"[SSLRelay Error] Specified NONE for TLSConfig and downstream_data_type as \
|
||||
|
|
|
|||
14
src/tcp.rs
14
src/tcp.rs
|
|
@ -311,9 +311,8 @@ impl<H: HandlerCallbacks + std::marker::Sync + std::marker::Send + Clone + 'stat
|
|||
Err(e) => {
|
||||
Self::handle_error(
|
||||
format!(
|
||||
"Can't connect to remote host: {}\nErr: {}",
|
||||
format!("{}:{}", remote_host, remote_port),
|
||||
e
|
||||
"Can't connect to remote host: {}:{}\nErr: {}",
|
||||
remote_host, remote_port, e
|
||||
)
|
||||
.as_str(),
|
||||
);
|
||||
|
|
@ -321,7 +320,7 @@ impl<H: HandlerCallbacks + std::marker::Sync + std::marker::Send + Clone + 'stat
|
|||
}
|
||||
};
|
||||
let _ = s.set_read_timeout(Some(Duration::from_millis(50)));
|
||||
return Ok(DataStreamType::RAW(s));
|
||||
Ok(DataStreamType::RAW(s))
|
||||
}
|
||||
TCPDataType::TLS => {
|
||||
let mut sslbuilder = SslConnector::builder(SslMethod::tls()).unwrap();
|
||||
|
|
@ -334,9 +333,8 @@ impl<H: HandlerCallbacks + std::marker::Sync + std::marker::Send + Clone + 'stat
|
|||
Err(e) => {
|
||||
Self::handle_error(
|
||||
format!(
|
||||
"Can't connect to remote host: {}\nErr: {}",
|
||||
format!("{}:{}", remote_host, remote_port),
|
||||
e
|
||||
"Can't connect to remote host: {}:{}\nErr: {}",
|
||||
remote_host, remote_port, e
|
||||
)
|
||||
.as_str(),
|
||||
);
|
||||
|
|
@ -357,7 +355,7 @@ impl<H: HandlerCallbacks + std::marker::Sync + std::marker::Send + Clone + 'stat
|
|||
let _ = s
|
||||
.get_ref()
|
||||
.set_read_timeout(Some(Duration::from_millis(50)));
|
||||
return Ok(DataStreamType::TLS(s));
|
||||
Ok(DataStreamType::TLS(s))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue