From 6984a20bddbdf7fdd22b2508de837f812f6634bb Mon Sep 17 00:00:00 2001 From: DJMrTV Date: Sat, 1 Feb 2025 20:59:53 +0100 Subject: [PATCH] feat(auth protocol): login(1) method --- src/protocols/auth/method_login.rs | 24 ++++++++++++++++++++++++ src/protocols/auth/method_login_ex.rs | 5 ++++- src/protocols/auth/mod.rs | 5 ++++- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 src/protocols/auth/method_login.rs diff --git a/src/protocols/auth/method_login.rs b/src/protocols/auth/method_login.rs new file mode 100644 index 0000000..641c1cd --- /dev/null +++ b/src/protocols/auth/method_login.rs @@ -0,0 +1,24 @@ +use std::io::Cursor; +use log::error; +use crate::nex::account::Account; +use crate::protocols::auth::method_login_ex::login_ex; +use crate::rmc::message::RMCMessage; +use crate::rmc::response::{ErrorCode, RMCResponseResult}; +use crate::rmc::structures::any::Any; +use crate::rmc::structures::RmcSerialize; + +pub fn login(rmcmessage: &RMCMessage, name: &str) -> RMCResponseResult{ + rmcmessage.error_result_with_code(ErrorCode::Core_NotImplemented) +} + +pub fn login_raw_params(rmcmessage: &RMCMessage, account: &Account) -> RMCResponseResult{ + let mut reader = Cursor::new(&rmcmessage.rest_of_data); + + let Ok(str) = String::deserialize(&mut reader) else { + error!("error reading packet"); + return rmcmessage.error_result_with_code(ErrorCode::Core_InvalidArgument); + }; + + + login(rmcmessage, &str) +} \ No newline at end of file diff --git a/src/protocols/auth/method_login_ex.rs b/src/protocols/auth/method_login_ex.rs index 6805925..2e57f55 100644 --- a/src/protocols/auth/method_login_ex.rs +++ b/src/protocols/auth/method_login_ex.rs @@ -1,5 +1,6 @@ use std::io::Cursor; use log::{error, info}; +use crate::nex::account::Account; use crate::rmc::message::RMCMessage; use crate::rmc::response::{ErrorCode, RMCResponse, RMCResponseResult}; use crate::rmc::structures::{string, any, RmcSerialize}; @@ -8,10 +9,12 @@ use crate::rmc::structures::any::Any; pub fn login_ex(rmcmessage: &RMCMessage, name: &str) -> RMCResponseResult{ // todo: figure out how the AuthenticationInfo struct works, parse it and validate login info + + return rmcmessage.error_result_with_code(ErrorCode::Core_InvalidArgument); } -pub fn login_ex_raw_params(rmcmessage: &RMCMessage) -> RMCResponseResult{ +pub fn login_ex_raw_params(rmcmessage: &RMCMessage, account: &Account) -> RMCResponseResult{ let mut reader = Cursor::new(&rmcmessage.rest_of_data); let Ok(str) = String::deserialize(&mut reader) else { diff --git a/src/protocols/auth/mod.rs b/src/protocols/auth/mod.rs index e6243b7..fa58519 100644 --- a/src/protocols/auth/mod.rs +++ b/src/protocols/auth/mod.rs @@ -1,8 +1,10 @@ mod method_login_ex; +mod method_login; use log::{error, info}; use crate::define_protocol; use crate::nex::account::Account; +use crate::protocols::auth::method_login::login_raw_params; use crate::protocols::auth::method_login_ex::{login_ex, login_ex_raw_params}; use crate::rmc::message::RMCMessage; use crate::rmc::response::{ErrorCode, RMCResponse, RMCResponseResult}; @@ -10,6 +12,7 @@ use crate::rmc::response::{ErrorCode, RMCResponse, RMCResponseResult}; define_protocol!{ 10<'a>(account: &'a Account) => { + 0x01 => login_raw_params, 0x02 => login_ex_raw_params } -} \ No newline at end of file +}