merge retrieval_transaction.rs with retrieve_transactions.rs
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
- remove src/libtrader/network/cmd folder entirely - add investigate log discrepancy between server and client to todo board
This commit is contained in:
parent
7c5ebd00c5
commit
7413505375
|
@ -1,10 +1,11 @@
|
|||
use log::warn;
|
||||
|
||||
use crate::common::account::transaction::Transaction;
|
||||
use crate::common::message::inst::DataTransferInst;
|
||||
use crate::common::message::message::Message;
|
||||
use crate::common::message::message_builder::message_builder;
|
||||
use crate::common::message::message_type::MessageType;
|
||||
use crate::common::misc::return_flags::ReturnFlags;
|
||||
use crate::common::misc::assert_msg::assert_msg;
|
||||
|
||||
use crate::server::network::jwt_wrapper::verify_jwt_token;
|
||||
|
||||
|
@ -14,16 +15,37 @@ use tokio_rustls::server::TlsStream;
|
|||
|
||||
pub async fn acc_retrieve_transaction(
|
||||
sql_conn: &tokio_postgres::Client,
|
||||
socket: &mut TlsStream<TcpStream>,
|
||||
tls_connection: &mut TlsStream<TcpStream>,
|
||||
message: &Message,
|
||||
) -> Result<(), ReturnFlags> {
|
||||
) -> std::io::Result<()> {
|
||||
/* assert recieved message */
|
||||
if !assert_msg(
|
||||
message,
|
||||
MessageType::DataTransfer,
|
||||
true,
|
||||
1,
|
||||
false,
|
||||
0,
|
||||
false,
|
||||
0,
|
||||
false,
|
||||
0,
|
||||
) && message.instruction == DataTransferInst::GetUserTransactionHist as i64
|
||||
&& message.data.len() != 0
|
||||
{
|
||||
warn!("RETRIEVE_TRANSACTION_INVALID_MESSAGE");
|
||||
return tls_connection.shutdown().await;
|
||||
}
|
||||
|
||||
/* verify JWT token */
|
||||
let token = match verify_jwt_token(bincode::deserialize(&message.data).unwrap()) {
|
||||
Ok(token) => token,
|
||||
Err(_) => {
|
||||
warn!("ACC_RETRIEVE_TRANSACTION_UNAUTH_TOKEN");
|
||||
socket.shutdown().await.unwrap();
|
||||
return Err(ReturnFlags::ServerAccUnauthorized);
|
||||
tls_connection.shutdown().await.unwrap();
|
||||
// Unauth aren't big deal,
|
||||
// maybe later we can make more sophisticated DOS attack detection
|
||||
return Ok(());
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -55,10 +77,14 @@ pub async fn acc_retrieve_transaction(
|
|||
0,
|
||||
bincode::serialize(&transactions).unwrap(),
|
||||
);
|
||||
socket
|
||||
match tls_connection
|
||||
.write_all(&bincode::serialize(&message).unwrap())
|
||||
.await
|
||||
.map_err(|_| ReturnFlags::ServerRetrieveTransactionFailed)?;
|
||||
|
||||
Ok(())
|
||||
{
|
||||
Ok(()) => Ok(()),
|
||||
Err(err) => {
|
||||
warn!("Could not write to client! Error: {}", err);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
pub mod retrieve_transactions;
|
|
@ -1,51 +0,0 @@
|
|||
use log::warn;
|
||||
use std::io;
|
||||
|
||||
use crate::common::message::inst::DataTransferInst;
|
||||
use crate::common::message::message::Message;
|
||||
use crate::common::message::message_type::MessageType;
|
||||
use crate::common::misc::assert_msg::assert_msg;
|
||||
use crate::common::misc::return_flags::ReturnFlags;
|
||||
|
||||
use crate::server::account::retrieval_transaction::acc_retrieve_transaction;
|
||||
|
||||
use tokio::io::AsyncWriteExt;
|
||||
use tokio::net::TcpStream;
|
||||
use tokio_rustls::server::TlsStream;
|
||||
|
||||
pub async fn retrieve_transactions(
|
||||
sql_conn: &tokio_postgres::Client,
|
||||
tls_connection: &mut TlsStream<TcpStream>,
|
||||
message: &Message,
|
||||
) -> std::io::Result<()> {
|
||||
/* assert recieved message */
|
||||
if !assert_msg(
|
||||
message,
|
||||
MessageType::DataTransfer,
|
||||
true,
|
||||
1,
|
||||
false,
|
||||
0,
|
||||
false,
|
||||
0,
|
||||
false,
|
||||
0,
|
||||
) && message.instruction == DataTransferInst::GetUserTransactionHist as i64
|
||||
&& message.data.len() != 0
|
||||
{
|
||||
warn!("RETRIEVE_TRANSACTION_INVALID_MESSAGE");
|
||||
return tls_connection.shutdown().await;
|
||||
}
|
||||
|
||||
/* call acc_retrieve_transaction() server version */
|
||||
match acc_retrieve_transaction(sql_conn, tls_connection, message).await {
|
||||
Ok(_) => Ok(()),
|
||||
Err(err) => {
|
||||
warn!("RETRIEVE_TRANSACTION_FAILED: {}", err);
|
||||
Err(io::Error::new(
|
||||
io::ErrorKind::Other,
|
||||
format!("{}: {}", ReturnFlags::ServerRetrieveTransactionFailed, err),
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,8 +8,7 @@ use crate::common::message::message_type::MessageType;
|
|||
use crate::server::account::authorization::acc_auth;
|
||||
use crate::server::account::creation::acc_create;
|
||||
use crate::server::account::retrieval_portfolio::acc_retrieve_portfolio;
|
||||
|
||||
use crate::server::network::cmd::retrieve_transactions::retrieve_transactions;
|
||||
use crate::server::account::retrieval_transaction::acc_retrieve_transaction;
|
||||
|
||||
use tokio::io::AsyncWriteExt;
|
||||
use tokio::net::TcpStream;
|
||||
|
@ -125,7 +124,7 @@ pub async fn handle_data(
|
|||
acc_retrieve_portfolio(socket, &client_msg).await
|
||||
}
|
||||
_ if client_msg.instruction == DataTransferInst::GetUserTransactionHist as i64 => {
|
||||
retrieve_transactions(sql_conn, socket, &client_msg).await
|
||||
acc_retrieve_transaction(sql_conn, socket, &client_msg).await
|
||||
}
|
||||
_ => Ok(()),
|
||||
}
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
pub mod cmd;
|
||||
pub mod gen_tls_server_config;
|
||||
pub mod handle_data;
|
||||
pub mod jwt_wrapper;
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
## To do
|
||||
|
||||
- investigate server logging doesn't include location of log method caller
|
||||
- create correct modules
|
||||
* [ ] fix weird file naming
|
||||
* [ ] fix namespace naming
|
||||
|
|
Loading…
Reference in New Issue