From 9fee4009f2635c1b3f524eb2303dbc4b593d0e2b Mon Sep 17 00:00:00 2001 From: Andrew Rioux Date: Sat, 22 Feb 2025 21:19:51 -0500 Subject: [PATCH] feat: finished adding handler for new beacons --- sparse-server/src/webserver.rs | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/sparse-server/src/webserver.rs b/sparse-server/src/webserver.rs index 7f587fe..7aa4cc7 100644 --- a/sparse-server/src/webserver.rs +++ b/sparse-server/src/webserver.rs @@ -439,7 +439,7 @@ async fn handle_listener_events( socket.send(ws::Message::Text(serde_json::to_string(&SidebarEvents::Checkin(bid.clone()))?)).await?; } Ok(BeaconEvent::NewBeacon(bid)) => { - let beacons = sqlx::query!( + let beacon = sqlx::query!( "SELECT template_id, peer_ip, nickname, cwd, operating_system, beacon_userent, hostname, config_id FROM beacon_instance WHERE beacon_id = ?", bid @@ -452,8 +452,24 @@ async fn handle_listener_events( WHERE beacon_id = ?", bid ) - .fetch_one(&state.db) + .fetch_all(&state.db) .await?; + + let beacon = CurrentBeaconInstance { + beacon_id: bid, + template_id: beacon.template_id, + ip: beacon.peer_ip, + nickname: beacon.nickname, + cwd: beacon.cwd, + operating_system: beacon.operating_system, + userent: beacon.beacon_userent, + hostname: beacon.hostname, + config_id: beacon.config_id, + last_checkin: chrono::Utc::now(), + category_ids: category_ids.iter().map(|r| r.category_id).collect() + }; + + socket.send(ws::Message::Text(serde_json::to_string(&beacon)?)).await?; } Err(e) => { tracing::warn!("Unable to handle general event: {e:?}");