fix bug where containers are not connecting
This commit is contained in:
parent
9e9b906598
commit
7349bf16e1
@ -1,6 +1,7 @@
|
|||||||
use super::challenge::{update_server::UpdateServer, Empty, Keys, NodeUpdate};
|
use super::challenge::{update_server::UpdateServer, Empty, Keys, NodeUpdate};
|
||||||
use crate::{datastore::State, grpc::challenge::update_server::Update};
|
use crate::{datastore::State, grpc::challenge::update_server::Update};
|
||||||
use detee_sgx::RaTlsConfig;
|
use detee_sgx::RaTlsConfig;
|
||||||
|
use rustls::pki_types::CertificateDer;
|
||||||
use std::{pin::Pin, sync::Arc};
|
use std::{pin::Pin, sync::Arc};
|
||||||
use tokio::sync::broadcast::Sender;
|
use tokio::sync::broadcast::Sender;
|
||||||
use tokio_stream::{Stream, StreamExt};
|
use tokio_stream::{Stream, StreamExt};
|
||||||
@ -50,7 +51,7 @@ impl MyServer {
|
|||||||
let tls_acceptor = TlsAcceptor::from(Arc::new(tls));
|
let tls_acceptor = TlsAcceptor::from(Arc::new(tls));
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let (conn, _addr) = match listener.accept().await {
|
let (conn, addr) = match listener.accept().await {
|
||||||
Ok(incoming) => incoming,
|
Ok(incoming) => incoming,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
println!("Error accepting connection: {}", e);
|
println!("Error accepting connection: {}", e);
|
||||||
@ -85,7 +86,12 @@ impl MyServer {
|
|||||||
conn.unwrap()
|
conn.unwrap()
|
||||||
};
|
};
|
||||||
|
|
||||||
let svc = ServiceBuilder::new().service(svc);
|
let extension_layer =
|
||||||
|
tower_http::add_extension::AddExtensionLayer::new(Arc::new(ConnInfo {
|
||||||
|
addr,
|
||||||
|
certificates,
|
||||||
|
}));
|
||||||
|
let svc = ServiceBuilder::new().layer(extension_layer).service(svc);
|
||||||
|
|
||||||
if let Err(e) = http
|
if let Err(e) = http
|
||||||
.serve_connection(
|
.serve_connection(
|
||||||
@ -103,6 +109,12 @@ impl MyServer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct ConnInfo {
|
||||||
|
addr: std::net::SocketAddr,
|
||||||
|
certificates: Vec<CertificateDer<'static>>,
|
||||||
|
}
|
||||||
|
|
||||||
#[tonic::async_trait]
|
#[tonic::async_trait]
|
||||||
impl Update for MyServer {
|
impl Update for MyServer {
|
||||||
type GetUpdatesStream = Pin<Box<dyn Stream<Item = Result<NodeUpdate, Status>> + Send>>;
|
type GetUpdatesStream = Pin<Box<dyn Stream<Item = Result<NodeUpdate, Status>> + Send>>;
|
||||||
@ -115,8 +127,9 @@ impl Update for MyServer {
|
|||||||
&self,
|
&self,
|
||||||
req: Request<Streaming<NodeUpdate>>,
|
req: Request<Streaming<NodeUpdate>>,
|
||||||
) -> Result<Response<Self::GetUpdatesStream>, Status> {
|
) -> Result<Response<Self::GetUpdatesStream>, Status> {
|
||||||
|
let conn_info = req.extensions().get::<Arc<ConnInfo>>().unwrap();
|
||||||
self.state.increase_mratls_conns();
|
self.state.increase_mratls_conns();
|
||||||
let remote_ip = req.remote_addr().unwrap().ip().to_string();
|
let remote_ip = conn_info.addr.ip().to_string();
|
||||||
let tx = self.tx.clone();
|
let tx = self.tx.clone();
|
||||||
let mut rx = self.tx.subscribe();
|
let mut rx = self.tx.subscribe();
|
||||||
let mut inbound = req.into_inner();
|
let mut inbound = req.into_inner();
|
||||||
|
Loading…
Reference in New Issue
Block a user