fix assert_msg() & add custom checking

This commit is contained in:
ayham 2021-05-20 09:57:25 +03:00
parent 13e4e70511
commit ff47da67c0
Signed by: ayham
GPG Key ID: EAB7F5A9DF503678
11 changed files with 90 additions and 16 deletions

View File

@ -1,3 +1,3 @@
#!/bin/sh
docker-compose -f ../DockerFiles/master_server.yml ${1:-up}
docker-compose -f ./DockerFiles/master_server.yml ${1:-up}

View File

@ -1,3 +1,3 @@
#!/bin/sh
docker-compose -f ../DockerFiles/sandbox.yml ${1:-up}
docker-compose -f ./DockerFiles/sandbox.yml ${1:-up}

View File

@ -1,4 +1,4 @@
#!/bin/sh
sudo rm -rf ../DockerFiles/.db
sudo rm -rf ../DockerFiles/.bak
sudo rm -rf ./DockerFiles/.db
sudo rm -rf ./DockerFiles/.bak

View File

@ -93,6 +93,7 @@ pub fn acc_auth(
let response: Message = bincode::deserialize(&tls_client.read_plaintext).unwrap();
tls_client.read_plaintext.clear();
// TODO: what even is this kind of checking?
if response.msgtype == MessageType::ServerReturn
&& response.instruction == 1
&& response.argument_count == 1

View File

@ -17,17 +17,24 @@ use crate::common::message::message_type::MessageType;
pub fn assert_msg(
message: &Message,
msg_type: MessageType,
check_arg_cnt: bool,
arg_cnt: usize,
check_dnum: bool,
msg_dnum: usize,
check_dmax: bool,
msg_dmax: usize,
check_len: bool,
data_len: usize,
) -> bool {
if message.msgtype != msg_type
|| message.argument_count != arg_cnt
|| message.data_message_number != msg_dnum
|| message.data_message_max != msg_dmax
|| message.data.len() == data_len
{
if message.msgtype != msg_type {
return false;
} else if check_arg_cnt && (message.argument_count != arg_cnt) {
return false;
} else if check_dnum && (message.data_message_number != msg_dnum) {
return false;
} else if check_dmax && (message.data_message_max != msg_dmax) {
return false;
} else if check_len && (message.data.len() != data_len) {
return false;
}

View File

@ -10,7 +10,18 @@ use crate::server::network::tls_connection::TlsConnection;
pub fn get_asset_data(tls_connection: &mut TlsConnection, message: &Message) {
/* assert recieved message */
if assert_msg(message, MessageType::DataTransfer, 3, 0, 0, 0) {
if assert_msg(
message,
MessageType::DataTransfer,
true,
3,
false,
0,
false,
0,
false,
0,
) {
tls_connection.closing = true;
warn!("GET_ASSET_DATA_MSG_ASSERT_FAILED");
return;

View File

@ -11,7 +11,18 @@ use crate::server::network::tls_connection::TlsConnection;
pub fn get_asset_info(tls_connection: &mut TlsConnection, message: &Message) {
/* assert recieved message */
if assert_msg(message, MessageType::DataTransfer, 1, 0, 0, 0) {
if assert_msg(
message,
MessageType::DataTransfer,
true,
1,
false,
0,
false,
0,
false,
0,
) {
tls_connection.closing = true;
warn!("GET_ASSET_INFO_INVALID_MESSAGE");
return;

View File

@ -10,7 +10,18 @@ use crate::server::network::tls_connection::TlsConnection;
pub fn login_normal(tls_connection: &mut TlsConnection, message: &Message) {
/* assert recieved message */
if assert_msg(message, MessageType::Command, 3, 0, 0, 0) {
if !assert_msg(
message,
MessageType::Command,
true,
3,
false,
0,
false,
0,
false,
0,
) {
tls_connection.closing = true;
warn!("LOGIN_INVALID_MESSAGE");
return;

View File

@ -10,7 +10,18 @@ use crate::server::network::tls_connection::TlsConnection;
pub fn register(tls_connection: &mut TlsConnection, message: &Message) {
/* assert recieved message */
if assert_msg(message, MessageType::Command, 5, 0, 0, 0) {
if !assert_msg(
message,
MessageType::Command,
true,
5,
false,
0,
false,
0,
false,
0,
) {
warn!("REGISTER_INVALID_MESSAGE");
tls_connection.closing = true;
return;

View File

@ -7,7 +7,18 @@ use crate::server::network::tls_connection::TlsConnection;
pub fn retrieve_portfolio(tls_connection: &mut TlsConnection, message: &Message) {
/* assert recieved message */
if assert_msg(message, MessageType::Command, 1, 0, 0, 0) {
if !assert_msg(
message,
MessageType::Command,
true,
1,
false,
0,
false,
0,
false,
0,
) {
tls_connection.closing = true;
warn!("RETRIEVE_PORTFOLIO_INVALID_MESSAGE");
return;

View File

@ -7,7 +7,18 @@ use crate::server::network::tls_connection::TlsConnection;
pub fn retrieve_transactions(tls_connection: &mut TlsConnection, message: &Message) {
/* assert recieved message */
if assert_msg(message, MessageType::DataTransfer, 1, 0, 0, 0) {
if !assert_msg(
message,
MessageType::DataTransfer,
true,
1,
false,
0,
false,
0,
false,
0,
) {
tls_connection.closing = true;
warn!("RETRIEVE_TRANSACTION_INVALID_MESSAGE");
return;