From 4eae3c046de5317b3c1426f4e5431e7ee0a49d0b Mon Sep 17 00:00:00 2001 From: Leo dev Date: Sun, 14 Dec 2025 11:03:02 +0100 Subject: [PATCH] Improved plugin modularity and protocol --- client.js | 58 ----------------------------------------- src/plugin/mod.rs | 2 +- src/plugin/types.rs | 10 ++++++- src/requests/message.rs | 9 ++++++- src/server.rs | 17 +++++++----- 5 files changed, 28 insertions(+), 68 deletions(-) delete mode 100644 client.js diff --git a/client.js b/client.js deleted file mode 100644 index 9afc910..0000000 --- a/client.js +++ /dev/null @@ -1,58 +0,0 @@ -import readline from 'readline'; - -async function createServerToken() { - return (await (await fetch('http://localhost:3000/api/auth', { - method: 'POST', - body: JSON.stringify({ - intents: 'server', - server_ip: '127.0.0.1' - }) - })).json()).token; -} - -const token = await createServerToken(); - -const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout -}); - -const ws = new WebSocket('ws://localhost:7080'); - -ws.onopen = () => { - console.log('WebSocket connection established'); - console.log('Initializing handshake'); - ws.send(JSON.stringify({ version: '0.0.1', auth_token: token })) -}; - -ws.onmessage = (event) => { - const message = JSON.parse(event.data); - if (message.type === 'authenticated') { - console.log('Logged in with uuid: ' + message.params.messages); - console.log(message.params.messages); - } - console.log('Received:', message); - // ws.close(); -}; - -function sendMessage(message) { - ws.send(JSON.stringify({ type: 'send_message', params: { - channel_id: 'general', - contents: message - }})); -} - -function ask(question) { - return new Promise((resolve) => { - rl.question(question, resolve); - }); -} - -while (true) { - const message = await ask(''); - if (message === 'q') { - ws.close(); - process.exit(); - } - sendMessage(message); -} \ No newline at end of file diff --git a/src/plugin/mod.rs b/src/plugin/mod.rs index f8ae3bc..0047378 100644 --- a/src/plugin/mod.rs +++ b/src/plugin/mod.rs @@ -11,7 +11,7 @@ use crate::plugin::types::{LoaderMessage, PluginMessage}; pub struct Plugin(TcpStream, BufReader); impl Plugin { - pub fn send(&mut self, m: LoaderMessage) { + pub fn send(&mut self, m: &LoaderMessage) { self.0 .write(serde_json::to_string(&m).unwrap().as_bytes()) .unwrap(); diff --git a/src/plugin/types.rs b/src/plugin/types.rs index 94bd7ff..1d094ff 100644 --- a/src/plugin/types.rs +++ b/src/plugin/types.rs @@ -1,6 +1,9 @@ use serde::{Deserialize, Serialize}; -use crate::types::message::{ClientMessage, WsMessage}; +use crate::types::{ + data::Message, + message::{ClientMessage, WsMessage}, +}; #[derive(Debug, Serialize, Deserialize)] pub struct PluginJson { @@ -23,6 +26,11 @@ pub enum LoaderMessage { user_id: String, msg: WsMessage, }, + + MessageSent { + user_id: String, + msg: Message, + }, } #[derive(Debug, Clone, Serialize, Deserialize)] diff --git a/src/requests/message.rs b/src/requests/message.rs index 7799f48..f58941b 100644 --- a/src/requests/message.rs +++ b/src/requests/message.rs @@ -1,6 +1,8 @@ use std::sync::Arc; -use crate::{server::Server, types, utils::client::Client}; +use serde_json::ser; + +use crate::{plugin::types::LoaderMessage, server::Server, types, utils::client::Client}; crate::logger!(LOGGER "Message Manager"); @@ -43,6 +45,11 @@ pub fn send( }); } + server.send_plugin_message(&LoaderMessage::MessageSent { + user_id: client.get_uuid().unwrap_or_default(), + msg: msg, + }); + Ok(()) } diff --git a/src/server.rs b/src/server.rs index 5244dfb..1580dad 100644 --- a/src/server.rs +++ b/src/server.rs @@ -178,13 +178,10 @@ impl Server { loop { let req = client.read()?; if let Some(r) = &req { - for p in self.plugins.lock().unwrap().iter_mut() { - p.send(LoaderMessage::Request { - user_id: client.get_uuid().unwrap_or_default(), - msg: r.clone(), - }); - } - + self.send_plugin_message(&LoaderMessage::Request { + user_id: client.get_uuid().unwrap_or_default(), + msg: r.clone(), + }); self.wrap_err(&client, self.call_request(r, &client))?; } } @@ -206,4 +203,10 @@ impl Server { res } + + pub fn send_plugin_message(&self, msg: &LoaderMessage) { + for p in self.plugins.lock().unwrap().iter_mut() { + p.send(msg); + } + } }