Improved messages
This commit is contained in:
@@ -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
@@ -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?;
|
||||
|
||||
Reference in New Issue
Block a user