New docs in bonknet_broker
This commit is contained in:
@@ -30,9 +30,9 @@ struct BrokerContext {
|
||||
client_ca: CACertPair<'static>,
|
||||
server_ca: CACertPair<'static>,
|
||||
guestserver_ca: CACertPair<'static>,
|
||||
scdb_addr: Addr<ServerCertDB>,
|
||||
pdcm_addr: Addr<PendingDataConnManager>,
|
||||
sm_addr: Addr<ServerManager>,
|
||||
servercert_db: Addr<ServerCertDB>,
|
||||
pendingdataconn_manager: Addr<PendingDataConnManager>,
|
||||
server_manager: Addr<ServerManager>,
|
||||
}
|
||||
|
||||
|
||||
@@ -47,19 +47,19 @@ async fn main() {
|
||||
let server_ca = CACertPair::load_from_file("certs_pem/server_root_ca.pem").unwrap();
|
||||
let guestserver_ca = CACertPair::load_from_file("certs_pem/guestserver_root_ca.pem").unwrap();
|
||||
// Load Actors
|
||||
let scdb_addr = ServerCertDB::new().start();
|
||||
let dcm_addr = DataConnManager::new().start();
|
||||
let pdcm_addr = PendingDataConnManager::new(dcm_addr).start();
|
||||
let sm_addr = ServerManager::new(pdcm_addr.clone()).start();
|
||||
let servercert_db = ServerCertDB::new().start();
|
||||
let dataconn_manager = DataConnManager::new().start();
|
||||
let pendingdataconn_manager = PendingDataConnManager::new(dataconn_manager).start();
|
||||
let server_manager = ServerManager::new(pendingdataconn_manager.clone()).start();
|
||||
// Create Context
|
||||
let ctx = Arc::new(BrokerContext {
|
||||
broker_leaf,
|
||||
client_ca,
|
||||
server_ca,
|
||||
guestserver_ca,
|
||||
scdb_addr,
|
||||
pdcm_addr,
|
||||
sm_addr,
|
||||
servercert_db,
|
||||
pendingdataconn_manager,
|
||||
server_manager,
|
||||
});
|
||||
|
||||
// Pki Client Verifier
|
||||
@@ -109,7 +109,7 @@ async fn main() {
|
||||
}
|
||||
Subscribe => {
|
||||
info!("Subscribe Stream");
|
||||
let name = match ctx.scdb_addr.send(FetchName { cert: peer_cert_bytes }).await.unwrap() {
|
||||
let name = match ctx.servercert_db.send(FetchName { cert: peer_cert_bytes }).await.unwrap() {
|
||||
None => {
|
||||
error!("Cert has no name assigned!");
|
||||
let reply = ToServerConnTypeReply::GenericFailure;
|
||||
@@ -125,7 +125,7 @@ async fn main() {
|
||||
OpenDataStream(conn_id) => {
|
||||
info!("OpenDataStream with {:?}", conn_id);
|
||||
let msg = RegisterStream::server(conn_id, transport);
|
||||
ctx.pdcm_addr.send(msg).await.unwrap().unwrap();
|
||||
ctx.pendingdataconn_manager.send(msg).await.unwrap().unwrap();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -159,7 +159,7 @@ async fn main() {
|
||||
}
|
||||
|
||||
async fn server_subscribe_handler(ctx: &BrokerContext, transport: TransportStream, name: String) {
|
||||
match ctx.sm_addr.send(StartTransporter { name, transport }).await.unwrap() {
|
||||
match ctx.server_manager.send(StartTransporter { name, transport }).await.unwrap() {
|
||||
Ok(_) => {
|
||||
info!("Stream sent to the manager");
|
||||
}
|
||||
@@ -184,7 +184,7 @@ async fn server_command_handler(ctx: &BrokerContext, mut transport: TransportStr
|
||||
match msg {
|
||||
ChangeName { name } => {
|
||||
info!("Changing name to {}", name);
|
||||
match ctx.scdb_addr.send(UnregisterServer { cert: peer_cert_bytes.clone() }).await.unwrap() {
|
||||
match ctx.servercert_db.send(UnregisterServer { cert: peer_cert_bytes.clone() }).await.unwrap() {
|
||||
None => {
|
||||
info!("Nothing to unregister");
|
||||
}
|
||||
@@ -192,7 +192,7 @@ async fn server_command_handler(ctx: &BrokerContext, mut transport: TransportStr
|
||||
warn!("Unregistered from old name {}", old_name);
|
||||
}
|
||||
}
|
||||
let reply = match ctx.scdb_addr.send(RegisterServer { cert: peer_cert_bytes.clone(), name }).await.unwrap() {
|
||||
let reply = match ctx.servercert_db.send(RegisterServer { cert: peer_cert_bytes.clone(), name }).await.unwrap() {
|
||||
Ok(_) => {
|
||||
info!("Registered!");
|
||||
ToServerCommandReply::NameChanged
|
||||
@@ -206,7 +206,7 @@ async fn server_command_handler(ctx: &BrokerContext, mut transport: TransportStr
|
||||
}
|
||||
WhoAmI => {
|
||||
info!("Asked who I am");
|
||||
let reply = match ctx.scdb_addr.send(FetchName { cert: peer_cert_bytes.clone() }).await.unwrap() {
|
||||
let reply = match ctx.servercert_db.send(FetchName { cert: peer_cert_bytes.clone() }).await.unwrap() {
|
||||
None => {
|
||||
info!("I'm not registered anymore!? WTF");
|
||||
ToServerCommandReply::GenericFailure
|
||||
@@ -245,14 +245,14 @@ async fn guestserver_handler(ctx: &BrokerContext, mut transport: TransportStream
|
||||
match msg {
|
||||
Announce { name } => {
|
||||
info!("Announced with name {}", name);
|
||||
if ctx.scdb_addr.send(IsNameRegistered { name: name.clone() }).await.unwrap() {
|
||||
if ctx.servercert_db.send(IsNameRegistered { name: name.clone() }).await.unwrap() {
|
||||
info!("Name {} already registered!", name);
|
||||
let reply = ToGuestServerMessage::FailedNameAlreadyOccupied;
|
||||
transport.send(rmp_serde::to_vec(&reply).unwrap().into()).await.unwrap();
|
||||
break; // Stop reading
|
||||
} else {
|
||||
let cert = ctx.server_ca.sign_new_cert(server_leaf_certparams(name.as_str()));
|
||||
ctx.scdb_addr.send(RegisterServer {
|
||||
ctx.servercert_db.send(RegisterServer {
|
||||
cert: cert.cert().to_vec(),
|
||||
name,
|
||||
}).await.unwrap().unwrap();
|
||||
@@ -287,7 +287,7 @@ async fn client_handler(ctx: &BrokerContext, mut transport: TransportStream) {
|
||||
match msg {
|
||||
FromClientCommand::RequestServer { name } => {
|
||||
info!("REQUESTED SERVER {}", name);
|
||||
let data = ctx.sm_addr.send(RequestServer { name }).await.unwrap();
|
||||
let data = ctx.server_manager.send(RequestServer { name }).await.unwrap();
|
||||
match data {
|
||||
Ok(client_conn_id) => {
|
||||
let reply = ToClientResponse::OkRequest { conn_id: client_conn_id };
|
||||
@@ -301,14 +301,14 @@ async fn client_handler(ctx: &BrokerContext, mut transport: TransportStream) {
|
||||
}
|
||||
FromClientCommand::ServerList => {
|
||||
info!("Requested ServerList");
|
||||
let data = ctx.sm_addr.send(GetServerList {}).await.unwrap();
|
||||
let data = ctx.server_manager.send(GetServerList {}).await.unwrap();
|
||||
let reply = ToClientResponse::OkServerList { data };
|
||||
transport.send(rmp_serde::to_vec(&reply).unwrap().into()).await.unwrap();
|
||||
}
|
||||
FromClientCommand::UpgradeToDataStream(conn_id) => {
|
||||
info!("Upgrade to DataStream with conn_id {:?}", conn_id);
|
||||
let msg = RegisterStream::client(conn_id, transport);
|
||||
ctx.pdcm_addr.send(msg).await.unwrap().unwrap();
|
||||
ctx.pendingdataconn_manager.send(msg).await.unwrap().unwrap();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user