show client names in debug server
This commit is contained in:
parent
82838e46dd
commit
f22cafa96e
@ -329,9 +329,13 @@ pub async fn handler(
|
||||
|
||||
info!(%addr, number, port, "authenticated");
|
||||
|
||||
let name = peer_query(&config.dyn_ip_server, number).await?;
|
||||
|
||||
info!(?name, "found client name");
|
||||
#[cfg(feature = "debug_server")]
|
||||
{
|
||||
if let Some(name) = peer_query(&config.dyn_ip_server, number).await? {
|
||||
info!(%name, "found client name");
|
||||
port_handler.lock().await.names.insert(number, name);
|
||||
}
|
||||
}
|
||||
|
||||
let Some(listener) = handler_metadata.listener.as_mut() else {
|
||||
unreachable!("client sucessfully authenticated but did not set handler_metadata.listener");
|
||||
|
@ -9,10 +9,9 @@ use tokio::sync::Mutex;
|
||||
use tracing::error;
|
||||
use zerocopy::{AsBytes, FromBytes, LittleEndian, Unaligned};
|
||||
|
||||
use eyre::eyre;
|
||||
use tracing::{debug, instrument};
|
||||
|
||||
use crate::packets::{Header, Packet, PacketKind};
|
||||
use crate::packets::{Header, Packet};
|
||||
|
||||
use crate::ports::PortHandler;
|
||||
use crate::spawn;
|
||||
@ -53,12 +52,14 @@ type U32 = zerocopy::U32<LittleEndian>;
|
||||
|
||||
#[derive(AsBytes)]
|
||||
#[repr(transparent)]
|
||||
#[allow(dead_code)]
|
||||
struct PeerQuery {
|
||||
number: U32,
|
||||
}
|
||||
|
||||
#[derive(FromBytes, Unaligned, Debug)]
|
||||
#[repr(packed)]
|
||||
#[allow(dead_code)]
|
||||
struct PeerReply {
|
||||
number: U32,
|
||||
name: [u8; 40],
|
||||
@ -98,7 +99,6 @@ pub async fn peer_query(server: &SocketAddr, number: u32) -> eyre::Result<Option
|
||||
let (mut reader, mut writer) = socket.split();
|
||||
|
||||
packet.send(&mut writer).await?;
|
||||
|
||||
packet.recv_into(&mut reader).await?;
|
||||
|
||||
Ok(if packet.kind().raw() == 5 {
|
||||
|
@ -272,6 +272,11 @@ async fn connection_handler(
|
||||
if let Some(port) = handler_metadata.port {
|
||||
let mut port_handler = port_handler.lock().await;
|
||||
|
||||
#[cfg(feature = "debug_server")]
|
||||
if let Some(number) = handler_metadata.number {
|
||||
port_handler.names.remove(&number);
|
||||
}
|
||||
|
||||
if let Some(port_state) = port_handler.port_state.get_mut(&port) {
|
||||
port_state.new_state(PortStatus::Disconnected);
|
||||
port_handler.register_update();
|
||||
|
@ -45,6 +45,10 @@ pub struct PortHandler {
|
||||
allocated_ports: HashMap<Number, Port>,
|
||||
|
||||
pub port_state: HashMap<Port, PortState>,
|
||||
|
||||
#[serde(skip)]
|
||||
#[cfg(feature = "debug_server")]
|
||||
pub names: HashMap<Number, String>,
|
||||
}
|
||||
|
||||
#[instrument(skip(port_handler, change_receiver))]
|
||||
@ -122,6 +126,7 @@ fn instant_from_timestamp(timestamp: UnixTimestamp) -> Instant {
|
||||
Instant::now() - UNIX_EPOCH.elapsed().unwrap() + Duration::from_secs(timestamp)
|
||||
}
|
||||
|
||||
#[cfg(feature = "debug_server")]
|
||||
impl Debug for PortHandler {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
const SHOW_N_FREE_PORTS: usize = 10;
|
||||
@ -165,7 +170,8 @@ impl Debug for PortHandler {
|
||||
.map(|(&number, &port)| {
|
||||
#[derive(Debug)]
|
||||
#[allow(dead_code)]
|
||||
struct State {
|
||||
struct State<'n> {
|
||||
name: &'n str,
|
||||
state: PortStatus,
|
||||
number: u32,
|
||||
port: u16,
|
||||
@ -175,6 +181,7 @@ impl Debug for PortHandler {
|
||||
let state = &self.port_state[&port];
|
||||
|
||||
State {
|
||||
name: self.names.get(&number).map_or("?", |x| x.as_str()),
|
||||
state: state.status,
|
||||
number,
|
||||
port,
|
||||
|
Loading…
Reference in New Issue
Block a user