Fixing
This commit is contained in:
parent
04356f991a
commit
d37d949513
7 changed files with 18 additions and 37 deletions
|
|
@ -15,10 +15,8 @@ use json::JsonValue;
|
||||||
use rand::{Rng, distributions::Alphanumeric};
|
use rand::{Rng, distributions::Alphanumeric};
|
||||||
use sha2::Sha256;
|
use sha2::Sha256;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio::sync::Mutex;
|
|
||||||
use tokio::sync::RwLock;
|
use tokio::sync::RwLock;
|
||||||
use tokio_tungstenite::WebSocketStream;
|
use tokio_tungstenite::WebSocketStream;
|
||||||
use tokio_util::compat::Compat;
|
|
||||||
use tungstenite::Message;
|
use tungstenite::Message;
|
||||||
use tungstenite::Utf8Bytes;
|
use tungstenite::Utf8Bytes;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
@ -68,8 +66,10 @@ impl CommunityConnection {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn handle_message(self: Arc<Self>, message: String) {
|
pub async fn handle_message(self: Arc<Self>, message: String) {
|
||||||
let cv =
|
let mut cv = CommunicationValue::from_json(&message);
|
||||||
CommunicationValue::from_json(&message).with_sender(self.get_user_id().await.unwrap());
|
if let Some(user_id) = self.get_user_id().await {
|
||||||
|
cv = cv.with_sender(user_id);
|
||||||
|
}
|
||||||
|
|
||||||
if cv.is_type(CommunicationType::identification) && !self.is_identified().await {
|
if cv.is_type(CommunicationType::identification) && !self.is_identified().await {
|
||||||
self.handle_identification(cv).await;
|
self.handle_identification(cv).await;
|
||||||
|
|
@ -101,26 +101,6 @@ impl CommunityConnection {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async fn handle_function(&self, cv: CommunicationValue) {
|
async fn handle_function(&self, cv: CommunicationValue) {
|
||||||
/*
|
|
||||||
* {
|
|
||||||
* "type": "function",
|
|
||||||
* "id": "<uuid>",
|
|
||||||
* "log": {
|
|
||||||
* "log_level": 0,
|
|
||||||
* "message": "running function"
|
|
||||||
* },
|
|
||||||
* "data": {
|
|
||||||
* "codec": "<channel_codec>", // optional
|
|
||||||
* "name": "<channel_name>",
|
|
||||||
* "path": "<overlord_category_name>/<overlord_category_name>...",
|
|
||||||
* "function": "<function_to_execute>",
|
|
||||||
* "payload": {
|
|
||||||
* "<ARG_1>": "<VAL_1>",
|
|
||||||
* ...
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
let name = cv.get_data(DataTypes::name).unwrap().as_str().unwrap();
|
let name = cv.get_data(DataTypes::name).unwrap().as_str().unwrap();
|
||||||
let path = cv.get_data(DataTypes::path).unwrap().as_str().unwrap();
|
let path = cv.get_data(DataTypes::path).unwrap().as_str().unwrap();
|
||||||
let function = cv.get_data(DataTypes::function).unwrap().as_str().unwrap();
|
let function = cv.get_data(DataTypes::function).unwrap().as_str().unwrap();
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@ use crate::{
|
||||||
data::communication::{CommunicationType, CommunicationValue},
|
data::communication::{CommunicationType, CommunicationValue},
|
||||||
};
|
};
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use axum::Json;
|
|
||||||
use json::JsonValue;
|
use json::JsonValue;
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,11 @@ use crate::{
|
||||||
gui::log_panel::log_message,
|
gui::log_panel::log_message,
|
||||||
util::file_util::{get_children, load_file, save_file},
|
util::file_util::{get_children, load_file, save_file},
|
||||||
};
|
};
|
||||||
use aes_gcm::aead::Payload;
|
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use axum::Json;
|
|
||||||
use json::{JsonValue, array, object};
|
use json::{JsonValue, array, object};
|
||||||
|
use std::fs;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::{any::Any, collections::HashMap};
|
use std::{any::Any, collections::HashMap};
|
||||||
use std::{fs, pin::Pin};
|
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
pub struct TextChat {
|
pub struct TextChat {
|
||||||
name: String,
|
name: String,
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ use std::time::{SystemTime, UNIX_EPOCH};
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
#[derive(Eq, Hash, PartialEq, Clone, Debug)]
|
#[derive(Eq, Hash, PartialEq, Clone, Debug)]
|
||||||
|
#[allow(non_camel_case_types, dead_code)]
|
||||||
pub enum DataTypes {
|
pub enum DataTypes {
|
||||||
error_type,
|
error_type,
|
||||||
accepted_ids,
|
accepted_ids,
|
||||||
|
|
@ -152,11 +153,15 @@ impl DataTypes {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(PartialEq, Clone, Debug)]
|
#[derive(PartialEq, Clone, Debug)]
|
||||||
|
#[allow(non_camel_case_types, dead_code)]
|
||||||
pub enum CommunicationType {
|
pub enum CommunicationType {
|
||||||
error,
|
error,
|
||||||
error_invalid_user_id,
|
error_invalid_user_id,
|
||||||
error_not_found,
|
error_not_found,
|
||||||
|
error_no_iota,
|
||||||
error_invalid_challenge,
|
error_invalid_challenge,
|
||||||
|
error_invalid_secret,
|
||||||
|
error_invalid_private_key,
|
||||||
success,
|
success,
|
||||||
message,
|
message,
|
||||||
message_send,
|
message_send,
|
||||||
|
|
@ -264,6 +269,7 @@ pub struct CommunicationValue {
|
||||||
pub data: HashMap<DataTypes, JsonValue>,
|
pub data: HashMap<DataTypes, JsonValue>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
impl CommunicationValue {
|
impl CommunicationValue {
|
||||||
pub fn new(comm_type: CommunicationType) -> Self {
|
pub fn new(comm_type: CommunicationType) -> Self {
|
||||||
Self {
|
Self {
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ mod server;
|
||||||
mod users;
|
mod users;
|
||||||
mod util;
|
mod util;
|
||||||
|
|
||||||
use crate::communities::community::Community;
|
|
||||||
use crate::communities::community_manager;
|
use crate::communities::community_manager;
|
||||||
use crate::communities::interactables::registry;
|
use crate::communities::interactables::registry;
|
||||||
use crate::data::communication::{CommunicationType, CommunicationValue, DataTypes};
|
use crate::data::communication::{CommunicationType, CommunicationValue, DataTypes};
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
use base64::encode;
|
use base64::Engine;
|
||||||
|
use base64::engine::general_purpose::STANDARD;
|
||||||
use futures::{StreamExt, TryFutureExt};
|
use futures::{StreamExt, TryFutureExt};
|
||||||
use http_body_util::Full;
|
use http_body_util::Full;
|
||||||
use hyper::body::Bytes;
|
use hyper::body::Bytes;
|
||||||
|
|
@ -206,7 +207,7 @@ fn calculate_accept_key(key: &str) -> String {
|
||||||
sha1.update(key.as_bytes());
|
sha1.update(key.as_bytes());
|
||||||
sha1.update(websocket_guid.as_bytes());
|
sha1.update(websocket_guid.as_bytes());
|
||||||
let result = sha1.finalize();
|
let result = sha1.finalize();
|
||||||
encode(result) // Base64 encode the result
|
STANDARD.encode(result) // Base64 encode the result
|
||||||
}
|
}
|
||||||
fn load_tls_config() -> Result<Arc<ServerConfig>, Box<dyn Error>> {
|
fn load_tls_config() -> Result<Arc<ServerConfig>, Box<dyn Error>> {
|
||||||
// Load certificate file
|
// Load certificate file
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,7 @@ use futures::stream::SplitStream;
|
||||||
use hyper::upgrade::Upgraded;
|
use hyper::upgrade::Upgraded;
|
||||||
use hyper_util::rt::TokioIo;
|
use hyper_util::rt::TokioIo;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio::net::TcpListener;
|
use tungstenite::Message;
|
||||||
use tokio_util::compat::{Compat, TokioAsyncReadCompatExt};
|
|
||||||
use tungstenite::{
|
|
||||||
Message, Utf8Bytes,
|
|
||||||
handshake::server::{Request, Response},
|
|
||||||
};
|
|
||||||
|
|
||||||
pub fn handle(
|
pub fn handle(
|
||||||
path: String,
|
path: String,
|
||||||
|
|
@ -22,7 +17,9 @@ pub fn handle(
|
||||||
tokio::spawn(async move {
|
tokio::spawn(async move {
|
||||||
if path.starts_with("/ws/community/") {
|
if path.starts_with("/ws/community/") {
|
||||||
let community_id = path.split("/").nth(3).unwrap();
|
let community_id = path.split("/").nth(3).unwrap();
|
||||||
|
log_message(format!("Community: {}", community_id));
|
||||||
if let Some(community) = community_manager::get_community(community_id).await {
|
if let Some(community) = community_manager::get_community(community_id).await {
|
||||||
|
log_message("Connected");
|
||||||
let community_conn: Arc<CommunityConnection> =
|
let community_conn: Arc<CommunityConnection> =
|
||||||
Arc::from(CommunityConnection::new(writer, reader, community));
|
Arc::from(CommunityConnection::new(writer, reader, community));
|
||||||
loop {
|
loop {
|
||||||
|
|
@ -51,6 +48,7 @@ pub fn handle(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
None => {
|
None => {
|
||||||
|
log_message("Closed Session me!");
|
||||||
community_conn.handle_close().await;
|
community_conn.handle_close().await;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue