diff --git a/crates/ptth_relay/src/lib.rs b/crates/ptth_relay/src/lib.rs index e0cf7dc..5154644 100644 --- a/crates/ptth_relay/src/lib.rs +++ b/crates/ptth_relay/src/lib.rs @@ -309,8 +309,32 @@ async fn handle_server_list_internal (state: &Arc ) async fn handle_unregistered_servers_internal (state: &Arc ) -> UnregisteredServerListPage { + use LastSeen::*; + + let now = Utc::now (); + + let server_list = { + let guard = state.unregistered_servers.read ().await; + (*guard).clone () + }; + + let unregistered_servers = server_list.into_iter () + .map (|x| { + let last_seen = match pretty_print_last_seen (now, x.seen) { + Negative => "Error (negative time)".into (), + Connected => "Recently".into (), + Description (s) => s.into (), + }; + + UnregisteredServer { + name: x.name, + tripcode: base64::encode (x.tripcode.as_bytes ()), + last_seen, + } + }).collect (); + UnregisteredServerListPage { - unregistered_servers: vec! [], + unregistered_servers, } } diff --git a/crates/ptth_relay/src/relay_state.rs b/crates/ptth_relay/src/relay_state.rs index 1a27dca..96d3a98 100644 --- a/crates/ptth_relay/src/relay_state.rs +++ b/crates/ptth_relay/src/relay_state.rs @@ -70,6 +70,7 @@ impl Default for ServerStatus { } } +#[derive (Clone)] pub struct RejectedServer { pub name: String, pub tripcode: blake3::Hash,