diff --git a/crates/projection-irc/src/lib.rs b/crates/projection-irc/src/lib.rs index ff3d892..4808b85 100644 --- a/crates/projection-irc/src/lib.rs +++ b/crates/projection-irc/src/lib.rs @@ -181,17 +181,17 @@ async fn handle_registration<'a>( } CapabilitySubcommand::End => { let Some((ref username, ref realname)) = future_username else { - break Err(anyhow::Error::msg("Protocol violated")); + todo!(); }; let Some(nickname) = future_nickname.clone() else { - break Err(anyhow::Error::msg("Protocol violated")); + todo!(); }; let username = username.clone(); let realname = realname.clone(); let candidate_user = RegisteredUser { nickname: nickname.clone(), username, - realname + realname, }; if enabled_capabilities.contains(Capabilities::Sasl) && validated_user.as_ref() == Some(&candidate_user.nickname) @@ -200,10 +200,12 @@ async fn handle_registration<'a>( } else { let Some(candidate_password) = pass else { sasl_fail_message( - config.server_name.clone(), - nickname.clone(), - "User credentials was not provided".into() - ).write_async(writer).await?; + config.server_name.clone(), + nickname.clone(), + "User credentials was not provided".into(), + ) + .write_async(writer) + .await?; writer.flush().await?; continue; }; @@ -223,10 +225,12 @@ async fn handle_registration<'a>( }; let Some(candidate_password) = pass else { sasl_fail_message( - config.server_name.clone(), - nickname.clone(), - "User credentials was not provided".into() - ).write_async(writer).await?; + config.server_name.clone(), + nickname.clone(), + "User credentials was not provided".into(), + ) + .write_async(writer) + .await?; writer.flush().await?; continue; }; @@ -247,10 +251,12 @@ async fn handle_registration<'a>( }; let Some(candidate_password) = pass else { sasl_fail_message( - config.server_name.clone(), - nickname.clone(), - "User credentials was not provided".into() - ).write_async(writer).await?; + config.server_name.clone(), + nickname.clone(), + "User credentials was not provided".into(), + ) + .write_async(writer) + .await?; writer.flush().await?; continue; }; @@ -276,7 +282,13 @@ async fn handle_registration<'a>( writer.flush().await?; } else { if let Some(nickname) = future_nickname.clone() { - sasl_fail_message(config.server_name.clone(), nickname.clone(), "Unsupported mechanism".into()).write_async(writer).await?; + sasl_fail_message( + config.server_name.clone(), + nickname.clone(), + "Unsupported mechanism".into(), + ) + .write_async(writer) + .await?; writer.flush().await?; } else { break Err(anyhow::Error::msg("Wrong authentication sequence")); @@ -287,10 +299,11 @@ async fn handle_registration<'a>( if let Err(e) = auth_user(storage, &body.login, &body.password).await { tracing::warn!("Authentication failed: {:?}", e); if let Some(nickname) = future_nickname.clone() { - sasl_fail_message(config.server_name.clone(), nickname.clone(), "Bad credentials".into()).write_async(writer).await?; + sasl_fail_message(config.server_name.clone(), nickname.clone(), "Bad credentials".into()) + .write_async(writer) + .await?; writer.flush().await?; } else { - } } else { let login: Str = body.login.into(); @@ -320,7 +333,7 @@ async fn handle_registration<'a>( writer.flush().await?; } } - + // TODO handle abortion of authentication } _ => {} @@ -335,7 +348,7 @@ fn sasl_fail_message(sender: Str, nick: Str, text: Str) -> ServerMessage { ServerMessage { tags: vec![], sender: Some(sender), - body: ServerMessageBody::N904SaslFail { nick, text } + body: ServerMessageBody::N904SaslFail { nick, text }, } }