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
.verify_strict(
format!("{timestamp}@{hostname}").as_bytes(),
&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"));
}
+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>> {
match socket.recv().await.transpose()? {
Some(Message::Text(text)) => {
if let Ok(msg) = serde_json::from_str(&text.to_string()) {
Ok(Some(msg))
} else {
Some(Message::Text(text)) => match serde_json::from_str(&text.to_string()) {
Ok(msg) => Ok(Some(msg)),
Err(e) => {
send_socket(
socket,
&ClientMethod::Error {
error: Cow::Borrowed("Unable to parse message: {text}"),
error: Cow::Owned(format!("Unable to parse message: {e}")),
},
)
.await?;
Ok(None)
}
}
},
Some(Message::Ping(v)) => {
socket.send(Message::Pong(v)).await?;