roowho2_lib/server/fingerd/remote_user_info.rs
1// /// Retrieve remote user information for the given username on the specified host.
2// ///
3// /// Returns None if the user does not exist or no information is available.
4// async fn get_remote_user(username: &str, host: &str) -> anyhow::Result<Option<RawFingerResponse>> {
5// let addr = format!("{}:79", host);
6// let socket_addrs: Vec<SocketAddr> = addr.to_socket_addrs()?.collect();
7
8// if socket_addrs.is_empty() {
9// return Err(anyhow::anyhow!(
10// "Could not resolve address for host {}",
11// host
12// ));
13// }
14
15// let socket_addr = socket_addrs[0];
16
17// let mut stream = TcpStream::connect(socket_addr).await?;
18
19// let request = FingerRequest::new(false, username.to_string());
20// let request_bytes = request.to_bytes();
21// stream.write_all(&request_bytes).await?;
22
23// let mut response_bytes = Vec::new();
24// stream.read_to_end(&mut response_bytes).await?;
25
26// let response = RawFingerResponse::from_bytes(&response_bytes);
27
28// if response.is_empty() {
29// Ok(None)
30// } else {
31// Ok(Some(response))
32// }
33// }