Improved messages

This commit is contained in:
2026-08-14 10:42:00 -04:00
parent cc8b991af8
commit 696df071dd
2 changed files with 26 additions and 8 deletions
+20 -2
View File
@@ -37,15 +37,33 @@ impl UserConnections {
)); ));
}; };
let public_key = crate::signature::from_string(&public_key_string)?; let Ok(public_key) = crate::signature::from_string(&public_key_string) else {
send_socket(
&mut socket,
&ClientMethod::Error {
error: Cow::Borrowed("Invalid public key"),
},
)
.await?;
return Err(anyhow::anyhow!("Invalid public key"));
};
if public_key if public_key
.verify_strict( .verify_strict(
format!("{timestamp}@{hostname}").as_bytes(), format!("{timestamp}@{hostname}").as_bytes(),
&crate::signature::from_string_sig(&signature)?, &crate::signature::from_string_sig(&signature)?,
) )
.is_ok() .is_err()
{ {
send_socket(
&mut socket,
&ClientMethod::Error {
error: Cow::Borrowed("Invalid signature"),
},
)
.await?;
return Err(anyhow::anyhow!("Invalid signature")); return Err(anyhow::anyhow!("Invalid signature"));
} }
+6 -6
View File
@@ -76,21 +76,21 @@ pub async fn read_loop(socket: &Arc<Mutex<WebSocket>>) -> anyhow::Result<()> {
pub async fn read_socket(socket: &mut WebSocket) -> anyhow::Result<Option<ServerMethod>> { pub async fn read_socket(socket: &mut WebSocket) -> anyhow::Result<Option<ServerMethod>> {
match socket.recv().await.transpose()? { match socket.recv().await.transpose()? {
Some(Message::Text(text)) => { Some(Message::Text(text)) => match serde_json::from_str(&text.to_string()) {
if let Ok(msg) = serde_json::from_str(&text.to_string()) { Ok(msg) => Ok(Some(msg)),
Ok(Some(msg))
} else { Err(e) => {
send_socket( send_socket(
socket, socket,
&ClientMethod::Error { &ClientMethod::Error {
error: Cow::Borrowed("Unable to parse message: {text}"), error: Cow::Owned(format!("Unable to parse message: {e}")),
}, },
) )
.await?; .await?;
Ok(None) Ok(None)
} }
} },
Some(Message::Ping(v)) => { Some(Message::Ping(v)) => {
socket.send(Message::Pong(v)).await?; socket.send(Message::Pong(v)).await?;