Client auth, Encryption module

This commit is contained in:
Alex-Emmet 2026-01-18 21:48:21 +01:00
commit be42cb1235
3 changed files with 1029 additions and 6 deletions

View file

@ -250,6 +250,7 @@ pub enum CommunicationType {
get_user_data, get_user_data,
get_iota_data, get_iota_data,
iota_user_data,
change_user_data, change_user_data,
change_iota_data, change_iota_data,
@ -342,6 +343,7 @@ impl CommunicationType {
"getuserdata" => CommunicationType::get_user_data, "getuserdata" => CommunicationType::get_user_data,
"getiotadata" => CommunicationType::get_iota_data, "getiotadata" => CommunicationType::get_iota_data,
"iotauserdata" => CommunicationType::iota_user_data,
"changeuserdata" => CommunicationType::change_user_data, "changeuserdata" => CommunicationType::change_user_data,
"changeiotadata" => CommunicationType::change_iota_data, "changeiotadata" => CommunicationType::change_iota_data,
@ -362,11 +364,11 @@ impl CommunicationType {
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct CommunicationValue { pub struct CommunicationValue {
pub id: Uuid, id: Uuid,
pub comm_type: CommunicationType, comm_type: CommunicationType,
pub sender: i64, sender: i64,
pub receiver: i64, receiver: i64,
pub data: HashMap<DataTypes, JsonValue>, data: HashMap<DataTypes, JsonValue>,
} }
#[allow(dead_code)] #[allow(dead_code)]
@ -421,7 +423,10 @@ impl CommunicationValue {
self.data.get(&key) self.data.get(&key)
} }
pub(crate) fn is_type(&self, p0: CommunicationType) -> bool { pub fn get_type(&self) -> CommunicationType {
self.comm_type.clone()
}
pub fn is_type(&self, p0: CommunicationType) -> bool {
self.comm_type == p0 self.comm_type == p0
} }
pub fn to_json(&self) -> JsonValue { pub fn to_json(&self) -> JsonValue {

View file

@ -228,11 +228,15 @@ impl OmikronConnection {
} }
return; return;
} }
if cv.is_type(CommunicationType::iota_connected) { if cv.is_type(CommunicationType::iota_connected) {
log_in!(PrintType::Omega, "IOTA connected");
if let Some(iota_id) = cv.get_data(DataTypes::iota_id).and_then(|v| v.as_i64()) { if let Some(iota_id) = cv.get_data(DataTypes::iota_id).and_then(|v| v.as_i64()) {
user_online_tracker::track_iota_connection(iota_id, omikron_id).await; user_online_tracker::track_iota_connection(iota_id, omikron_id).await;
let mut user_ids = JsonValue::Array(Vec::new());
if let Ok(users) = sql::get_users_by_iota_id(iota_id).await { if let Ok(users) = sql::get_users_by_iota_id(iota_id).await {
for user in users { for user in users {
let _ = user_ids.push(JsonValue::from(user.0));
user_online_tracker::track_user_status( user_online_tracker::track_user_status(
user.0, user.0,
ConnectionType::UserOffline, ConnectionType::UserOffline,
@ -240,7 +244,17 @@ impl OmikronConnection {
) )
.await; .await;
} }
} else {
log_in!(PrintType::General, "SQL error, when loading users for IOTA");
} }
self.send_message(
&CommunicationValue::new(CommunicationType::iota_user_data)
.with_id(cv.get_id())
.add_data(DataTypes::user_ids, user_ids),
)
.await;
} else {
log_in!(PrintType::General, "No IOTA ID found");
} }
return; return;
} }

1004
src/util/crypto_util.rs Normal file

File diff suppressed because it is too large Load diff